OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef GrShape_DEFINED | 8 #ifndef GrShape_DEFINED |
9 #define GrShape_DEFINED | 9 #define GrShape_DEFINED |
10 | 10 |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 void asPath(SkPath* out) const { | 183 void asPath(SkPath* out) const { |
184 switch (fType) { | 184 switch (fType) { |
185 case Type::kEmpty: | 185 case Type::kEmpty: |
186 out->reset(); | 186 out->reset(); |
187 break; | 187 break; |
188 case Type::kRRect: | 188 case Type::kRRect: |
189 out->reset(); | 189 out->reset(); |
190 out->addRRect(fRRect, fRRectDir, fRRectStart); | 190 out->addRRect(fRRect, fRRectDir, fRRectStart); |
191 // Below matches the fill type that attemptToSimplifyPath uses. | 191 // Below matches the fill type that attemptToSimplifyPath uses. |
192 if (fRRectIsInverted) { | 192 if (fRRectIsInverted) { |
193 out->setFillType(SkPath::kInverseEvenOdd_FillType); | 193 out->setFillType(kDefaultPathInverseFillType); |
194 } else { | 194 } else { |
195 out->setFillType(SkPath::kEvenOdd_FillType); | 195 out->setFillType(kDefaultPathFillType); |
196 } | 196 } |
197 break; | 197 break; |
198 case Type::kPath: | 198 case Type::kPath: |
199 *out = *fPath.get(); | 199 *out = *fPath.get(); |
200 break; | 200 break; |
201 } | 201 } |
202 } | 202 } |
203 | 203 |
204 /** | 204 /** |
205 * Returns whether the geometry is empty. Note that applying the style could
produce a | 205 * Returns whether the geometry is empty. Note that applying the style could
produce a |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 | 277 |
278 /** | 278 /** |
279 * Determines the key we should inherit from the input shape's geometry and
style when | 279 * Determines the key we should inherit from the input shape's geometry and
style when |
280 * we are applying the style to create a new shape. | 280 * we are applying the style to create a new shape. |
281 */ | 281 */ |
282 void setInheritedKey(const GrShape& parentShape, GrStyle::Apply, SkScalar sc
ale); | 282 void setInheritedKey(const GrShape& parentShape, GrStyle::Apply, SkScalar sc
ale); |
283 | 283 |
284 void attemptToSimplifyPath(); | 284 void attemptToSimplifyPath(); |
285 void attemptToSimplifyRRect(); | 285 void attemptToSimplifyRRect(); |
286 | 286 |
| 287 // Defaults to use when there is no distinction between even/odd and winding
fills. |
| 288 static constexpr SkPath::FillType kDefaultPathFillType = SkPath::kEvenOdd_Fi
llType; |
| 289 static constexpr SkPath::FillType kDefaultPathInverseFillType = |
| 290 SkPath::kInverseEvenOdd_FillType; |
| 291 |
287 static constexpr SkPath::Direction kDefaultRRectDir = SkPath::kCW_Direction; | 292 static constexpr SkPath::Direction kDefaultRRectDir = SkPath::kCW_Direction; |
288 static constexpr unsigned kDefaultRRectStart = 0; | 293 static constexpr unsigned kDefaultRRectStart = 0; |
289 | 294 |
290 static unsigned DefaultRectDirAndStartIndex(const SkRect& rect, bool hasPath
Effect, | 295 static unsigned DefaultRectDirAndStartIndex(const SkRect& rect, bool hasPath
Effect, |
291 SkPath::Direction* dir) { | 296 SkPath::Direction* dir) { |
292 *dir = kDefaultRRectDir; | 297 *dir = kDefaultRRectDir; |
293 // This comes from SkPath's interface. The default for adding a SkRect i
s counter clockwise | 298 // This comes from SkPath's interface. The default for adding a SkRect i
s counter clockwise |
294 // beginning at index 0 (which happens to correspond to rrect index 0 or
7). | 299 // beginning at index 0 (which happens to correspond to rrect index 0 or
7). |
295 if (!hasPathEffect) { | 300 if (!hasPathEffect) { |
296 // It doesn't matter what start we use, just be consistent to avoid
redundant keys. | 301 // It doesn't matter what start we use, just be consistent to avoid
redundant keys. |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 SkPath::Direction fRRectDir; | 339 SkPath::Direction fRRectDir; |
335 unsigned fRRectStart; | 340 unsigned fRRectStart; |
336 bool fRRectIsInverted; | 341 bool fRRectIsInverted; |
337 SkTLazy<SkPath> fPath; | 342 SkTLazy<SkPath> fPath; |
338 // Gen ID of the original path (fPath may be modified) | 343 // Gen ID of the original path (fPath may be modified) |
339 int32_t fPathGenID = 0; | 344 int32_t fPathGenID = 0; |
340 GrStyle fStyle; | 345 GrStyle fStyle; |
341 SkAutoSTArray<8, uint32_t> fInheritedKey; | 346 SkAutoSTArray<8, uint32_t> fInheritedKey; |
342 }; | 347 }; |
343 #endif | 348 #endif |
OLD | NEW |