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

Unified Diff: cc/playback/discardable_image_map.cc

Issue 2523673004: [NOT FOR COMMIT] Fully replace SkCanvas uses.
Patch Set: Support Android build. Created 4 years 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
« no previous file with comments | « cc/playback/discardable_image_map.h ('k') | cc/playback/discardable_image_map_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/playback/discardable_image_map.cc
diff --git a/cc/playback/discardable_image_map.cc b/cc/playback/discardable_image_map.cc
index e4ae644e227528982399d5d61232ff5c21062904..919071584037b7d0cb1a37108f93996d44f13647 100644
--- a/cc/playback/discardable_image_map.cc
+++ b/cc/playback/discardable_image_map.cc
@@ -13,7 +13,9 @@
#include "base/memory/ptr_util.h"
#include "cc/base/math_util.h"
#include "cc/playback/display_item_list.h"
-#include "third_party/skia/include/utils/SkNWayCanvas.h"
+#include "skia/ext/cdl_no_draw_canvas.h"
+#include "skia/ext/cdl_paint.h"
+#include "third_party/skia/include/core/SkCanvas.h"
#include "ui/gfx/geometry/rect_conversions.h"
#include "ui/gfx/skia_util.h"
@@ -56,30 +58,30 @@ namespace {
// We're using an NWay canvas with no added canvases, so in effect
// non-overridden functions are no-ops.
-class DiscardableImagesMetadataCanvas : public SkNWayCanvas {
+class DiscardableImagesMetadataCanvas : public CdlNoDrawCanvas {
public:
DiscardableImagesMetadataCanvas(
int width,
int height,
std::vector<std::pair<DrawImage, gfx::Rect>>* image_set)
- : SkNWayCanvas(width, height),
+ : CdlNoDrawCanvas(width, height),
image_set_(image_set),
canvas_bounds_(SkRect::MakeIWH(width, height)),
canvas_size_(width, height) {}
protected:
- // we need to "undo" the behavior of SkNWayCanvas, which will try to forward
- // it.
- void onDrawPicture(const SkPicture* picture,
+ // we need to "undo" the behavior of CdlNoDrawCanvas, which will ignore
+ // onDrawPicture().
+ void onDrawPicture(const CdlPicture* picture,
const SkMatrix* matrix,
- const SkPaint* paint) override {
- SkCanvas::onDrawPicture(picture, matrix, paint);
+ const CdlPaint* paint) override {
+ CdlCanvas::onDrawPicture(picture, matrix, paint);
}
void onDrawImage(const SkImage* image,
SkScalar x,
SkScalar y,
- const SkPaint* paint) override {
+ const CdlPaint* paint) override {
const SkMatrix& ctm = getTotalMatrix();
AddImage(
sk_ref_sp(image), SkRect::MakeIWH(image->width(), image->height()),
@@ -90,8 +92,8 @@ class DiscardableImagesMetadataCanvas : public SkNWayCanvas {
void onDrawImageRect(const SkImage* image,
const SkRect* src,
const SkRect& dst,
- const SkPaint* paint,
- SrcRectConstraint) override {
+ const CdlPaint* paint,
+ SkCanvas::SrcRectConstraint) override {
const SkMatrix& ctm = getTotalMatrix();
SkRect src_storage;
if (!src) {
@@ -104,33 +106,43 @@ class DiscardableImagesMetadataCanvas : public SkNWayCanvas {
AddImage(sk_ref_sp(image), *src, MapRect(ctm, dst), matrix, paint);
}
- void onDrawImageNine(const SkImage* image,
- const SkIRect& center,
- const SkRect& dst,
- const SkPaint* paint) override {
- // No cc embedder issues image nine calls.
- NOTREACHED();
+#if CDL_ENABLED
+ int onSaveLayer(const SaveLayerRec& rec) override {
+ saved_paints_.push_back(*rec.fPaint);
+ return CdlNoDrawCanvas::onSaveLayer(rec);
+ }
+
+ int onSave() override {
+ saved_paints_.push_back(CdlPaint());
+ return CdlNoDrawCanvas::onSave();
}
+ void onRestore() override {
+ DCHECK_GT(saved_paints_.size(), 0u);
+ saved_paints_.pop_back();
+ CdlNoDrawCanvas::onRestore();
+ }
+#else
SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec& rec) override {
saved_paints_.push_back(*rec.fPaint);
- return SkNWayCanvas::getSaveLayerStrategy(rec);
+ return CdlNoDrawCanvas::getSaveLayerStrategy(rec);
}
void willSave() override {
saved_paints_.push_back(SkPaint());
- return SkNWayCanvas::willSave();
+ return CdlNoDrawCanvas::willSave();
}
void willRestore() override {
DCHECK_GT(saved_paints_.size(), 0u);
saved_paints_.pop_back();
- SkNWayCanvas::willRestore();
+ CdlNoDrawCanvas::willRestore();
}
+#endif
private:
bool ComputePaintBounds(const SkRect& rect,
- const SkPaint* current_paint,
+ const CdlPaint* current_paint,
SkRect* paint_bounds) {
*paint_bounds = rect;
if (current_paint) {
@@ -152,7 +164,7 @@ class DiscardableImagesMetadataCanvas : public SkNWayCanvas {
const SkRect& src_rect,
const SkRect& rect,
const SkMatrix& matrix,
- const SkPaint* paint) {
+ const CdlPaint* paint) {
if (!image->isLazyGenerated())
return;
@@ -181,7 +193,7 @@ class DiscardableImagesMetadataCanvas : public SkNWayCanvas {
std::vector<std::pair<DrawImage, gfx::Rect>>* image_set_;
const SkRect canvas_bounds_;
const gfx::Size canvas_size_;
- std::vector<SkPaint> saved_paints_;
+ std::vector<CdlPaint> saved_paints_;
};
} // namespace
@@ -190,9 +202,10 @@ DiscardableImageMap::DiscardableImageMap() {}
DiscardableImageMap::~DiscardableImageMap() {}
-std::unique_ptr<SkCanvas> DiscardableImageMap::BeginGeneratingMetadata(
+std::unique_ptr<CdlCanvas> DiscardableImageMap::BeginGeneratingMetadata(
const gfx::Size& bounds) {
DCHECK(all_images_.empty());
+ // TODO(cdl): switch to using std::unique_ptrs?
return base::MakeUnique<DiscardableImagesMetadataCanvas>(
bounds.width(), bounds.height(), &all_images_);
}
« no previous file with comments | « cc/playback/discardable_image_map.h ('k') | cc/playback/discardable_image_map_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698