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

Unified Diff: ui/views/controls/image_view.cc

Issue 1214693005: Introduce some util code for drawing vector assets. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sadrul review Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/controls/image_view.h ('k') | ui/views/controls/throbber.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..5e55a15026eb0a0dd837b40054e354c491ab66d3 100644
--- a/ui/views/controls/image_view.cc
+++ b/ui/views/controls/image_view.cc
@@ -31,6 +31,8 @@ const char ImageView::kViewClassName[] = "ImageView";
ImageView::ImageView()
: image_size_set_(false),
+ vector_id_(gfx::VectorIconId::VECTOR_ICON_NONE),
+ vector_color_(SK_ColorGREEN),
sadrul 2015/07/07 21:45:04 Hm, are you sure this is the right color? ;)
Evan Stade 2015/07/07 22:30:31 that's the color I chose for "not set", we should
horiz_alignment_(CENTER),
vert_alignment_(CENTER),
interactive_(true),
@@ -67,19 +69,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 +100,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 +163,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 +243,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
« no previous file with comments | « ui/views/controls/image_view.h ('k') | ui/views/controls/throbber.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698