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

Side by Side Diff: cc/output/filter_operation.h

Issue 16968002: Move implementation of WebFilterOperations into cc (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CC_OUTPUT_FILTER_OPERATION_H_
6 #define CC_OUTPUT_FILTER_OPERATION_H_
7
8 #include "base/logging.h"
9 #include "cc/base/cc_export.h"
10 #include "third_party/skia/include/core/SkColor.h"
11 #include "third_party/skia/include/core/SkScalar.h"
12 #include "ui/gfx/point.h"
13
14 namespace cc {
15
16 class CC_EXPORT FilterOperation {
17 public:
18 enum FilterType {
19 FilterTypeGrayscale,
jamesr 2013/06/18 23:08:52 This isn't the correct enum style for Chromium (ht
ajuma 2013/06/19 17:08:30 Done.
20 FilterTypeSepia,
21 FilterTypeSaturate,
22 FilterTypeHueRotate,
23 FilterTypeInvert,
24 FilterTypeBrightness,
25 FilterTypeContrast,
26 FilterTypeOpacity,
27 FilterTypeBlur,
28 FilterTypeDropShadow,
29 FilterTypeColorMatrix,
30 FilterTypeZoom,
31 FilterTypeSaturatingBrightness, // Not used in CSS/SVG.
32 };
33
34 FilterType type() const { return type_; }
35
36 float amount() const {
37 DCHECK(type_ != FilterTypeColorMatrix);
jamesr 2013/06/18 23:08:52 DCHECK_NE
ajuma 2013/06/19 17:08:30 Done.
38 return amount_;
39 }
40
41 gfx::Point drop_shadow_offset() const {
42 DCHECK(type_ == FilterTypeDropShadow);
jamesr 2013/06/18 23:08:52 DCHECK_EQ, etc
ajuma 2013/06/19 17:08:30 Done.
43 return drop_shadow_offset_;
44 }
45
46 SkColor drop_shadow_color() const {
47 DCHECK(type_ == FilterTypeDropShadow);
48 return drop_shadow_color_;
49 }
50
51 const SkScalar* matrix() const {
52 DCHECK(type_ == FilterTypeColorMatrix);
53 return matrix_;
54 }
55
56 int zoom_inset() const {
57 DCHECK(type_ == FilterTypeZoom);
58 return zoom_inset_;
59 }
60
61 static FilterOperation CreateGrayscaleFilter(float amount) {
62 return FilterOperation(FilterTypeGrayscale, amount);
63 }
64
65 static FilterOperation CreateSepiaFilter(float amount) {
66 return FilterOperation(FilterTypeSepia, amount);
67 }
68
69 static FilterOperation CreateSaturateFilter(float amount) {
70 return FilterOperation(FilterTypeSaturate, amount);
71 }
72
73 static FilterOperation CreateHueRotateFilter(float amount) {
74 return FilterOperation(FilterTypeHueRotate, amount);
75 }
76
77 static FilterOperation CreateInvertFilter(float amount) {
78 return FilterOperation(FilterTypeInvert, amount);
79 }
80
81 static FilterOperation CreateBrightnessFilter(float amount) {
82 return FilterOperation(FilterTypeBrightness, amount);
83 }
84
85 static FilterOperation CreateContrastFilter(float amount) {
86 return FilterOperation(FilterTypeContrast, amount);
87 }
88
89 static FilterOperation CreateOpacityFilter(float amount) {
90 return FilterOperation(FilterTypeOpacity, amount);
91 }
92
93 static FilterOperation CreateBlurFilter(float amount) {
94 return FilterOperation(FilterTypeBlur, amount);
95 }
96
97 static FilterOperation CreateDropShadowFilter(gfx::Point offset,
98 float std_deviation,
99 SkColor color) {
100 return FilterOperation(FilterTypeDropShadow, offset, std_deviation, color);
101 }
102
103 static FilterOperation CreateColorMatrixFilter(SkScalar matrix[20]) {
104 return FilterOperation(FilterTypeColorMatrix, matrix);
105 }
106
107 static FilterOperation CreateZoomFilter(float amount, int inset) {
108 return FilterOperation(FilterTypeZoom, amount, inset);
109 }
110
111 static FilterOperation CreateSaturatingBrightnessFilter(float amount) {
112 return FilterOperation(FilterTypeSaturatingBrightness, amount);
113 }
114
115 bool operator==(const FilterOperation& other) const;
116
117 bool operator!=(const FilterOperation& other) const {
118 return !(*this == other);
119 }
120
121 // Methods for restoring a FilterOperation.
122 static FilterOperation CreateEmptyFilter() {
123 return FilterOperation(FilterTypeGrayscale, 0.0);
124 }
125
126 void set_type(FilterType type) { type_ = type; }
127
128 void set_amount(float amount) {
129 DCHECK(type_ != FilterTypeColorMatrix);
130 amount_ = amount;
131 }
132
133 void set_drop_shadow_offset(gfx::Point offset) {
134 DCHECK(type_ == FilterTypeDropShadow);
135 drop_shadow_offset_ = offset;
136 }
137
138 void set_drop_shadow_color(SkColor color) {
139 DCHECK(type_ == FilterTypeDropShadow);
140 drop_shadow_color_ = color;
141 }
142
143 void set_matrix(const SkScalar matrix[20]) {
144 DCHECK(type_ == FilterTypeColorMatrix);
145 for (unsigned i = 0; i < 20; ++i)
146 matrix_[i] = matrix[i];
147 }
148
149 void set_zoom_inset(int inset) {
150 DCHECK(type_ == FilterTypeZoom);
151 zoom_inset_ = inset;
152 }
153
154 private:
155 FilterOperation(FilterType type, float amount);
156
157 FilterOperation(FilterType type,
158 gfx::Point offset,
159 float stdDeviation,
160 SkColor color);
161
162 FilterOperation(FilterType, SkScalar matrix[20]);
163
164 FilterOperation(FilterType type, float amount, int inset);
165
166 FilterType type_;
167 float amount_;
168 gfx::Point drop_shadow_offset_;
169 SkColor drop_shadow_color_;
170 SkScalar matrix_[20];
171 int zoom_inset_;
172 };
173
174 } // namespace cc
175
176 #endif // CC_OUTPUT_FILTER_OPERATION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698