| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "SkBuffer.h" | 8 #include "SkBuffer.h" |
| 9 #include "SkOnce.h" | 9 #include "SkOnce.h" |
| 10 #include "SkPath.h" | 10 #include "SkPath.h" |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 this->fVerbs[~fVerbCnt] = verb; | 282 this->fVerbs[~fVerbCnt] = verb; |
| 283 SkPoint* ret = fPoints + fPointCnt; | 283 SkPoint* ret = fPoints + fPointCnt; |
| 284 fVerbCnt += 1; | 284 fVerbCnt += 1; |
| 285 fPointCnt += pCnt; | 285 fPointCnt += pCnt; |
| 286 fFreeSpace -= space; | 286 fFreeSpace -= space; |
| 287 fBoundsIsDirty = true; // this also invalidates fIsFinite | 287 fBoundsIsDirty = true; // this also invalidates fIsFinite |
| 288 SkDEBUGCODE(this->validate();) | 288 SkDEBUGCODE(this->validate();) |
| 289 return ret; | 289 return ret; |
| 290 } | 290 } |
| 291 | 291 |
| 292 int32_t SkPathRef::genID() const { | 292 uint32_t SkPathRef::genID() const { |
| 293 SkASSERT(!fEditorsAttached); | 293 SkASSERT(!fEditorsAttached); |
| 294 static const uint32_t kMask = (static_cast<int64_t>(1) << SkPath::kPathRefGe
nIDBitCnt) - 1; |
| 294 if (!fGenerationID) { | 295 if (!fGenerationID) { |
| 295 if (0 == fPointCnt && 0 == fVerbCnt) { | 296 if (0 == fPointCnt && 0 == fVerbCnt) { |
| 296 fGenerationID = kEmptyGenID; | 297 fGenerationID = kEmptyGenID; |
| 297 } else { | 298 } else { |
| 298 static int32_t gPathRefGenerationID; | 299 static int32_t gPathRefGenerationID; |
| 299 // do a loop in case our global wraps around, as we never want to re
turn a 0 or the | 300 // do a loop in case our global wraps around, as we never want to re
turn a 0 or the |
| 300 // empty ID | 301 // empty ID |
| 301 do { | 302 do { |
| 302 fGenerationID = sk_atomic_inc(&gPathRefGenerationID) + 1; | 303 fGenerationID = (sk_atomic_inc(&gPathRefGenerationID) + 1) & kMa
sk; |
| 303 } while (fGenerationID <= kEmptyGenID); | 304 } while (fGenerationID <= kEmptyGenID); |
| 304 } | 305 } |
| 305 } | 306 } |
| 306 return fGenerationID; | 307 return fGenerationID; |
| 307 } | 308 } |
| 308 | 309 |
| 309 #ifdef SK_DEBUG | 310 #ifdef SK_DEBUG |
| 310 void SkPathRef::validate() const { | 311 void SkPathRef::validate() const { |
| 311 this->INHERITED::validate(); | 312 this->INHERITED::validate(); |
| 312 SkASSERT(static_cast<ptrdiff_t>(fFreeSpace) >= 0); | 313 SkASSERT(static_cast<ptrdiff_t>(fFreeSpace) >= 0); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 329 fPoints[i].fY - fBounds.fBottom < SK_ScalarNearlyZero); | 330 fPoints[i].fY - fBounds.fBottom < SK_ScalarNearlyZero); |
| 330 if (!fPoints[i].isFinite()) { | 331 if (!fPoints[i].isFinite()) { |
| 331 isFinite = false; | 332 isFinite = false; |
| 332 } | 333 } |
| 333 } | 334 } |
| 334 SkASSERT(SkToBool(fIsFinite) == isFinite); | 335 SkASSERT(SkToBool(fIsFinite) == isFinite); |
| 335 } | 336 } |
| 336 #endif | 337 #endif |
| 337 } | 338 } |
| 338 #endif | 339 #endif |
| OLD | NEW |