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

Unified Diff: cc/quads/shared_quad_state.cc

Issue 23455060: mix-blend-mode implementation for accelerated layers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding compositor pixel tests, clang-format Created 7 years, 2 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/quads/shared_quad_state.cc
diff --git a/cc/quads/shared_quad_state.cc b/cc/quads/shared_quad_state.cc
index 6a53d9f6a9f8d1a410deacb6ae8fc44d745d28ed..4ecdb3cd147aea6495e4fe7bdb911dcbed89f81f 100644
--- a/cc/quads/shared_quad_state.cc
+++ b/cc/quads/shared_quad_state.cc
@@ -10,7 +10,49 @@
namespace cc {
-SharedQuadState::SharedQuadState() : is_clipped(false), opacity(0.f) {}
+namespace {
+
+const char* BlendModeToString(SkXfermode::Mode blendMode) {
enne (OOO) 2013/11/01 18:49:02 blend_mode
rosca 2013/11/04 17:14:34 Done.
+ switch (blendMode) {
+ case SkXfermode::kMultiply_Mode:
+ return "multiply";
+ case SkXfermode::kScreen_Mode:
+ return "screen";
+ case SkXfermode::kOverlay_Mode:
+ return "overlay";
+ case SkXfermode::kDarken_Mode:
+ return "darken";
+ case SkXfermode::kLighten_Mode:
+ return "lighten";
+ case SkXfermode::kColorDodge_Mode:
+ return "color-dodge";
+ case SkXfermode::kColorBurn_Mode:
+ return "color-burn";
+ case SkXfermode::kHardLight_Mode:
+ return "hard-light";
+ case SkXfermode::kSoftLight_Mode:
+ return "soft-light";
+ case SkXfermode::kDifference_Mode:
+ return "difference";
+ case SkXfermode::kExclusion_Mode:
+ return "exclusion";
+ case SkXfermode::kHue_Mode:
+ return "hue";
+ case SkXfermode::kSaturation_Mode:
+ return "saturation";
+ case SkXfermode::kColor_Mode:
+ return "color";
+ case SkXfermode::kLuminosity_Mode:
+ return "luminosity";
+ default:
+ return "normal";
+ }
+}
+
+} // namespace
+
+SharedQuadState::SharedQuadState()
+ : is_clipped(false), opacity(0.f), blend_mode(SkXfermode::kSrcOver_Mode) {}
SharedQuadState::~SharedQuadState() {
TRACE_EVENT_OBJECT_DELETED_WITH_ID(
@@ -26,19 +68,20 @@ scoped_ptr<SharedQuadState> SharedQuadState::Copy() const {
return make_scoped_ptr(new SharedQuadState(*this));
}
-void SharedQuadState::SetAll(
- const gfx::Transform& content_to_target_transform,
- gfx::Size content_bounds,
- gfx::Rect visible_content_rect,
- gfx::Rect clip_rect,
- bool is_clipped,
- float opacity) {
+void SharedQuadState::SetAll(const gfx::Transform& content_to_target_transform,
+ gfx::Size content_bounds,
+ gfx::Rect visible_content_rect,
+ gfx::Rect clip_rect,
+ bool is_clipped,
+ float opacity,
+ SkXfermode::Mode blend_mode) {
this->content_to_target_transform = content_to_target_transform;
this->content_bounds = content_bounds;
this->visible_content_rect = visible_content_rect;
this->clip_rect = clip_rect;
this->is_clipped = is_clipped;
this->opacity = opacity;
+ this->blend_mode = blend_mode;
}
scoped_ptr<base::Value> SharedQuadState::AsValue() const {
@@ -52,6 +95,7 @@ scoped_ptr<base::Value> SharedQuadState::AsValue() const {
value->SetBoolean("is_clipped", is_clipped);
value->Set("clip_rect", MathUtil::AsValue(clip_rect).release());
value->SetDouble("opacity", opacity);
+ value->SetString("blend_mode", BlendModeToString(blend_mode));
TracedValue::MakeDictIntoImplicitSnapshotWithCategory(
TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"),
value.get(), "cc::SharedQuadState", this);

Powered by Google App Engine
This is Rietveld 408576698