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

Unified Diff: cc/paint/skia_paint_canvas.cc

Issue 2904143002: color: Perform color transform in ImageBufferSurface (Closed)
Patch Set: Created 3 years, 7 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: cc/paint/skia_paint_canvas.cc
diff --git a/cc/paint/skia_paint_canvas.cc b/cc/paint/skia_paint_canvas.cc
index 8c69d875fb8cdbcfe809ea8ec9b97327b4ae52af..a01e4eb008f1c2c598c67f70397d6224fc66259d 100644
--- a/cc/paint/skia_paint_canvas.cc
+++ b/cc/paint/skia_paint_canvas.cc
@@ -8,6 +8,7 @@
#include "cc/paint/display_item_list.h"
#include "cc/paint/paint_recorder.h"
#include "third_party/skia/include/core/SkAnnotation.h"
+#include "third_party/skia/include/core/SkColorSpaceXformCanvas.h"
#include "third_party/skia/include/core/SkMetaData.h"
#include "third_party/skia/include/utils/SkNWayCanvas.h"
@@ -22,8 +23,23 @@ SkiaPaintCanvas::SkiaPaintCanvas(const SkBitmap& bitmap,
const SkSurfaceProps& props)
: canvas_(new SkCanvas(bitmap, props)), owned_(canvas_) {}
+SkiaPaintCanvas::SkiaPaintCanvas(SkCanvas* canvas,
+ sk_sp<SkColorSpace> target_color_space)
+ : canvas_(canvas) {
+ WrapCanvasInColorSpaceXformCanvas(target_color_space);
+}
+
SkiaPaintCanvas::~SkiaPaintCanvas() = default;
+void SkiaPaintCanvas::WrapCanvasInColorSpaceXformCanvas(
+ sk_sp<SkColorSpace> target_color_space) {
+ if (target_color_space) {
+ color_space_xform_canvas_ =
+ SkCreateColorSpaceXformCanvas(canvas_, target_color_space);
+ canvas_ = color_space_xform_canvas_.get();
+ }
+}
+
SkMetaData& SkiaPaintCanvas::getMetaData() {
return canvas_->getMetaData();
}

Powered by Google App Engine
This is Rietveld 408576698