diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-24 04:28:31 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-24 04:28:31 +0000 |
commit | 0d7a7fc5a059f5d03cf18b9d280fb2a4e50a1a2c (patch) | |
tree | edf35c0c11a6cdbee9ad256d32545805fa82a36c /ui | |
parent | c103435793736f309325a247c098d5781f9d8ac3 (diff) | |
download | chromium_src-0d7a7fc5a059f5d03cf18b9d280fb2a4e50a1a2c.zip chromium_src-0d7a7fc5a059f5d03cf18b9d280fb2a4e50a1a2c.tar.gz chromium_src-0d7a7fc5a059f5d03cf18b9d280fb2a4e50a1a2c.tar.bz2 |
Don't use BinaryImageSource for ButtonImageSource
CreateButtonBackground can handle images with different size.
Just make sure to use the same scale factor.
Remove unnecessary size check. (It's handled in BinaryImageSource and should be indicated by red box)
BUG=171725
TEST=manualy tested (see bug)
Review URL: https://chromiumcodereview.appspot.com/12040057
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@178507 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/gfx/image/image_skia_operations.cc | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/ui/gfx/image/image_skia_operations.cc b/ui/gfx/image/image_skia_operations.cc index 94289c45..4b5612e 100644 --- a/ui/gfx/image/image_skia_operations.cc +++ b/ui/gfx/image/image_skia_operations.cc @@ -260,30 +260,37 @@ class HSLImageSource : public gfx::ImageSkiaSource { // ImageSkiaSource which uses SkBitmapOperations::CreateButtonBackground // to generate image reps for the target image. -class ButtonImageSource: public BinaryImageSource { +class ButtonImageSource: public gfx::ImageSkiaSource { public: ButtonImageSource(SkColor color, const ImageSkia& image, const ImageSkia& mask) - : BinaryImageSource(image, mask, "ButtonImageSource"), - color_(color) { + : color_(color), + image_(image), + mask_(mask) { } virtual ~ButtonImageSource() { } - // BinaryImageSource overrides: - virtual ImageSkiaRep CreateImageSkiaRep( - const ImageSkiaRep& first_rep, - const ImageSkiaRep& second_rep) const OVERRIDE { - return ImageSkiaRep( + // gfx::ImageSkiaSource overrides: + virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { + ImageSkiaRep image_rep = image_.GetRepresentation(scale_factor); + ImageSkiaRep mask_rep = mask_.GetRepresentation(scale_factor); + if (image_rep.scale_factor() != mask_rep.scale_factor()) { + image_rep = image_.GetRepresentation(ui::SCALE_FACTOR_100P); + mask_rep = mask_.GetRepresentation(ui::SCALE_FACTOR_100P); + } + return gfx::ImageSkiaRep( SkBitmapOperations::CreateButtonBackground(color_, - first_rep.sk_bitmap(), second_rep.sk_bitmap()), - first_rep.scale_factor()); + image_rep.sk_bitmap(), mask_rep.sk_bitmap()), + image_rep.scale_factor()); } private: const SkColor color_; + const ImageSkia image_; + const ImageSkia mask_; DISALLOW_COPY_AND_ASSIGN(ButtonImageSource); }; @@ -426,7 +433,7 @@ class RotatedSource : public ImageSkiaSource { ImageSkia ImageSkiaOperations::CreateBlendedImage(const ImageSkia& first, const ImageSkia& second, double alpha) { - if (first.isNull() || second.isNull() || first.size() != second.size()) + if (first.isNull() || second.isNull()) return ImageSkia(); return ImageSkia(new BlendingImageSource(first, second, alpha), first.size()); @@ -454,7 +461,7 @@ ImageSkia ImageSkiaOperations::CreateTransparentImage(const ImageSkia& image, // static ImageSkia ImageSkiaOperations::CreateMaskedImage(const ImageSkia& rgb, const ImageSkia& alpha) { - if (rgb.isNull() || alpha.isNull() || rgb.size() != alpha.size()) + if (rgb.isNull() || alpha.isNull()) return ImageSkia(); return ImageSkia(new MaskedImageSource(rgb, alpha), rgb.size()); @@ -485,7 +492,7 @@ ImageSkia ImageSkiaOperations::CreateHSLShiftedImage( ImageSkia ImageSkiaOperations::CreateButtonBackground(SkColor color, const ImageSkia& image, const ImageSkia& mask) { - if (image.isNull() || mask.isNull() || image.size() != mask.size()) + if (image.isNull() || mask.isNull()) return ImageSkia(); return ImageSkia(new ButtonImageSource(color, image, mask), mask.size()); |