Chromium Code Reviews| Index: ui/gfx/image/image_skia_operations.cc |
| diff --git a/ui/gfx/image/image_skia_operations.cc b/ui/gfx/image/image_skia_operations.cc |
| index c4bbce4ac6fa482259dd75f71423fc7e8a427470..97da1bf5a7320d0a14f9634a10f4ae40396c20e9 100644 |
| --- a/ui/gfx/image/image_skia_operations.cc |
| +++ b/ui/gfx/image/image_skia_operations.cc |
| @@ -10,6 +10,8 @@ |
| #include "skia/ext/platform_canvas.h" |
| #include "ui/base/layout.h" |
| #include "ui/base/ui_base_switches.h" |
| +#include "ui/gfx/canvas.h" |
| +#include "ui/gfx/image/canvas_image_source.h" |
| #include "ui/gfx/image/image_skia.h" |
| #include "ui/gfx/image/image_skia_rep.h" |
| #include "ui/gfx/image/image_skia_source.h" |
| @@ -89,6 +91,33 @@ class BlendingImageSource : public gfx::ImageSkiaSource { |
| DISALLOW_COPY_AND_ASSIGN(BlendingImageSource); |
| }; |
| +class SuperimposedImageSource : public gfx::CanvasImageSource { |
| + public: |
| + SuperimposedImageSource(const gfx::ImageSkia& first, |
| + const gfx::ImageSkia& second) |
| + : gfx::CanvasImageSource(first.size(), false /* is opaque */), |
| + first_(first), |
| + second_(second) { |
| + } |
| + |
| + virtual ~SuperimposedImageSource() {} |
| + |
| + // gfx::CanvasImageSource override. |
| + virtual void Draw(gfx::Canvas* canvas) OVERRIDE { |
| + canvas->DrawImageInt(first_, 0, 0, SkPaint()); |
|
Jeffrey Yasskin
2012/08/09 21:39:04
There's a DrawImage overload that you don't have t
tbarzic
2012/08/10 06:24:08
Done.
|
| + canvas->DrawImageInt(second_, |
| + (first_.width() - second_.width()) / 2, |
| + (first_.height() - second_.height()) / 2, |
| + SkPaint()); |
| + } |
| + |
| + private: |
| + const gfx::ImageSkia first_; |
| + const gfx::ImageSkia second_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(SuperimposedImageSource); |
| +}; |
| + |
| class MaskedImageSource : public gfx::ImageSkiaSource { |
| public: |
| MaskedImageSource(const ImageSkia& rgb, const ImageSkia& alpha) |
| @@ -322,6 +351,13 @@ ImageSkia ImageSkiaOperations::CreateBlendedImage(const ImageSkia& first, |
| } |
| // static |
| +ImageSkia ImageSkiaOperations::CreateSuperimposedImage( |
| + const ImageSkia& first, |
| + const ImageSkia& second) { |
| + return ImageSkia(new SuperimposedImageSource(first, second), first.size()); |
| +} |
| + |
| +// static |
| ImageSkia ImageSkiaOperations::CreateMaskedImage(const ImageSkia& rgb, |
| const ImageSkia& alpha) { |
| return ImageSkia(new MaskedImageSource(rgb, alpha), rgb.size()); |