Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(442)

Side by Side Diff: ui/views/controls/image_view.cc

Issue 2881183003: Add views::View::set_preferred_size, use it in a few places. (Closed)
Patch Set: auto* Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/views/controls/image_view.h ('k') | ui/views/view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/controls/image_view.h" 5 #include "ui/views/controls/image_view.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 70
71 gfx::Rect ImageView::GetImageBounds() const { 71 gfx::Rect ImageView::GetImageBounds() const {
72 gfx::Size image_size = GetImageSize(); 72 gfx::Size image_size = GetImageSize();
73 return gfx::Rect(ComputeImageOrigin(image_size), image_size); 73 return gfx::Rect(ComputeImageOrigin(image_size), image_size);
74 } 74 }
75 75
76 void ImageView::ResetImageSize() { 76 void ImageView::ResetImageSize() {
77 image_size_set_ = false; 77 image_size_set_ = false;
78 } 78 }
79 79
80 gfx::Size ImageView::GetPreferredSize() const {
81 gfx::Size size = GetImageSize();
82 size.Enlarge(GetInsets().width(), GetInsets().height());
83 return size;
84 }
85
86 bool ImageView::IsImageEqual(const gfx::ImageSkia& img) const { 80 bool ImageView::IsImageEqual(const gfx::ImageSkia& img) const {
87 // Even though we copy ImageSkia in SetImage() the backing store 81 // Even though we copy ImageSkia in SetImage() the backing store
88 // (ImageSkiaStorage) is not copied and may have changed since the last call 82 // (ImageSkiaStorage) is not copied and may have changed since the last call
89 // to SetImage(). The expectation is that SetImage() with different pixels is 83 // to SetImage(). The expectation is that SetImage() with different pixels is
90 // treated as though the image changed. For this reason we compare not only 84 // treated as though the image changed. For this reason we compare not only
91 // the backing store but also the pixels of the last image we painted. 85 // the backing store but also the pixels of the last image we painted.
92 return image_.BackedBySameObjectAs(img) && 86 return image_.BackedBySameObjectAs(img) &&
93 last_paint_scale_ != 0.0f && 87 last_paint_scale_ != 0.0f &&
94 last_painted_bitmap_pixels_ == GetBitmapPixels(img, last_paint_scale_); 88 last_painted_bitmap_pixels_ == GetBitmapPixels(img, last_paint_scale_);
95 } 89 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 167
174 bool ImageView::GetTooltipText(const gfx::Point& p, 168 bool ImageView::GetTooltipText(const gfx::Point& p,
175 base::string16* tooltip) const { 169 base::string16* tooltip) const {
176 if (tooltip_text_.empty()) 170 if (tooltip_text_.empty())
177 return false; 171 return false;
178 172
179 *tooltip = GetTooltipText(); 173 *tooltip = GetTooltipText();
180 return true; 174 return true;
181 } 175 }
182 176
177 gfx::Size ImageView::CalculatePreferredSize() const {
178 gfx::Size size = GetImageSize();
179 size.Enlarge(GetInsets().width(), GetInsets().height());
180 return size;
181 }
182
183 void ImageView::OnPaintImage(gfx::Canvas* canvas) { 183 void ImageView::OnPaintImage(gfx::Canvas* canvas) {
184 last_paint_scale_ = canvas->image_scale(); 184 last_paint_scale_ = canvas->image_scale();
185 last_painted_bitmap_pixels_ = NULL; 185 last_painted_bitmap_pixels_ = NULL;
186 186
187 if (image_.isNull()) 187 if (image_.isNull())
188 return; 188 return;
189 189
190 gfx::Rect image_bounds(GetImageBounds()); 190 gfx::Rect image_bounds(GetImageBounds());
191 if (image_bounds.IsEmpty()) 191 if (image_bounds.IsEmpty())
192 return; 192 return;
193 193
194 if (image_bounds.size() != gfx::Size(image_.width(), image_.height())) { 194 if (image_bounds.size() != gfx::Size(image_.width(), image_.height())) {
195 // Resize case 195 // Resize case
196 cc::PaintFlags flags; 196 cc::PaintFlags flags;
197 flags.setFilterQuality(kLow_SkFilterQuality); 197 flags.setFilterQuality(kLow_SkFilterQuality);
198 canvas->DrawImageInt(image_, 0, 0, image_.width(), image_.height(), 198 canvas->DrawImageInt(image_, 0, 0, image_.width(), image_.height(),
199 image_bounds.x(), image_bounds.y(), 199 image_bounds.x(), image_bounds.y(),
200 image_bounds.width(), image_bounds.height(), true, 200 image_bounds.width(), image_bounds.height(), true,
201 flags); 201 flags);
202 } else { 202 } else {
203 canvas->DrawImageInt(image_, image_bounds.x(), image_bounds.y()); 203 canvas->DrawImageInt(image_, image_bounds.x(), image_bounds.y());
204 } 204 }
205 last_painted_bitmap_pixels_ = GetBitmapPixels(image_, last_paint_scale_); 205 last_painted_bitmap_pixels_ = GetBitmapPixels(image_, last_paint_scale_);
206 } 206 }
207 207
208 } // namespace views 208 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/image_view.h ('k') | ui/views/view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698