Index: trunk/src/ui/gfx/image/image_skia_operations.cc |
=================================================================== |
--- trunk/src/ui/gfx/image/image_skia_operations.cc (revision 224498) |
+++ trunk/src/ui/gfx/image/image_skia_operations.cc (working copy) |
@@ -7,6 +7,7 @@ |
#include "base/command_line.h" |
#include "base/logging.h" |
#include "skia/ext/image_operations.h" |
+#include "ui/base/layout.h" |
#include "ui/gfx/canvas.h" |
#include "ui/gfx/image/canvas_image_source.h" |
#include "ui/gfx/image/image_skia.h" |
@@ -36,13 +37,14 @@ |
// Returns an image rep for the ImageSkiaSource to return to visually indicate |
// an error. |
-ImageSkiaRep GetErrorImageRep(float scale, const gfx::Size& pixel_size) { |
+ImageSkiaRep GetErrorImageRep(ui::ScaleFactor scale_factor, |
+ const gfx::Size& pixel_size) { |
SkBitmap bitmap; |
bitmap.setConfig( |
SkBitmap::kARGB_8888_Config, pixel_size.width(), pixel_size.height()); |
bitmap.allocPixels(); |
bitmap.eraseColor(SK_ColorRED); |
- return gfx::ImageSkiaRep(bitmap, scale); |
+ return gfx::ImageSkiaRep(bitmap, scale_factor); |
} |
// A base image source class that creates an image from two source images. |
@@ -60,25 +62,27 @@ |
} |
// gfx::ImageSkiaSource overrides: |
- virtual ImageSkiaRep GetImageForScale(float scale) OVERRIDE { |
- ImageSkiaRep first_rep = first_.GetRepresentation(scale); |
- ImageSkiaRep second_rep = second_.GetRepresentation(scale); |
+ virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { |
+ ImageSkiaRep first_rep = first_.GetRepresentation(scale_factor); |
+ ImageSkiaRep second_rep = second_.GetRepresentation(scale_factor); |
if (first_rep.pixel_size() != second_rep.pixel_size()) { |
- DCHECK_NE(first_rep.scale(), second_rep.scale()); |
- if (first_rep.scale() == second_rep.scale()) { |
+ DCHECK_NE(first_rep.scale_factor(), second_rep.scale_factor()); |
+ if (first_rep.scale_factor() == second_rep.scale_factor()) { |
LOG(ERROR) << "ImageSkiaRep size mismatch in " << source_name_; |
- return GetErrorImageRep(first_rep.scale(),first_rep.pixel_size()); |
+ return GetErrorImageRep(first_rep.scale_factor(), |
+ first_rep.pixel_size()); |
} |
- first_rep = first_.GetRepresentation(1.0f); |
- second_rep = second_.GetRepresentation(1.0f); |
+ first_rep = first_.GetRepresentation(ui::SCALE_FACTOR_100P); |
+ second_rep = second_.GetRepresentation(ui::SCALE_FACTOR_100P); |
DCHECK_EQ(first_rep.pixel_width(), second_rep.pixel_width()); |
DCHECK_EQ(first_rep.pixel_height(), second_rep.pixel_height()); |
if (first_rep.pixel_size() != second_rep.pixel_size()) { |
LOG(ERROR) << "ImageSkiaRep size mismatch in " << source_name_; |
- return GetErrorImageRep(first_rep.scale(), first_rep.pixel_size()); |
+ return GetErrorImageRep(first_rep.scale_factor(), |
+ first_rep.pixel_size()); |
} |
} else { |
- DCHECK_EQ(first_rep.scale(), second_rep.scale()); |
+ DCHECK_EQ(first_rep.scale_factor(), second_rep.scale_factor()); |
} |
return CreateImageSkiaRep(first_rep, second_rep); |
} |
@@ -117,7 +121,7 @@ |
const ImageSkiaRep& second_rep) const OVERRIDE { |
SkBitmap blended = SkBitmapOperations::CreateBlendedBitmap( |
first_rep.sk_bitmap(), second_rep.sk_bitmap(), alpha_); |
- return ImageSkiaRep(blended, first_rep.scale()); |
+ return ImageSkiaRep(blended, first_rep.scale_factor()); |
} |
private: |
@@ -163,8 +167,8 @@ |
private: |
// gfx::ImageSkiaSource overrides: |
- virtual ImageSkiaRep GetImageForScale(float scale) OVERRIDE { |
- ImageSkiaRep image_rep = image_.GetRepresentation(scale); |
+ virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { |
+ ImageSkiaRep image_rep = image_.GetRepresentation(scale_factor); |
SkBitmap alpha; |
alpha.setConfig(SkBitmap::kARGB_8888_Config, |
image_rep.pixel_width(), |
@@ -173,7 +177,7 @@ |
alpha.eraseColor(SkColorSetARGB(alpha_ * 255, 0, 0, 0)); |
return ImageSkiaRep( |
SkBitmapOperations::CreateMaskedBitmap(image_rep.sk_bitmap(), alpha), |
- image_rep.scale()); |
+ image_rep.scale_factor()); |
} |
ImageSkia image_; |
@@ -197,7 +201,7 @@ |
const ImageSkiaRep& second_rep) const OVERRIDE { |
return ImageSkiaRep(SkBitmapOperations::CreateMaskedBitmap( |
first_rep.sk_bitmap(), second_rep.sk_bitmap()), |
- first_rep.scale()); |
+ first_rep.scale_factor()); |
} |
private: |
@@ -220,15 +224,16 @@ |
} |
// gfx::ImageSkiaSource overrides: |
- virtual ImageSkiaRep GetImageForScale(float scale) OVERRIDE { |
- ImageSkiaRep source_rep = source_.GetRepresentation(scale); |
+ virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { |
+ ImageSkiaRep source_rep = source_.GetRepresentation(scale_factor); |
+ float scale = ui::GetScaleFactorScale(source_rep.scale_factor()); |
gfx::Rect bounds = DIPToPixelBounds(gfx::Rect(src_x_, src_y_, dst_w_, |
- dst_h_), source_rep.scale()); |
+ dst_h_), scale); |
return ImageSkiaRep( |
SkBitmapOperations::CreateTiledBitmap( |
source_rep.sk_bitmap(), |
bounds.x(), bounds.y(), bounds.width(), bounds.height()), |
- source_rep.scale()); |
+ source_rep.scale_factor()); |
} |
private: |
@@ -253,11 +258,11 @@ |
} |
// gfx::ImageSkiaSource overrides: |
- virtual ImageSkiaRep GetImageForScale(float scale) OVERRIDE { |
- ImageSkiaRep image_rep = image_.GetRepresentation(scale); |
+ virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { |
+ ImageSkiaRep image_rep = image_.GetRepresentation(scale_factor); |
return gfx::ImageSkiaRep( |
SkBitmapOperations::CreateHSLShiftedBitmap(image_rep.sk_bitmap(), |
- hsl_shift_), image_rep.scale()); |
+ hsl_shift_), image_rep.scale_factor()); |
} |
private: |
@@ -283,17 +288,17 @@ |
} |
// gfx::ImageSkiaSource overrides: |
- virtual ImageSkiaRep GetImageForScale(float scale) OVERRIDE { |
- ImageSkiaRep image_rep = image_.GetRepresentation(scale); |
- ImageSkiaRep mask_rep = mask_.GetRepresentation(scale); |
- if (image_rep.scale() != mask_rep.scale()) { |
- image_rep = image_.GetRepresentation(1.0f); |
- mask_rep = mask_.GetRepresentation(1.0f); |
+ 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_, |
image_rep.sk_bitmap(), mask_rep.sk_bitmap()), |
- image_rep.scale()); |
+ image_rep.scale_factor()); |
} |
private: |
@@ -318,15 +323,16 @@ |
} |
// gfx::ImageSkiaSource overrides: |
- virtual ImageSkiaRep GetImageForScale(float scale) OVERRIDE { |
- ImageSkiaRep image_rep = image_.GetRepresentation(scale); |
+ virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { |
+ ImageSkiaRep image_rep = image_.GetRepresentation(scale_factor); |
+ float scale_to_pixel = ui::GetScaleFactorScale(image_rep.scale_factor()); |
SkIRect subset_bounds_in_pixel = RectToSkIRect( |
- DIPToPixelBounds(subset_bounds_, image_rep.scale())); |
+ DIPToPixelBounds(subset_bounds_, scale_to_pixel)); |
SkBitmap dst; |
bool success = image_rep.sk_bitmap().extractSubset(&dst, |
subset_bounds_in_pixel); |
DCHECK(success); |
- return gfx::ImageSkiaRep(dst, image_rep.scale()); |
+ return gfx::ImageSkiaRep(dst, image_rep.scale_factor()); |
} |
private: |
@@ -350,19 +356,20 @@ |
virtual ~ResizeSource() {} |
// gfx::ImageSkiaSource overrides: |
- virtual ImageSkiaRep GetImageForScale(float scale) OVERRIDE { |
- const ImageSkiaRep& image_rep = source_.GetRepresentation(scale); |
+ virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { |
+ const ImageSkiaRep& image_rep = source_.GetRepresentation(scale_factor); |
if (image_rep.GetWidth() == target_dip_size_.width() && |
image_rep.GetHeight() == target_dip_size_.height()) |
return image_rep; |
+ const float scale = ui::GetScaleFactorScale(scale_factor); |
const Size target_pixel_size = DIPToPixelSize(target_dip_size_, scale); |
const SkBitmap resized = skia::ImageOperations::Resize( |
image_rep.sk_bitmap(), |
resize_method_, |
target_pixel_size.width(), |
target_pixel_size.height()); |
- return ImageSkiaRep(resized, scale); |
+ return ImageSkiaRep(resized, scale_factor); |
} |
private: |
@@ -385,9 +392,10 @@ |
virtual ~DropShadowSource() {} |
// gfx::ImageSkiaSource overrides: |
- virtual ImageSkiaRep GetImageForScale(float scale) OVERRIDE { |
- const ImageSkiaRep& image_rep = source_.GetRepresentation(scale); |
+ virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { |
+ const ImageSkiaRep& image_rep = source_.GetRepresentation(scale_factor); |
+ const float scale = image_rep.GetScale(); |
ShadowValues shadows_in_pixel; |
for (size_t i = 0; i < shaodws_in_dip_.size(); ++i) |
shadows_in_pixel.push_back(shaodws_in_dip_[i].Scale(scale)); |
@@ -395,7 +403,7 @@ |
const SkBitmap shadow_bitmap = SkBitmapOperations::CreateDropShadow( |
image_rep.sk_bitmap(), |
shadows_in_pixel); |
- return ImageSkiaRep(shadow_bitmap, image_rep.scale()); |
+ return ImageSkiaRep(shadow_bitmap, image_rep.scale_factor()); |
} |
private: |
@@ -417,11 +425,11 @@ |
virtual ~RotatedSource() {} |
// gfx::ImageSkiaSource overrides: |
- virtual ImageSkiaRep GetImageForScale(float scale) OVERRIDE { |
- const ImageSkiaRep& image_rep = source_.GetRepresentation(scale); |
+ virtual ImageSkiaRep GetImageForScale(ui::ScaleFactor scale_factor) OVERRIDE { |
+ const ImageSkiaRep& image_rep = source_.GetRepresentation(scale_factor); |
const SkBitmap rotated_bitmap = |
SkBitmapOperations::Rotate(image_rep.sk_bitmap(), rotation_); |
- return ImageSkiaRep(rotated_bitmap, image_rep.scale()); |
+ return ImageSkiaRep(rotated_bitmap, image_rep.scale_factor()); |
} |
private: |