| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #ifndef SkPathRef_DEFINED | 9 #ifndef SkPathRef_DEFINED |
| 10 #define SkPathRef_DEFINED | 10 #define SkPathRef_DEFINED |
| 11 | 11 |
| 12 #include "SkDynamicAnnotations.h" | |
| 13 #include "SkMatrix.h" | 12 #include "SkMatrix.h" |
| 14 #include "SkPoint.h" | 13 #include "SkPoint.h" |
| 15 #include "SkRect.h" | 14 #include "SkRect.h" |
| 16 #include "SkRefCnt.h" | 15 #include "SkRefCnt.h" |
| 17 #include "SkTDArray.h" | 16 #include "SkTDArray.h" |
| 18 #include <stddef.h> // ptrdiff_t | 17 #include <stddef.h> // ptrdiff_t |
| 19 | 18 |
| 20 class SkRBuffer; | 19 class SkRBuffer; |
| 21 class SkWBuffer; | 20 class SkWBuffer; |
| 22 | 21 |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 } else { | 285 } else { |
| 287 return bounds->setBoundsCheck(ref.points(), count); | 286 return bounds->setBoundsCheck(ref.points(), count); |
| 288 } | 287 } |
| 289 } | 288 } |
| 290 | 289 |
| 291 // called, if dirty, by getBounds() | 290 // called, if dirty, by getBounds() |
| 292 void computeBounds() const { | 291 void computeBounds() const { |
| 293 SkDEBUGCODE(this->validate();) | 292 SkDEBUGCODE(this->validate();) |
| 294 SkASSERT(fBoundsIsDirty); | 293 SkASSERT(fBoundsIsDirty); |
| 295 | 294 |
| 296 fIsFinite = ComputePtBounds(fBounds.get(), *this); | 295 fIsFinite = ComputePtBounds(&fBounds, *this); |
| 297 fBoundsIsDirty = false; | 296 fBoundsIsDirty = false; |
| 298 } | 297 } |
| 299 | 298 |
| 300 void setBounds(const SkRect& rect) { | 299 void setBounds(const SkRect& rect) { |
| 301 SkASSERT(rect.fLeft <= rect.fRight && rect.fTop <= rect.fBottom); | 300 SkASSERT(rect.fLeft <= rect.fRight && rect.fTop <= rect.fBottom); |
| 302 fBounds = rect; | 301 fBounds = rect; |
| 303 fBoundsIsDirty = false; | 302 fBoundsIsDirty = false; |
| 304 fIsFinite = fBounds->isFinite(); | 303 fIsFinite = fBounds.isFinite(); |
| 305 } | 304 } |
| 306 | 305 |
| 307 /** Makes additional room but does not change the counts or change the genID
*/ | 306 /** Makes additional room but does not change the counts or change the genID
*/ |
| 308 void incReserve(int additionalVerbs, int additionalPoints) { | 307 void incReserve(int additionalVerbs, int additionalPoints) { |
| 309 SkDEBUGCODE(this->validate();) | 308 SkDEBUGCODE(this->validate();) |
| 310 size_t space = additionalVerbs * sizeof(uint8_t) + additionalPoints * si
zeof (SkPoint); | 309 size_t space = additionalVerbs * sizeof(uint8_t) + additionalPoints * si
zeof (SkPoint); |
| 311 this->makeSpace(space); | 310 this->makeSpace(space); |
| 312 SkDEBUGCODE(this->validate();) | 311 SkDEBUGCODE(this->validate();) |
| 313 } | 312 } |
| 314 | 313 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 SkPoint* getPoints() { | 425 SkPoint* getPoints() { |
| 427 SkDEBUGCODE(this->validate();) | 426 SkDEBUGCODE(this->validate();) |
| 428 fIsOval = false; | 427 fIsOval = false; |
| 429 return fPoints; | 428 return fPoints; |
| 430 } | 429 } |
| 431 | 430 |
| 432 enum { | 431 enum { |
| 433 kMinSize = 256, | 432 kMinSize = 256, |
| 434 }; | 433 }; |
| 435 | 434 |
| 436 mutable SkTRacy<SkRect> fBounds; | 435 mutable SkRect fBounds; |
| 437 mutable SkTRacy<uint8_t> fBoundsIsDirty; | 436 uint8_t fSegmentMask; |
| 438 mutable SkTRacy<SkBool8> fIsFinite; // only meaningful if bounds are
valid | 437 mutable uint8_t fBoundsIsDirty; |
| 439 | 438 mutable SkBool8 fIsFinite; // only meaningful if bounds are valid |
| 440 SkBool8 fIsOval; | 439 mutable SkBool8 fIsOval; |
| 441 uint8_t fSegmentMask; | |
| 442 | 440 |
| 443 SkPoint* fPoints; // points to begining of the allocation | 441 SkPoint* fPoints; // points to begining of the allocation |
| 444 uint8_t* fVerbs; // points just past the end of the allocation (v
erbs grow backwards) | 442 uint8_t* fVerbs; // points just past the end of the allocation (v
erbs grow backwards) |
| 445 int fVerbCnt; | 443 int fVerbCnt; |
| 446 int fPointCnt; | 444 int fPointCnt; |
| 447 size_t fFreeSpace; // redundant but saves computation | 445 size_t fFreeSpace; // redundant but saves computation |
| 448 SkTDArray<SkScalar> fConicWeights; | 446 SkTDArray<SkScalar> fConicWeights; |
| 449 | 447 |
| 450 enum { | 448 enum { |
| 451 kEmptyGenID = 1, // GenID reserved for path ref with zero points and zer
o verbs. | 449 kEmptyGenID = 1, // GenID reserved for path ref with zero points and zer
o verbs. |
| 452 }; | 450 }; |
| 453 mutable uint32_t fGenerationID; | 451 mutable uint32_t fGenerationID; |
| 454 SkDEBUGCODE(int32_t fEditorsAttached;) // assert that only one editor in use
at any time. | 452 SkDEBUGCODE(int32_t fEditorsAttached;) // assert that only one editor in use
at any time. |
| 455 | 453 |
| 456 friend class PathRefTest_Private; | 454 friend class PathRefTest_Private; |
| 457 typedef SkRefCnt INHERITED; | 455 typedef SkRefCnt INHERITED; |
| 458 }; | 456 }; |
| 459 | 457 |
| 460 #endif | 458 #endif |
| OLD | NEW |