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

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

Issue 371363004: Add SkRacy (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: check unique define + volatile Created 6 years, 5 months 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 | « include/core/SkDynamicAnnotations.h ('k') | include/core/SkPathRef.h » ('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 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
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 9
10 #ifndef SkMatrix_DEFINED 10 #ifndef SkMatrix_DEFINED
11 #define SkMatrix_DEFINED 11 #define SkMatrix_DEFINED
12 12
13 #include "SkDynamicAnnotations.h"
13 #include "SkRect.h" 14 #include "SkRect.h"
14 15
15 class SkString; 16 class SkString;
16 17
17 // TODO: can we remove these 3 (need to check chrome/android) 18 // TODO: can we remove these 3 (need to check chrome/android)
18 typedef SkScalar SkPersp; 19 typedef SkScalar SkPersp;
19 #define SkScalarToPersp(x) (x) 20 #define SkScalarToPersp(x) (x)
20 #define SkPerspToScalar(x) (x) 21 #define SkPerspToScalar(x) (x)
21 22
22 /** \class SkMatrix 23 /** \class SkMatrix
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 kPerspective_Mask, 637 kPerspective_Mask,
637 638
638 kAllMasks = kTranslate_Mask | 639 kAllMasks = kTranslate_Mask |
639 kScale_Mask | 640 kScale_Mask |
640 kAffine_Mask | 641 kAffine_Mask |
641 kPerspective_Mask | 642 kPerspective_Mask |
642 kRectStaysRect_Mask 643 kRectStaysRect_Mask
643 }; 644 };
644 645
645 SkScalar fMat[9]; 646 SkScalar fMat[9];
646 mutable uint32_t fTypeMask; 647 mutable SkTRacy<uint32_t> fTypeMask;
647 648
648 uint8_t computeTypeMask() const; 649 uint8_t computeTypeMask() const;
649 uint8_t computePerspectiveTypeMask() const; 650 uint8_t computePerspectiveTypeMask() const;
650 651
651 void setTypeMask(int mask) { 652 void setTypeMask(int mask) {
652 // allow kUnknown or a valid mask 653 // allow kUnknown or a valid mask
653 SkASSERT(kUnknown_Mask == mask || (mask & kAllMasks) == mask || 654 SkASSERT(kUnknown_Mask == mask || (mask & kAllMasks) == mask ||
654 ((kUnknown_Mask | kOnlyPerspectiveValid_Mask) & mask) 655 ((kUnknown_Mask | kOnlyPerspectiveValid_Mask) & mask)
655 == (kUnknown_Mask | kOnlyPerspectiveValid_Mask)); 656 == (kUnknown_Mask | kOnlyPerspectiveValid_Mask));
656 fTypeMask = SkToU8(mask); 657 fTypeMask = SkToU8(mask);
657 } 658 }
658 659
659 void orTypeMask(int mask) { 660 void orTypeMask(int mask) {
660 SkASSERT((mask & kORableMasks) == mask); 661 SkASSERT((mask & kORableMasks) == mask);
661 fTypeMask = SkToU8(fTypeMask | mask); 662 fTypeMask = SkToU8(fTypeMask | mask);
662 } 663 }
663 664
664 void clearTypeMask(int mask) { 665 void clearTypeMask(int mask) {
665 // only allow a valid mask 666 // only allow a valid mask
666 SkASSERT((mask & kAllMasks) == mask); 667 SkASSERT((mask & kAllMasks) == mask);
667 fTypeMask &= ~mask; 668 fTypeMask = fTypeMask & ~mask;
668 } 669 }
669 670
670 TypeMask getPerspectiveTypeMaskOnly() const { 671 TypeMask getPerspectiveTypeMaskOnly() const {
671 if ((fTypeMask & kUnknown_Mask) && 672 if ((fTypeMask & kUnknown_Mask) &&
672 !(fTypeMask & kOnlyPerspectiveValid_Mask)) { 673 !(fTypeMask & kOnlyPerspectiveValid_Mask)) {
673 fTypeMask = this->computePerspectiveTypeMask(); 674 fTypeMask = this->computePerspectiveTypeMask();
674 } 675 }
675 return (TypeMask)(fTypeMask & 0xF); 676 return (TypeMask)(fTypeMask & 0xF);
676 } 677 }
677 678
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 static void RotTrans_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], 711 static void RotTrans_pts(const SkMatrix&, SkPoint dst[], const SkPoint[],
711 int count); 712 int count);
712 static void Persp_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], int); 713 static void Persp_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], int);
713 714
714 static const MapPtsProc gMapPtsProcs[]; 715 static const MapPtsProc gMapPtsProcs[];
715 716
716 friend class SkPerspIter; 717 friend class SkPerspIter;
717 }; 718 };
718 719
719 #endif 720 #endif
OLDNEW
« no previous file with comments | « include/core/SkDynamicAnnotations.h ('k') | include/core/SkPathRef.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698