diff options
author | pkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-25 17:43:31 +0000 |
---|---|---|
committer | pkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-25 17:43:31 +0000 |
commit | b1a99303c1c3f4117ab6d754ed8895375471e9fa (patch) | |
tree | 55e1534ddd7c71af70b79207344d788f128ddb48 /ui/gfx/canvas.cc | |
parent | bc9331f46efadce419fabb15850c1a9eaf8a0932 (diff) | |
download | chromium_src-b1a99303c1c3f4117ab6d754ed8895375471e9fa.zip chromium_src-b1a99303c1c3f4117ab6d754ed8895375471e9fa.tar.gz chromium_src-b1a99303c1c3f4117ab6d754ed8895375471e9fa.tar.bz2 |
This CL adds a new object: ImageSkiaRep
The object represents an SkBitmap and the scale factor that it is painted at.
The CL also changes the ImageSkia API to use ui::ScaleFactor instead of floats.
In Chromium, having this object is useful because it makes extracting an SkBitmap from an ImageSkia object and packing it back into an ImageSkia object easier.
In particular, this makes:
float scale_factor;
SkBitmap bitmap = input_image->GetBitmapForScale(1.0f, &scale_factor);
// do some work with the bitmap
gfx::ImageSkia output_image(bitmap, scale_factor);
into
gfx::ImageSkiaRep image_rep = input_image->GetRepresentation(ui::SCALE_FACTOR_100P);
// do some work with the image_rep
gfx::ImageSkia output_image(image_rep);
R=sky
TBR=sadrul for chrome/browser/chromeos/status
Review URL: https://chromiumcodereview.appspot.com/10448070
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@143940 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/gfx/canvas.cc')
-rw-r--r-- | ui/gfx/canvas.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc index 5dbb00e..a7bc247 100644 --- a/ui/gfx/canvas.cc +++ b/ui/gfx/canvas.cc @@ -474,8 +474,12 @@ const SkBitmap& Canvas::GetBitmapToPaint(const gfx::ImageSkia& image, float scale_y = SkScalarToFloat(SkScalarAbs(m.getScaleY())) * user_additional_scale_y; - const SkBitmap& bitmap = image.GetBitmapForScale(scale_x, scale_y, - bitmap_scale_factor); + ui::ScaleFactor request_scale_factor = + ui::GetScaleFactorFromScale((scale_x + scale_y) / 2); + const gfx::ImageSkiaRep& image_rep = + image.GetRepresentation(request_scale_factor); + const SkBitmap& bitmap = image_rep.sk_bitmap(); + *bitmap_scale_factor = image_rep.GetScale(); if (!bitmap.isNull() && (scale_x < *bitmap_scale_factor || scale_y < *bitmap_scale_factor)) const_cast<SkBitmap&>(bitmap).buildMipMap(); |