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

Unified Diff: cc/playback/raster_source.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/raster_source.h ('k') | cc/playback/raster_source_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/playback/raster_source.cc
diff --git a/cc/playback/raster_source.cc b/cc/playback/raster_source.cc
index 9e5e946fb777e24a834a56eaa1a34216ee8cc673..67b79d5be7bc570dabf62c16f86e8d06de4c6797 100644
--- a/cc/playback/raster_source.cc
+++ b/cc/playback/raster_source.cc
@@ -14,9 +14,9 @@
#include "cc/playback/image_hijack_canvas.h"
#include "cc/playback/skip_image_canvas.h"
#include "skia/ext/analysis_canvas.h"
-#include "third_party/skia/include/core/SkCanvas.h"
+#include "skia/ext/cdl_canvas.h"
#include "third_party/skia/include/core/SkClipStack.h"
-#include "third_party/skia/include/core/SkPictureRecorder.h"
+#include "skia/ext/cdl_picture_recorder.h"
#include "ui/gfx/geometry/rect_conversions.h"
namespace cc {
@@ -85,37 +85,31 @@ void RasterSource::PlaybackToCanvas(SkCanvas* raster_canvas,
void RasterSource::PlaybackToCanvas(SkCanvas* raster_canvas,
const PlaybackSettings& settings) const {
- if (!settings.playback_to_shared_canvas)
- PrepareForPlaybackToCanvas(raster_canvas);
+ std::unique_ptr<CdlCanvas> playback_canvas;
if (settings.skip_images) {
- SkipImageCanvas canvas(raster_canvas);
- RasterCommon(&canvas, nullptr);
+ // TODO(cdl): SkipImageCanvas
+ // SkipImageCanvas canvas(raster_canvas);
+ // RasterCommon(&canvas, nullptr);
+ playback_canvas.reset(new CdlPassThroughCanvas(raster_canvas));
} else if (settings.use_image_hijack_canvas) {
- const SkImageInfo& info = raster_canvas->imageInfo();
-
- ImageHijackCanvas canvas(info.width(), info.height(), image_decode_cache_);
- // Before adding the canvas, make sure that the ImageHijackCanvas is aware
- // of the current transform and clip, which may affect the clip bounds.
- // Since we query the clip bounds of the current canvas to get the list of
- // draw commands to process, this is important to produce correct content.
- SkIRect raster_bounds;
- raster_canvas->getClipDeviceBounds(&raster_bounds);
- canvas.clipRect(SkRect::MakeFromIRect(raster_bounds));
- canvas.setMatrix(raster_canvas->getTotalMatrix());
- canvas.addCanvas(raster_canvas);
-
- RasterCommon(&canvas, nullptr);
+ playback_canvas.reset(
+ new ImageHijackCanvas(raster_canvas, image_decode_cache_));
} else {
- RasterCommon(raster_canvas, nullptr);
+ playback_canvas.reset(new CdlPassThroughCanvas(raster_canvas));
}
+
+ if (!settings.playback_to_shared_canvas)
+ PrepareForPlaybackToCanvas(playback_canvas.get());
+
+ RasterCommon(playback_canvas.get(), nullptr);
}
-void RasterSource::PrepareForPlaybackToCanvas(SkCanvas* canvas) const {
+void RasterSource::PrepareForPlaybackToCanvas(CdlCanvas* canvas) const {
// TODO(hendrikw): See if we can split this up into separate functions.
if (canvas->getClipStack()->quickContains(
- SkRect::MakeFromIRect(canvas->imageInfo().bounds()))) {
+ SkRect::MakeFromIRect(GetSkCanvas(canvas)->imageInfo().bounds()))) {
canvas->discard();
}
@@ -189,7 +183,7 @@ void RasterSource::PrepareForPlaybackToCanvas(SkCanvas* canvas) const {
canvas->restore();
}
-void RasterSource::RasterCommon(SkCanvas* canvas,
+void RasterSource::RasterCommon(CdlCanvas* canvas,
SkPicture::AbortCallback* callback) const {
DCHECK(display_list_.get());
int repeat_count = std::max(1, slow_down_raster_scale_factor_for_debug_);
@@ -197,11 +191,11 @@ void RasterSource::RasterCommon(SkCanvas* canvas,
display_list_->Raster(canvas, callback);
}
-sk_sp<SkPicture> RasterSource::GetFlattenedPicture() {
+sk_sp<CdlPicture> RasterSource::GetFlattenedPicture() {
TRACE_EVENT0("cc", "RasterSource::GetFlattenedPicture");
- SkPictureRecorder recorder;
- SkCanvas* canvas = recorder.beginRecording(size_.width(), size_.height());
+ CdlPictureRecorder recorder;
+ CdlCanvas* canvas = recorder.beginRecording(size_.width(), size_.height());
if (!size_.IsEmpty()) {
PrepareForPlaybackToCanvas(canvas);
RasterCommon(canvas, nullptr);
@@ -226,10 +220,11 @@ bool RasterSource::PerformSolidColorAnalysis(const gfx::Rect& content_rect,
content_rect, 1.f / raster_scales.width(), 1.f / raster_scales.height());
layer_rect.Intersect(gfx::Rect(size_));
- skia::AnalysisCanvas canvas(layer_rect.width(), layer_rect.height());
+ skia::AnalysisCanvas sk_canvas(layer_rect.width(), layer_rect.height());
+ CdlPassThroughCanvas canvas(&sk_canvas);
canvas.translate(-layer_rect.x(), -layer_rect.y());
- RasterCommon(&canvas, &canvas);
- return canvas.GetColorIfSolid(color);
+ RasterCommon(&canvas, &sk_canvas);
+ return sk_canvas.GetColorIfSolid(color);
}
void RasterSource::GetDiscardableImagesInRect(
« no previous file with comments | « cc/playback/raster_source.h ('k') | cc/playback/raster_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698