Index: cc/output/filter_operation.h |
diff --git a/cc/output/filter_operation.h b/cc/output/filter_operation.h |
index f56176213b14081081361bfc546b544df885eb0d..ac94797d8ed26b9be9ec66c725405a717616d0f3 100644 |
--- a/cc/output/filter_operation.h |
+++ b/cc/output/filter_operation.h |
@@ -8,7 +8,9 @@ |
#include "base/logging.h" |
#include "base/memory/scoped_ptr.h" |
#include "cc/base/cc_export.h" |
+#include "skia/ext/refptr.h" |
#include "third_party/skia/include/core/SkColor.h" |
+#include "third_party/skia/include/core/SkImageFilter.h" |
#include "third_party/skia/include/core/SkScalar.h" |
#include "ui/gfx/point.h" |
@@ -33,13 +35,19 @@ class CC_EXPORT FilterOperation { |
DROP_SHADOW, |
COLOR_MATRIX, |
ZOOM, |
+ REFERENCE, |
SATURATING_BRIGHTNESS, // Not used in CSS/SVG. |
}; |
+ FilterOperation(const FilterOperation& other); |
+ |
+ ~FilterOperation(); |
+ |
FilterType type() const { return type_; } |
float amount() const { |
DCHECK_NE(type_, COLOR_MATRIX); |
+ DCHECK_NE(type_, REFERENCE); |
return amount_; |
} |
@@ -53,6 +61,11 @@ class CC_EXPORT FilterOperation { |
return drop_shadow_color_; |
} |
+ skia::RefPtr<SkImageFilter> image_filter() const { |
+ DCHECK_EQ(type_, REFERENCE); |
+ return image_filter_; |
+ } |
+ |
const SkScalar* matrix() const { |
DCHECK_EQ(type_, COLOR_MATRIX); |
return matrix_; |
@@ -113,6 +126,11 @@ class CC_EXPORT FilterOperation { |
return FilterOperation(ZOOM, amount, inset); |
} |
+ static FilterOperation CreateReferenceFilter( |
+ const skia::RefPtr<SkImageFilter> image_filter) { |
danakj
2013/09/09 22:04:50
did you mean const& ?
ajuma
2013/09/10 21:17:58
Done.
|
+ return FilterOperation(REFERENCE, image_filter); |
+ } |
+ |
static FilterOperation CreateSaturatingBrightnessFilter(float amount) { |
return FilterOperation(SATURATING_BRIGHTNESS, amount); |
} |
@@ -132,6 +150,7 @@ class CC_EXPORT FilterOperation { |
void set_amount(float amount) { |
DCHECK_NE(type_, COLOR_MATRIX); |
+ DCHECK_NE(type_, REFERENCE); |
amount_ = amount; |
} |
@@ -145,6 +164,11 @@ class CC_EXPORT FilterOperation { |
drop_shadow_color_ = color; |
} |
+ void set_image_filter(const skia::RefPtr<SkImageFilter>& image_filter) { |
+ DCHECK_EQ(type_, REFERENCE); |
+ image_filter_ = image_filter; |
+ } |
+ |
void set_matrix(const SkScalar matrix[20]) { |
DCHECK_EQ(type_, COLOR_MATRIX); |
for (unsigned i = 0; i < 20; ++i) |
@@ -180,10 +204,14 @@ class CC_EXPORT FilterOperation { |
FilterOperation(FilterType type, float amount, int inset); |
+ FilterOperation(FilterType type, |
+ const skia::RefPtr<SkImageFilter>& image_filter); |
+ |
FilterType type_; |
float amount_; |
gfx::Point drop_shadow_offset_; |
SkColor drop_shadow_color_; |
+ skia::RefPtr<SkImageFilter> image_filter_; |
SkScalar matrix_[20]; |
int zoom_inset_; |
}; |