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

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: . Created 5 years, 6 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
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..efa1da4933c55d664aa8ff2e8279e9662e88d26c 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::VECTOR_ICON_NONE),
horiz_alignment_(CENTER),
vert_alignment_(CENTER),
interactive_(true),
@@ -67,6 +68,11 @@ const gfx::ImageSkia& ImageView::GetImage() {
return image_;
}
+void ImageView::SetVectorIcon(gfx::VectorIconId id, SkColor color) {
+ vector_id_ = id;
+ vector_color_ = color;
+}
+
void ImageView::SetImageSize(const gfx::Size& image_size) {
image_size_set_ = true;
image_size_ = image_size;
@@ -161,6 +167,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 +247,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::VECTOR_ICON_NONE)
+ return;
+
+ gfx::Vector2d origin = ComputeImageOrigin(image_size_) - gfx::Point();
+ canvas->Translate(origin);
+ gfx::PaintVectorIcon(canvas, vector_id_, image_size_.width(), vector_color_);
sky 2015/07/01 16:19:52 Seems like you should DCHECK on image_size_.
Evan Stade 2015/07/01 21:52:59 Done.
+}
+
} // namespace views

Powered by Google App Engine
This is Rietveld 408576698