Index: ui/views/painter.cc |
diff --git a/ui/views/painter.cc b/ui/views/painter.cc |
index ce84a58e8dbaec763a1ff5f196a19f17211be752..9adff90257332b6f2c9e919cfb52b78a5ff141b9 100644 |
--- a/ui/views/painter.cc |
+++ b/ui/views/painter.cc |
@@ -109,6 +109,9 @@ class VIEWS_EXPORT ImagePainter : public Painter { |
// Painter: |
virtual gfx::Size GetMinimumSize() const OVERRIDE; |
virtual void Paint(gfx::Canvas* canvas, const gfx::Size& size) OVERRIDE; |
+ virtual void PaintWithSkPaint(gfx::Canvas* canvas, |
+ const gfx::Size& size, |
+ const SkPaint& paint) OVERRIDE; |
private: |
// Stretches the given image over the specified canvas area. |
@@ -117,7 +120,8 @@ class VIEWS_EXPORT ImagePainter : public Painter { |
int x, |
int y, |
int w, |
- int h); |
+ int h, |
+ const SkPaint& paint); |
// Images are numbered as depicted below. |
// ____________________ |
@@ -169,6 +173,12 @@ gfx::Size ImagePainter::GetMinimumSize() const { |
} |
void ImagePainter::Paint(gfx::Canvas* canvas, const gfx::Size& size) { |
+ PaintWithSkPaint(canvas, size, SkPaint()); |
+} |
+ |
+void ImagePainter::PaintWithSkPaint(gfx::Canvas* canvas, |
+ const gfx::Size& size, |
+ const SkPaint& paint) { |
if (IsEmpty()) |
return; |
@@ -195,15 +205,15 @@ void ImagePainter::Paint(gfx::Canvas* canvas, const gfx::Size& size) { |
int i4y = std::min(std::min(i0h, i1h), i2h); |
int i4h = h - i4y - std::min(std::min(i6h, i7h), i8h); |
if (!images_[4].isNull()) |
- Fill(canvas, images_[4], i4x, i4y, i4w, i4h); |
- canvas->DrawImageInt(images_[0], 0, 0); |
- Fill(canvas, images_[1], i0w, 0, w - i0w - i2w, i1h); |
- canvas->DrawImageInt(images_[2], w - i2w, 0); |
- Fill(canvas, images_[3], 0, i0h, i3w, h - i0h - i6h); |
- Fill(canvas, images_[5], w - i5w, i2h, i5w, h - i2h - i8h); |
- canvas->DrawImageInt(images_[6], 0, h - i6h); |
- Fill(canvas, images_[7], i6w, h - i7h, w - i6w - i8w, i7h); |
- canvas->DrawImageInt(images_[8], w - i8w, h - i8h); |
+ Fill(canvas, images_[4], i4x, i4y, i4w, i4h, paint); |
+ canvas->DrawImageInt(images_[0], 0, 0, paint); |
+ Fill(canvas, images_[1], i0w, 0, w - i0w - i2w, i1h, paint); |
+ canvas->DrawImageInt(images_[2], w - i2w, 0, paint); |
+ Fill(canvas, images_[3], 0, i0h, i3w, h - i0h - i6h, paint); |
+ Fill(canvas, images_[5], w - i5w, i2h, i5w, h - i2h - i8h, paint); |
+ canvas->DrawImageInt(images_[6], 0, h - i6h, paint); |
+ Fill(canvas, images_[7], i6w, h - i7h, w - i6w - i8w, i7h, paint); |
+ canvas->DrawImageInt(images_[8], w - i8w, h - i8h, paint); |
} |
// static |
@@ -212,8 +222,9 @@ void ImagePainter::Fill(gfx::Canvas* c, |
int x, |
int y, |
int w, |
- int h) { |
- c->DrawImageInt(i, 0, 0, i.width(), i.height(), x, y, w, h, false); |
+ int h, |
+ const SkPaint& paint) { |
+ c->DrawImageInt(i, 0, 0, i.width(), i.height(), x, y, w, h, false, paint); |
} |
} // namespace |
@@ -274,6 +285,13 @@ Painter* Painter::CreateImageGridPainter(const int image_ids[]) { |
return new ImagePainter(image_ids); |
} |
+void Painter::PaintWithSkPaint(gfx::Canvas* canvas, |
+ const gfx::Size& size, |
+ const SkPaint& paint) { |
+ // Ignore SkPaint options by default, applicable painters should add support. |
+ Paint(canvas, size); |
+} |
+ |
// HorizontalPainter ---------------------------------------------------------- |