Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1860)

Unified Diff: ui/gfx/image/image_skia.cc

Issue 10704199: Implement remaining SkBitmapOperations as ImageSkiaOperations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/gfx/image/image_skia.cc
diff --git a/ui/gfx/image/image_skia.cc b/ui/gfx/image/image_skia.cc
index 9472cda8b6be4d26c4bc42e63e0a893e4536ff34..0e8b5cd14cbac2dfd2d2793313e67e17b917913f 100644
--- a/ui/gfx/image/image_skia.cc
+++ b/ui/gfx/image/image_skia.cc
@@ -10,7 +10,9 @@
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
+#include "ui/gfx/image/image_skia_operations.h"
#include "ui/gfx/image/image_skia_source.h"
+#include "ui/gfx/rect.h"
#include "ui/gfx/size.h"
#include "ui/gfx/skia_util.h"
@@ -230,30 +232,9 @@ int ImageSkia::height() const {
}
bool ImageSkia::extractSubset(ImageSkia* dst, const SkIRect& subset) const {
- if (isNull())
- return false;
- ImageSkia image;
- ImageSkiaReps& image_reps = storage_->image_reps();
- for (ImageSkiaReps::iterator it = image_reps.begin();
- it != image_reps.end(); ++it) {
- const ImageSkiaRep& image_rep = *it;
- float dip_scale = image_rep.GetScale();
- // Rounding boundary in case of a non-integer scale factor.
- int x = static_cast<int>(subset.left() * dip_scale + 0.5);
- int y = static_cast<int>(subset.top() * dip_scale + 0.5);
- int w = static_cast<int>(subset.width() * dip_scale + 0.5);
- int h = static_cast<int>(subset.height() * dip_scale + 0.5);
- SkBitmap dst_bitmap;
- SkIRect scaled_subset = SkIRect::MakeXYWH(x, y, w, h);
- if (image_rep.sk_bitmap().extractSubset(&dst_bitmap, scaled_subset))
- image.AddRepresentation(ImageSkiaRep(dst_bitmap,
- image_rep.scale_factor()));
- }
- if (image.empty())
- return false;
-
- *dst = image;
- return true;
+ gfx::Rect rect(subset.x(), subset.y(), subset.width(), subset.height());
+ *dst = ImageSkiaOperations::ExtractSubset(*this, rect);
+ return (!dst->isNull());
}
std::vector<ImageSkiaRep> ImageSkia::image_reps() const {

Powered by Google App Engine
This is Rietveld 408576698