OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |