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

Unified Diff: cc/layers/picture_image_layer.cc

Issue 1331533002: [poc] curve-filter Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Ensure screen device profiles are matrix Created 5 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/layers/picture_image_layer.h ('k') | cc/layers/picture_image_layer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/picture_image_layer.cc
diff --git a/cc/layers/picture_image_layer.cc b/cc/layers/picture_image_layer.cc
index b5a55c237d081c1e488464418b2ed1b6eeb41cd3..4121d894bd3d5bb4759ddf4812b4375a95f18b54 100644
--- a/cc/layers/picture_image_layer.cc
+++ b/cc/layers/picture_image_layer.cc
@@ -10,8 +10,10 @@
#include "cc/playback/display_item_list_settings.h"
#include "cc/playback/drawing_display_item.h"
#include "third_party/skia/include/core/SkCanvas.h"
+#include "third_party/skia/include/core/SkColorFilter.h"
#include "third_party/skia/include/core/SkImage.h"
#include "third_party/skia/include/core/SkPictureRecorder.h"
+#include "third_party/skia/include/effects/SkColorFilterImageFilter.h"
#include "ui/gfx/skia_util.h"
namespace cc {
@@ -38,7 +40,23 @@ bool PictureImageLayer::HasDrawableContent() const {
return image_ && PictureLayer::HasDrawableContent();
}
-void PictureImageLayer::SetImage(skia::RefPtr<const SkImage> image) {
+void PictureImageLayer::SetImage(skia::RefPtr<const SkImage> image,
+ skia::RefPtr<SkColorFilter> transform) {
+ // SetImage() may be called when color transforms change: usually
+ // the image has not changed, but its rendered paint should.
+ if (transform_.get() != transform.get()) {
+ transform_ = std::move(transform);
+ FilterOperations filters;
+ if (transform_.get()) {
+ skia::RefPtr<SkImageFilter> color_transform_filter =
+ skia::AdoptRef(SkColorFilterImageFilter::Create(transform_.get()));
+ FilterOperation color_transform_operation =
+ FilterOperation::CreateReferenceFilter(color_transform_filter);
+ filters.Append(color_transform_operation);
+ }
+ this->Layer::SetFilters(filters);
+ }
+
// SetImage() currently gets called whenever there is any
// style change that affects the layer even if that change doesn't
// affect the actual contents of the image (e.g. a CSS animation).
« no previous file with comments | « cc/layers/picture_image_layer.h ('k') | cc/layers/picture_image_layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698