Chromium Code Reviews| 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 #include "GrShape.h" | 8 #include "GrShape.h" |
| 9 | 9 |
| 10 GrShape& GrShape::operator=(const GrShape& that) { | 10 GrShape& GrShape::operator=(const GrShape& that) { |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 31 *fPath.get() = *that.fPath.get(); | 31 *fPath.get() = *that.fPath.get(); |
| 32 } else { | 32 } else { |
| 33 fPath.set(*that.fPath.get()); | 33 fPath.set(*that.fPath.get()); |
| 34 } | 34 } |
| 35 fPathGenID = that.fPathGenID; | 35 fPathGenID = that.fPathGenID; |
| 36 break; | 36 break; |
| 37 } | 37 } |
| 38 fInheritedKey.reset(that.fInheritedKey.count()); | 38 fInheritedKey.reset(that.fInheritedKey.count()); |
| 39 sk_careful_memcpy(fInheritedKey.get(), that.fInheritedKey.get(), | 39 sk_careful_memcpy(fInheritedKey.get(), that.fInheritedKey.get(), |
| 40 sizeof(uint32_t) * fInheritedKey.count()); | 40 sizeof(uint32_t) * fInheritedKey.count()); |
| 41 SkASSERT((Type::kPath == fType) == SkToBool(fPath.getMaybeNull())); | |
|
bsalomon
2016/06/24 20:53:33
Ignore all these. I meant to delete these asserts.
| |
| 41 return *this; | 42 return *this; |
| 42 } | 43 } |
| 43 | 44 |
| 44 const SkRect& GrShape::bounds() const { | 45 const SkRect& GrShape::bounds() const { |
| 45 static constexpr SkRect kEmpty = SkRect::MakeEmpty(); | 46 static constexpr SkRect kEmpty = SkRect::MakeEmpty(); |
| 46 switch (fType) { | 47 switch (fType) { |
| 47 case Type::kEmpty: | 48 case Type::kEmpty: |
| 48 return kEmpty; | 49 return kEmpty; |
| 49 case Type::kRRect: | 50 case Type::kRRect: |
| 50 return fRRect.getBounds(); | 51 return fRRect.getBounds(); |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 175 fRRectIsInverted = that.fRRectIsInverted; | 176 fRRectIsInverted = that.fRRectIsInverted; |
| 176 break; | 177 break; |
| 177 case Type::kPath: | 178 case Type::kPath: |
| 178 fPath.set(*that.fPath.get()); | 179 fPath.set(*that.fPath.get()); |
| 179 fPathGenID = that.fPathGenID; | 180 fPathGenID = that.fPathGenID; |
| 180 break; | 181 break; |
| 181 } | 182 } |
| 182 fInheritedKey.reset(that.fInheritedKey.count()); | 183 fInheritedKey.reset(that.fInheritedKey.count()); |
| 183 sk_careful_memcpy(fInheritedKey.get(), that.fInheritedKey.get(), | 184 sk_careful_memcpy(fInheritedKey.get(), that.fInheritedKey.get(), |
| 184 sizeof(uint32_t) * fInheritedKey.count()); | 185 sizeof(uint32_t) * fInheritedKey.count()); |
| 186 SkASSERT((Type::kPath == fType) == SkToBool(fPath.getMaybeNull())); | |
| 185 } | 187 } |
| 186 | 188 |
| 187 GrShape::GrShape(const GrShape& parent, GrStyle::Apply apply, SkScalar scale) { | 189 GrShape::GrShape(const GrShape& parent, GrStyle::Apply apply, SkScalar scale) { |
| 188 // TODO: Add some quantization of scale for better cache performance here or leave that up | 190 // TODO: Add some quantization of scale for better cache performance here or leave that up |
| 189 // to caller? | 191 // to caller? |
| 190 // TODO: For certain shapes and stroke params we could ignore the scale. (e. g. miter or bevel | 192 // TODO: For certain shapes and stroke params we could ignore the scale. (e. g. miter or bevel |
| 191 // stroke of a rect). | 193 // stroke of a rect). |
| 192 if (!parent.style().applies() || | 194 if (!parent.style().applies() || |
| 193 (GrStyle::Apply::kPathEffectOnly == apply && !parent.style().pathEffect( ))) { | 195 (GrStyle::Apply::kPathEffectOnly == apply && !parent.style().pathEffect( ))) { |
| 194 fType = Type::kEmpty; | 196 fType = Type::kEmpty; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 261 } | 263 } |
| 262 SkStrokeRec::InitStyle fillOrHairline; | 264 SkStrokeRec::InitStyle fillOrHairline; |
| 263 SkASSERT(parent.fStyle.applies()); | 265 SkASSERT(parent.fStyle.applies()); |
| 264 SkASSERT(!parent.fStyle.pathEffect()); | 266 SkASSERT(!parent.fStyle.pathEffect()); |
| 265 SkAssertResult(parent.fStyle.applyToPath(fPath.get(), &fillOrHairline, * srcForParentStyle, | 267 SkAssertResult(parent.fStyle.applyToPath(fPath.get(), &fillOrHairline, * srcForParentStyle, |
| 266 scale)); | 268 scale)); |
| 267 fStyle.resetToInitStyle(fillOrHairline); | 269 fStyle.resetToInitStyle(fillOrHairline); |
| 268 } | 270 } |
| 269 this->attemptToSimplifyPath(); | 271 this->attemptToSimplifyPath(); |
| 270 this->setInheritedKey(*parentForKey, apply, scale); | 272 this->setInheritedKey(*parentForKey, apply, scale); |
| 273 SkASSERT((Type::kPath == fType) == SkToBool(fPath.getMaybeNull())); | |
| 271 } | 274 } |
| 272 | 275 |
| 273 void GrShape::attemptToSimplifyPath() { | 276 void GrShape::attemptToSimplifyPath() { |
| 274 SkASSERT(Type::kPath == fType); | 277 SkASSERT(Type::kPath == fType); |
| 275 SkRect rect; | 278 SkRect rect; |
| 276 if (fPath.get()->isEmpty()) { | 279 if (fPath.get()->isEmpty()) { |
| 277 fType = Type::kEmpty; | 280 fType = Type::kEmpty; |
| 278 } else if (fPath.get()->isRRect(&fRRect, &fRRectDir, &fRRectStart)) { | 281 } else if (fPath.get()->isRRect(&fRRect, &fRRectDir, &fRRectStart)) { |
| 279 // Currently SkPath does not acknowledge that empty, rect, or oval subty pes as rrects. | 282 // Currently SkPath does not acknowledge that empty, rect, or oval subty pes as rrects. |
| 280 SkASSERT(!fRRect.isEmpty()); | 283 SkASSERT(!fRRect.isEmpty()); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 364 return; | 367 return; |
| 365 } | 368 } |
| 366 if (!this->style().hasPathEffect()) { | 369 if (!this->style().hasPathEffect()) { |
| 367 fRRectDir = kDefaultRRectDir; | 370 fRRectDir = kDefaultRRectDir; |
| 368 fRRectStart = kDefaultRRectStart; | 371 fRRectStart = kDefaultRRectStart; |
| 369 } else if (fStyle.isDashed()) { | 372 } else if (fStyle.isDashed()) { |
| 370 // Dashing ignores the inverseness (currently). skbug.com/5421 | 373 // Dashing ignores the inverseness (currently). skbug.com/5421 |
| 371 fRRectIsInverted = false; | 374 fRRectIsInverted = false; |
| 372 } | 375 } |
| 373 } | 376 } |
| OLD | NEW |