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

Side by Side Diff: cc/proto/skia_conversions.cc

Issue 1399933004: Add Protobuf support for cc/playback skia usage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@blimp_geo_proto
Patch Set: Fixed bug with array bounds on unit test Created 5 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 unified diff | Download patch
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698