OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2015 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 #include "cc/proto/skia_conversions.h" | |
6 | |
7 #include "base/logging.h" | |
8 #include "cc/proto/gfx_conversions.h" | |
9 #include "cc/proto/skrrect.pb.h" | |
10 #include "third_party/skia/include/core/SkRRect.h" | |
11 #include "ui/gfx/skia_util.h" | |
12 | |
13 namespace cc { | |
14 | |
15 namespace { | |
16 | |
17 void SkPointToProto(const SkPoint& point, proto::PointF* proto) { | |
18 PointFToProto(gfx::PointF(point.x(), point.y()), proto); | |
19 } | |
20 | |
21 SkPoint ProtoToSkPoint(const proto::PointF& proto) { | |
22 gfx::PointF point = ProtoToPointF(proto); | |
23 return SkPoint::Make(point.x(), point.y()); | |
24 } | |
25 | |
26 } // namespace | |
27 | |
28 SkRegion::Op SkRegionOpFromProto(proto::SkRegion::Op op) { | |
29 switch (op) { | |
30 case proto::SkRegion::Op_Difference: | |
31 return SkRegion::Op::kDifference_Op; | |
32 case proto::SkRegion::Op_Intersect: | |
33 return SkRegion::Op::kIntersect_Op; | |
34 case proto::SkRegion::Op_Union: | |
35 return SkRegion::Op::kUnion_Op; | |
36 case proto::SkRegion::Op_XOR: | |
37 return SkRegion::Op::kXOR_Op; | |
38 case proto::SkRegion::Op_ReverseDifference: | |
39 return SkRegion::Op::kReverseDifference_Op; | |
40 case proto::SkRegion::Op_Replace: | |
41 return SkRegion::Op::kReplace_Op; | |
42 default: | |
43 DCHECK(false); | |
vmpstr
2015/10/21 21:58:53
If you handle all of the cases, then don't add the
David Trainor- moved to gerrit
2015/10/23 15:40:51
Ah good point!
| |
44 return SkRegion::Op::kDifference_Op; | |
45 } | |
46 } | |
47 | |
48 proto::SkRegion::Op SkRegionOpToProto(SkRegion::Op op) { | |
49 switch (op) { | |
50 case SkRegion::Op::kDifference_Op: | |
51 return proto::SkRegion::Op_Difference; | |
52 case SkRegion::Op::kIntersect_Op: | |
53 return proto::SkRegion::Op_Intersect; | |
54 case SkRegion::Op::kUnion_Op: | |
55 return proto::SkRegion::Op_Union; | |
56 case SkRegion::Op::kXOR_Op: | |
57 return proto::SkRegion::Op_XOR; | |
58 case SkRegion::Op::kReverseDifference_Op: | |
59 return proto::SkRegion::Op_ReverseDifference; | |
60 case SkRegion::Op::kReplace_Op: | |
61 return proto::SkRegion::Op_Replace; | |
62 default: | |
63 DCHECK(false); | |
vmpstr
2015/10/21 21:58:53
Sam here
David Trainor- moved to gerrit
2015/10/23 15:40:51
Done.
| |
64 return proto::SkRegion::Op_Difference; | |
65 } | |
66 } | |
67 | |
68 SkXfermode::Mode SkXfermodeModeFromProto(proto::SkXfermode::Mode mode) { | |
69 switch (mode) { | |
70 case proto::SkXfermode::Mode_Clear: | |
vmpstr
2015/10/21 21:58:53
/o\
David Trainor- moved to gerrit
2015/10/23 15:40:51
Right!? Crazy method :(. But I need this in case
| |
71 return SkXfermode::Mode::kClear_Mode; | |
72 case proto::SkXfermode::Mode_Src: | |
73 return SkXfermode::Mode::kSrc_Mode; | |
74 case proto::SkXfermode::Mode_Dst: | |
75 return SkXfermode::Mode::kDst_Mode; | |
76 case proto::SkXfermode::Mode_SrcOver: | |
77 return SkXfermode::Mode::kSrcOver_Mode; | |
78 case proto::SkXfermode::Mode_DstOver: | |
79 return SkXfermode::Mode::kDstOver_Mode; | |
80 case proto::SkXfermode::Mode_SrcIn: | |
81 return SkXfermode::Mode::kSrcIn_Mode; | |
82 case proto::SkXfermode::Mode_DstIn: | |
83 return SkXfermode::Mode::kDstIn_Mode; | |
84 case proto::SkXfermode::Mode_SrcOut: | |
85 return SkXfermode::Mode::kSrcOut_Mode; | |
86 case proto::SkXfermode::Mode_DstOut: | |
87 return SkXfermode::Mode::kDstOut_Mode; | |
88 case proto::SkXfermode::Mode_SrcATop: | |
89 return SkXfermode::Mode::kSrcATop_Mode; | |
90 case proto::SkXfermode::Mode_DstATop: | |
91 return SkXfermode::Mode::kDstATop_Mode; | |
92 case proto::SkXfermode::Mode_XOR: | |
93 return SkXfermode::Mode::kXor_Mode; | |
94 case proto::SkXfermode::Mode_Plus: | |
95 return SkXfermode::Mode::kPlus_Mode; | |
96 case proto::SkXfermode::Mode_Modulate: | |
97 return SkXfermode::Mode::kModulate_Mode; | |
98 case proto::SkXfermode::Mode_Screen: | |
99 return SkXfermode::Mode::kScreen_Mode; | |
100 case proto::SkXfermode::Mode_Overlay: | |
101 return SkXfermode::Mode::kOverlay_Mode; | |
102 case proto::SkXfermode::Mode_Darken: | |
103 return SkXfermode::Mode::kDarken_Mode; | |
104 case proto::SkXfermode::Mode_Lighten: | |
105 return SkXfermode::Mode::kLighten_Mode; | |
106 case proto::SkXfermode::Mode_ColorDodge: | |
107 return SkXfermode::Mode::kColorDodge_Mode; | |
108 case proto::SkXfermode::Mode_ColorBurn: | |
109 return SkXfermode::Mode::kColorBurn_Mode; | |
110 case proto::SkXfermode::Mode_HardLight: | |
111 return SkXfermode::Mode::kHardLight_Mode; | |
112 case proto::SkXfermode::Mode_SoftLight: | |
113 return SkXfermode::Mode::kSoftLight_Mode; | |
114 case proto::SkXfermode::Mode_Difference: | |
115 return SkXfermode::Mode::kDifference_Mode; | |
116 case proto::SkXfermode::Mode_Exclusion: | |
117 return SkXfermode::Mode::kExclusion_Mode; | |
118 case proto::SkXfermode::Mode_Multiply: | |
119 return SkXfermode::Mode::kMultiply_Mode; | |
120 case proto::SkXfermode::Mode_Hue: | |
121 return SkXfermode::Mode::kHue_Mode; | |
122 case proto::SkXfermode::Mode_Saturation: | |
123 return SkXfermode::Mode::kSaturation_Mode; | |
124 case proto::SkXfermode::Mode_Color: | |
125 return SkXfermode::Mode::kColor_Mode; | |
126 case proto::SkXfermode::Mode_Luminosity: | |
127 return SkXfermode::Mode::kLuminosity_Mode; | |
128 default: | |
129 DCHECK(false); | |
vmpstr
2015/10/21 21:58:53
Same here.
David Trainor- moved to gerrit
2015/10/23 15:40:51
Done.
| |
130 return SkXfermode::Mode::kClear_Mode; | |
131 } | |
132 } | |
133 | |
134 proto::SkXfermode::Mode SkXfermodeModeToProto(SkXfermode::Mode mode) { | |
135 switch (mode) { | |
136 case SkXfermode::Mode::kClear_Mode: | |
137 return proto::SkXfermode::Mode_Clear; | |
138 case SkXfermode::Mode::kSrc_Mode: | |
139 return proto::SkXfermode::Mode_Src; | |
140 case SkXfermode::Mode::kDst_Mode: | |
141 return proto::SkXfermode::Mode_Dst; | |
142 case SkXfermode::Mode::kSrcOver_Mode: | |
143 return proto::SkXfermode::Mode_SrcOver; | |
144 case SkXfermode::Mode::kDstOver_Mode: | |
145 return proto::SkXfermode::Mode_DstOver; | |
146 case SkXfermode::Mode::kSrcIn_Mode: | |
147 return proto::SkXfermode::Mode_SrcIn; | |
148 case SkXfermode::Mode::kDstIn_Mode: | |
149 return proto::SkXfermode::Mode_DstIn; | |
150 case SkXfermode::Mode::kSrcOut_Mode: | |
151 return proto::SkXfermode::Mode_SrcOut; | |
152 case SkXfermode::Mode::kDstOut_Mode: | |
153 return proto::SkXfermode::Mode_DstOut; | |
154 case SkXfermode::Mode::kSrcATop_Mode: | |
155 return proto::SkXfermode::Mode_SrcATop; | |
156 case SkXfermode::Mode::kDstATop_Mode: | |
157 return proto::SkXfermode::Mode_DstATop; | |
158 case SkXfermode::Mode::kXor_Mode: | |
159 return proto::SkXfermode::Mode_XOR; | |
160 case SkXfermode::Mode::kPlus_Mode: | |
161 return proto::SkXfermode::Mode_Plus; | |
162 case SkXfermode::Mode::kModulate_Mode: | |
163 return proto::SkXfermode::Mode_Modulate; | |
164 case SkXfermode::Mode::kScreen_Mode: | |
165 return proto::SkXfermode::Mode_Screen; | |
166 case SkXfermode::Mode::kOverlay_Mode: | |
167 return proto::SkXfermode::Mode_Overlay; | |
168 case SkXfermode::Mode::kDarken_Mode: | |
169 return proto::SkXfermode::Mode_Darken; | |
170 case SkXfermode::Mode::kLighten_Mode: | |
171 return proto::SkXfermode::Mode_Lighten; | |
172 case SkXfermode::Mode::kColorDodge_Mode: | |
173 return proto::SkXfermode::Mode_ColorDodge; | |
174 case SkXfermode::Mode::kColorBurn_Mode: | |
175 return proto::SkXfermode::Mode_ColorBurn; | |
176 case SkXfermode::Mode::kHardLight_Mode: | |
177 return proto::SkXfermode::Mode_HardLight; | |
178 case SkXfermode::Mode::kSoftLight_Mode: | |
179 return proto::SkXfermode::Mode_SoftLight; | |
180 case SkXfermode::Mode::kDifference_Mode: | |
181 return proto::SkXfermode::Mode_Difference; | |
182 case SkXfermode::Mode::kExclusion_Mode: | |
183 return proto::SkXfermode::Mode_Exclusion; | |
184 case SkXfermode::Mode::kMultiply_Mode: | |
185 return proto::SkXfermode::Mode_Multiply; | |
186 case SkXfermode::Mode::kHue_Mode: | |
187 return proto::SkXfermode::Mode_Hue; | |
188 case SkXfermode::Mode::kSaturation_Mode: | |
189 return proto::SkXfermode::Mode_Saturation; | |
190 case SkXfermode::Mode::kColor_Mode: | |
191 return proto::SkXfermode::Mode_Color; | |
192 case SkXfermode::Mode::kLuminosity_Mode: | |
193 return proto::SkXfermode::Mode_Luminosity; | |
194 default: | |
195 DCHECK(false); | |
vmpstr
2015/10/21 21:58:53
Same here.
David Trainor- moved to gerrit
2015/10/23 15:40:51
Done.
| |
196 return proto::SkXfermode::Mode_Clear; | |
197 } | |
198 } | |
199 | |
200 void SkRRectToProto(const SkRRect& rect, proto::SkRRect* proto) { | |
201 RectFToProto(gfx::SkRectToRectF(rect.rect()), proto->mutable_rect()); | |
202 | |
203 SkPointToProto(rect.radii(SkRRect::kUpperLeft_Corner), | |
204 proto->mutable_radii_upper_left()); | |
205 SkPointToProto(rect.radii(SkRRect::kUpperRight_Corner), | |
206 proto->mutable_radii_upper_right()); | |
207 SkPointToProto(rect.radii(SkRRect::kLowerRight_Corner), | |
208 proto->mutable_radii_lower_right()); | |
209 SkPointToProto(rect.radii(SkRRect::kLowerLeft_Corner), | |
210 proto->mutable_radii_lower_left()); | |
211 } | |
212 | |
213 SkRRect ProtoToSkRRect(const proto::SkRRect& proto) { | |
214 SkRect parsed_rect = gfx::RectFToSkRect(ProtoToRectF(proto.rect())); | |
215 SkVector parsed_radii[4]; | |
216 parsed_radii[SkRRect::kUpperLeft_Corner] = | |
217 ProtoToSkPoint(proto.radii_upper_left()); | |
218 parsed_radii[SkRRect::kUpperRight_Corner] = | |
219 ProtoToSkPoint(proto.radii_upper_right()); | |
220 parsed_radii[SkRRect::kLowerRight_Corner] = | |
221 ProtoToSkPoint(proto.radii_lower_right()); | |
222 parsed_radii[SkRRect::kLowerLeft_Corner] = | |
223 ProtoToSkPoint(proto.radii_lower_left()); | |
224 SkRRect rect; | |
225 rect.setRectRadii(parsed_rect, parsed_radii); | |
226 return rect; | |
227 } | |
228 | |
229 } // namespace cc | |
OLD | NEW |