Chromium Code Reviews| Index: ui/views/controls/image_view.cc |
| diff --git a/ui/views/controls/image_view.cc b/ui/views/controls/image_view.cc |
| index 4025713b6ab6cdd6d3ee2faed051ea11fba74483..21326896b33fad343c6064560fe6e4497d143e42 100644 |
| --- a/ui/views/controls/image_view.cc |
| +++ b/ui/views/controls/image_view.cc |
| @@ -31,6 +31,7 @@ const char ImageView::kViewClassName[] = "ImageView"; |
| ImageView::ImageView() |
| : image_size_set_(false), |
| + vector_id_(gfx::VectorIconId::VECTOR_ICON_NONE), |
|
sadrul
2015/07/07 04:18:11
Initialize color too?
Evan Stade
2015/07/07 17:55:04
Done.
|
| horiz_alignment_(CENTER), |
| vert_alignment_(CENTER), |
| interactive_(true), |
| @@ -67,19 +68,20 @@ const gfx::ImageSkia& ImageView::GetImage() { |
| return image_; |
| } |
| +void ImageView::SetVectorIcon(gfx::VectorIconId id, |
| + SkColor color, |
| + const gfx::Size& image_size) { |
| + SetImageSize(image_size); |
| + vector_id_ = id; |
| + vector_color_ = color; |
| +} |
| + |
| void ImageView::SetImageSize(const gfx::Size& image_size) { |
| image_size_set_ = true; |
| image_size_ = image_size; |
| PreferredSizeChanged(); |
| } |
| -bool ImageView::GetImageSize(gfx::Size* image_size) const { |
| - DCHECK(image_size); |
| - if (image_size_set_) |
| - *image_size = image_size_; |
| - return image_size_set_; |
| -} |
| - |
| gfx::Rect ImageView::GetImageBounds() const { |
| gfx::Size image_size(image_size_set_ ? |
| image_size_ : gfx::Size(image_.width(), image_.height())); |
| @@ -97,8 +99,7 @@ void ImageView::SetFocusPainter(scoped_ptr<Painter> focus_painter) { |
| gfx::Size ImageView::GetPreferredSize() const { |
| gfx::Insets insets = GetInsets(); |
| if (image_size_set_) { |
| - gfx::Size image_size; |
| - GetImageSize(&image_size); |
| + gfx::Size image_size = image_size_; |
| image_size.Enlarge(insets.width(), insets.height()); |
| return image_size; |
| } |
| @@ -161,6 +162,7 @@ void ImageView::OnBlur() { |
| void ImageView::OnPaint(gfx::Canvas* canvas) { |
| View::OnPaint(canvas); |
| OnPaintImage(canvas); |
| + OnPaintVectorIcon(canvas); |
| Painter::PaintFocusPainter(this, canvas, focus_painter_.get()); |
| } |
| @@ -240,4 +242,13 @@ void ImageView::OnPaintImage(gfx::Canvas* canvas) { |
| last_painted_bitmap_pixels_ = GetBitmapPixels(image_, last_paint_scale_); |
| } |
| +void ImageView::OnPaintVectorIcon(gfx::Canvas* canvas) { |
| + if (vector_id_ == gfx::VectorIconId::VECTOR_ICON_NONE) |
| + return; |
| + |
| + DCHECK(image_size_set_); |
| + canvas->Translate(ComputeImageOrigin(image_size_).OffsetFromOrigin()); |
| + gfx::PaintVectorIcon(canvas, vector_id_, image_size_.width(), vector_color_); |
| +} |
| + |
| } // namespace views |