Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: include/core/SkPathRef.h

Issue 803153003: Fix rrects that are large enough that we lose/gain a bit when we add the radius to a bounds coordin… (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: generalize test for all edges and axes Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/core/SkPath.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 */ 246 */
247 uint32_t writeSize() const; 247 uint32_t writeSize() const;
248 248
249 /** 249 /**
250 * Gets an ID that uniquely identifies the contents of the path ref. If two path refs have the 250 * Gets an ID that uniquely identifies the contents of the path ref. If two path refs have the
251 * same ID then they have the same verbs and points. However, two path refs may have the same 251 * same ID then they have the same verbs and points. However, two path refs may have the same
252 * contents but different genIDs. 252 * contents but different genIDs.
253 */ 253 */
254 uint32_t genID() const; 254 uint32_t genID() const;
255 255
256 SkDEBUGCODE(void validate() const;)
257
256 private: 258 private:
257 enum SerializationOffsets { 259 enum SerializationOffsets {
258 kIsFinite_SerializationShift = 25, // requires 1 bit 260 kIsFinite_SerializationShift = 25, // requires 1 bit
259 kIsOval_SerializationShift = 24, // requires 1 bit 261 kIsOval_SerializationShift = 24, // requires 1 bit
260 kSegmentMask_SerializationShift = 0 // requires 4 bits 262 kSegmentMask_SerializationShift = 0 // requires 4 bits
261 }; 263 };
262 264
263 SkPathRef() { 265 SkPathRef() {
264 fBoundsIsDirty = true; // this also invalidates fIsFinite 266 fBoundsIsDirty = true; // this also invalidates fIsFinite
265 fPointCnt = 0; 267 fPointCnt = 0;
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 return fVerbs - fVerbCnt; 410 return fVerbs - fVerbCnt;
409 } 411 }
410 412
411 /** 413 /**
412 * Gets the total amount of space allocated for verbs, points, and reserve. 414 * Gets the total amount of space allocated for verbs, points, and reserve.
413 */ 415 */
414 size_t currSize() const { 416 size_t currSize() const {
415 return reinterpret_cast<intptr_t>(fVerbs) - reinterpret_cast<intptr_t>(f Points); 417 return reinterpret_cast<intptr_t>(fVerbs) - reinterpret_cast<intptr_t>(f Points);
416 } 418 }
417 419
418 SkDEBUGCODE(void validate() const;)
419
420 /** 420 /**
421 * Called the first time someone calls CreateEmpty to actually create the si ngleton. 421 * Called the first time someone calls CreateEmpty to actually create the si ngleton.
422 */ 422 */
423 friend SkPathRef* sk_create_empty_pathref(); 423 friend SkPathRef* sk_create_empty_pathref();
424 424
425 void setIsOval(bool isOval) { fIsOval = isOval; } 425 void setIsOval(bool isOval) { fIsOval = isOval; }
426 426
427 SkPoint* getPoints() { 427 SkPoint* getPoints() {
428 SkDEBUGCODE(this->validate();) 428 SkDEBUGCODE(this->validate();)
429 fIsOval = false; 429 fIsOval = false;
(...skipping 22 matching lines...) Expand all
452 kEmptyGenID = 1, // GenID reserved for path ref with zero points and zer o verbs. 452 kEmptyGenID = 1, // GenID reserved for path ref with zero points and zer o verbs.
453 }; 453 };
454 mutable uint32_t fGenerationID; 454 mutable uint32_t fGenerationID;
455 SkDEBUGCODE(int32_t fEditorsAttached;) // assert that only one editor in use at any time. 455 SkDEBUGCODE(int32_t fEditorsAttached;) // assert that only one editor in use at any time.
456 456
457 friend class PathRefTest_Private; 457 friend class PathRefTest_Private;
458 typedef SkRefCnt INHERITED; 458 typedef SkRefCnt INHERITED;
459 }; 459 };
460 460
461 #endif 461 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkPath.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698