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 } |
| 43 return SkRegion::Op::kDifference_Op; |
| 44 } |
| 45 |
| 46 proto::SkRegion::Op SkRegionOpToProto(SkRegion::Op op) { |
| 47 switch (op) { |
| 48 case SkRegion::Op::kDifference_Op: |
| 49 return proto::SkRegion::Op_Difference; |
| 50 case SkRegion::Op::kIntersect_Op: |
| 51 return proto::SkRegion::Op_Intersect; |
| 52 case SkRegion::Op::kUnion_Op: |
| 53 return proto::SkRegion::Op_Union; |
| 54 case SkRegion::Op::kXOR_Op: |
| 55 return proto::SkRegion::Op_XOR; |
| 56 case SkRegion::Op::kReverseDifference_Op: |
| 57 return proto::SkRegion::Op_ReverseDifference; |
| 58 case SkRegion::Op::kReplace_Op: |
| 59 return proto::SkRegion::Op_Replace; |
| 60 } |
| 61 return proto::SkRegion::Op_Difference; |
| 62 } |
| 63 |
| 64 SkXfermode::Mode SkXfermodeModeFromProto(proto::SkXfermode::Mode mode) { |
| 65 switch (mode) { |
| 66 case proto::SkXfermode::Mode_Clear: |
| 67 return SkXfermode::Mode::kClear_Mode; |
| 68 case proto::SkXfermode::Mode_Src: |
| 69 return SkXfermode::Mode::kSrc_Mode; |
| 70 case proto::SkXfermode::Mode_Dst: |
| 71 return SkXfermode::Mode::kDst_Mode; |
| 72 case proto::SkXfermode::Mode_SrcOver: |
| 73 return SkXfermode::Mode::kSrcOver_Mode; |
| 74 case proto::SkXfermode::Mode_DstOver: |
| 75 return SkXfermode::Mode::kDstOver_Mode; |
| 76 case proto::SkXfermode::Mode_SrcIn: |
| 77 return SkXfermode::Mode::kSrcIn_Mode; |
| 78 case proto::SkXfermode::Mode_DstIn: |
| 79 return SkXfermode::Mode::kDstIn_Mode; |
| 80 case proto::SkXfermode::Mode_SrcOut: |
| 81 return SkXfermode::Mode::kSrcOut_Mode; |
| 82 case proto::SkXfermode::Mode_DstOut: |
| 83 return SkXfermode::Mode::kDstOut_Mode; |
| 84 case proto::SkXfermode::Mode_SrcATop: |
| 85 return SkXfermode::Mode::kSrcATop_Mode; |
| 86 case proto::SkXfermode::Mode_DstATop: |
| 87 return SkXfermode::Mode::kDstATop_Mode; |
| 88 case proto::SkXfermode::Mode_XOR: |
| 89 return SkXfermode::Mode::kXor_Mode; |
| 90 case proto::SkXfermode::Mode_Plus: |
| 91 return SkXfermode::Mode::kPlus_Mode; |
| 92 case proto::SkXfermode::Mode_Modulate: |
| 93 return SkXfermode::Mode::kModulate_Mode; |
| 94 case proto::SkXfermode::Mode_Screen: |
| 95 return SkXfermode::Mode::kScreen_Mode; |
| 96 case proto::SkXfermode::Mode_Overlay: |
| 97 return SkXfermode::Mode::kOverlay_Mode; |
| 98 case proto::SkXfermode::Mode_Darken: |
| 99 return SkXfermode::Mode::kDarken_Mode; |
| 100 case proto::SkXfermode::Mode_Lighten: |
| 101 return SkXfermode::Mode::kLighten_Mode; |
| 102 case proto::SkXfermode::Mode_ColorDodge: |
| 103 return SkXfermode::Mode::kColorDodge_Mode; |
| 104 case proto::SkXfermode::Mode_ColorBurn: |
| 105 return SkXfermode::Mode::kColorBurn_Mode; |
| 106 case proto::SkXfermode::Mode_HardLight: |
| 107 return SkXfermode::Mode::kHardLight_Mode; |
| 108 case proto::SkXfermode::Mode_SoftLight: |
| 109 return SkXfermode::Mode::kSoftLight_Mode; |
| 110 case proto::SkXfermode::Mode_Difference: |
| 111 return SkXfermode::Mode::kDifference_Mode; |
| 112 case proto::SkXfermode::Mode_Exclusion: |
| 113 return SkXfermode::Mode::kExclusion_Mode; |
| 114 case proto::SkXfermode::Mode_Multiply: |
| 115 return SkXfermode::Mode::kMultiply_Mode; |
| 116 case proto::SkXfermode::Mode_Hue: |
| 117 return SkXfermode::Mode::kHue_Mode; |
| 118 case proto::SkXfermode::Mode_Saturation: |
| 119 return SkXfermode::Mode::kSaturation_Mode; |
| 120 case proto::SkXfermode::Mode_Color: |
| 121 return SkXfermode::Mode::kColor_Mode; |
| 122 case proto::SkXfermode::Mode_Luminosity: |
| 123 return SkXfermode::Mode::kLuminosity_Mode; |
| 124 } |
| 125 return SkXfermode::Mode::kClear_Mode; |
| 126 } |
| 127 |
| 128 proto::SkXfermode::Mode SkXfermodeModeToProto(SkXfermode::Mode mode) { |
| 129 switch (mode) { |
| 130 case SkXfermode::Mode::kClear_Mode: |
| 131 return proto::SkXfermode::Mode_Clear; |
| 132 case SkXfermode::Mode::kSrc_Mode: |
| 133 return proto::SkXfermode::Mode_Src; |
| 134 case SkXfermode::Mode::kDst_Mode: |
| 135 return proto::SkXfermode::Mode_Dst; |
| 136 case SkXfermode::Mode::kSrcOver_Mode: |
| 137 return proto::SkXfermode::Mode_SrcOver; |
| 138 case SkXfermode::Mode::kDstOver_Mode: |
| 139 return proto::SkXfermode::Mode_DstOver; |
| 140 case SkXfermode::Mode::kSrcIn_Mode: |
| 141 return proto::SkXfermode::Mode_SrcIn; |
| 142 case SkXfermode::Mode::kDstIn_Mode: |
| 143 return proto::SkXfermode::Mode_DstIn; |
| 144 case SkXfermode::Mode::kSrcOut_Mode: |
| 145 return proto::SkXfermode::Mode_SrcOut; |
| 146 case SkXfermode::Mode::kDstOut_Mode: |
| 147 return proto::SkXfermode::Mode_DstOut; |
| 148 case SkXfermode::Mode::kSrcATop_Mode: |
| 149 return proto::SkXfermode::Mode_SrcATop; |
| 150 case SkXfermode::Mode::kDstATop_Mode: |
| 151 return proto::SkXfermode::Mode_DstATop; |
| 152 case SkXfermode::Mode::kXor_Mode: |
| 153 return proto::SkXfermode::Mode_XOR; |
| 154 case SkXfermode::Mode::kPlus_Mode: |
| 155 return proto::SkXfermode::Mode_Plus; |
| 156 case SkXfermode::Mode::kModulate_Mode: |
| 157 return proto::SkXfermode::Mode_Modulate; |
| 158 case SkXfermode::Mode::kScreen_Mode: |
| 159 return proto::SkXfermode::Mode_Screen; |
| 160 case SkXfermode::Mode::kOverlay_Mode: |
| 161 return proto::SkXfermode::Mode_Overlay; |
| 162 case SkXfermode::Mode::kDarken_Mode: |
| 163 return proto::SkXfermode::Mode_Darken; |
| 164 case SkXfermode::Mode::kLighten_Mode: |
| 165 return proto::SkXfermode::Mode_Lighten; |
| 166 case SkXfermode::Mode::kColorDodge_Mode: |
| 167 return proto::SkXfermode::Mode_ColorDodge; |
| 168 case SkXfermode::Mode::kColorBurn_Mode: |
| 169 return proto::SkXfermode::Mode_ColorBurn; |
| 170 case SkXfermode::Mode::kHardLight_Mode: |
| 171 return proto::SkXfermode::Mode_HardLight; |
| 172 case SkXfermode::Mode::kSoftLight_Mode: |
| 173 return proto::SkXfermode::Mode_SoftLight; |
| 174 case SkXfermode::Mode::kDifference_Mode: |
| 175 return proto::SkXfermode::Mode_Difference; |
| 176 case SkXfermode::Mode::kExclusion_Mode: |
| 177 return proto::SkXfermode::Mode_Exclusion; |
| 178 case SkXfermode::Mode::kMultiply_Mode: |
| 179 return proto::SkXfermode::Mode_Multiply; |
| 180 case SkXfermode::Mode::kHue_Mode: |
| 181 return proto::SkXfermode::Mode_Hue; |
| 182 case SkXfermode::Mode::kSaturation_Mode: |
| 183 return proto::SkXfermode::Mode_Saturation; |
| 184 case SkXfermode::Mode::kColor_Mode: |
| 185 return proto::SkXfermode::Mode_Color; |
| 186 case SkXfermode::Mode::kLuminosity_Mode: |
| 187 return proto::SkXfermode::Mode_Luminosity; |
| 188 } |
| 189 return proto::SkXfermode::Mode_Clear; |
| 190 } |
| 191 |
| 192 void SkRRectToProto(const SkRRect& rect, proto::SkRRect* proto) { |
| 193 RectFToProto(gfx::SkRectToRectF(rect.rect()), proto->mutable_rect()); |
| 194 |
| 195 SkPointToProto(rect.radii(SkRRect::kUpperLeft_Corner), |
| 196 proto->mutable_radii_upper_left()); |
| 197 SkPointToProto(rect.radii(SkRRect::kUpperRight_Corner), |
| 198 proto->mutable_radii_upper_right()); |
| 199 SkPointToProto(rect.radii(SkRRect::kLowerRight_Corner), |
| 200 proto->mutable_radii_lower_right()); |
| 201 SkPointToProto(rect.radii(SkRRect::kLowerLeft_Corner), |
| 202 proto->mutable_radii_lower_left()); |
| 203 } |
| 204 |
| 205 SkRRect ProtoToSkRRect(const proto::SkRRect& proto) { |
| 206 SkRect parsed_rect = gfx::RectFToSkRect(ProtoToRectF(proto.rect())); |
| 207 SkVector parsed_radii[4]; |
| 208 parsed_radii[SkRRect::kUpperLeft_Corner] = |
| 209 ProtoToSkPoint(proto.radii_upper_left()); |
| 210 parsed_radii[SkRRect::kUpperRight_Corner] = |
| 211 ProtoToSkPoint(proto.radii_upper_right()); |
| 212 parsed_radii[SkRRect::kLowerRight_Corner] = |
| 213 ProtoToSkPoint(proto.radii_lower_right()); |
| 214 parsed_radii[SkRRect::kLowerLeft_Corner] = |
| 215 ProtoToSkPoint(proto.radii_lower_left()); |
| 216 SkRRect rect; |
| 217 rect.setRectRadii(parsed_rect, parsed_radii); |
| 218 return rect; |
| 219 } |
| 220 |
| 221 } // namespace cc |
OLD | NEW |