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 |
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 kAllMasks = kTranslate_Mask | | 639 kAllMasks = kTranslate_Mask | |
640 kScale_Mask | | 640 kScale_Mask | |
641 kAffine_Mask | | 641 kAffine_Mask | |
642 kPerspective_Mask | | 642 kPerspective_Mask | |
643 kRectStaysRect_Mask | 643 kRectStaysRect_Mask |
644 }; | 644 }; |
645 | 645 |
646 SkScalar fMat[9]; | 646 SkScalar fMat[9]; |
647 mutable SkTRacy<uint32_t> fTypeMask; | 647 mutable SkTRacy<uint32_t> fTypeMask; |
648 | 648 |
| 649 void setScaleTranslate(SkScalar sx, SkScalar sy, SkScalar tx, SkScalar ty) { |
| 650 fMat[kMScaleX] = sx; |
| 651 fMat[kMSkewX] = 0; |
| 652 fMat[kMTransX] = tx; |
| 653 |
| 654 fMat[kMSkewY] = 0; |
| 655 fMat[kMScaleY] = sy; |
| 656 fMat[kMTransY] = ty; |
| 657 |
| 658 fMat[kMPersp0] = 0; |
| 659 fMat[kMPersp1] = 0; |
| 660 fMat[kMPersp2] = 1; |
| 661 |
| 662 unsigned mask = 0; |
| 663 if (sx != 1 || sy != 1) { |
| 664 mask |= kScale_Mask; |
| 665 } |
| 666 if (tx || ty) { |
| 667 mask |= kTranslate_Mask; |
| 668 } |
| 669 this->setTypeMask(mask | kRectStaysRect_Mask); |
| 670 } |
| 671 |
649 uint8_t computeTypeMask() const; | 672 uint8_t computeTypeMask() const; |
650 uint8_t computePerspectiveTypeMask() const; | 673 uint8_t computePerspectiveTypeMask() const; |
651 | 674 |
652 void setTypeMask(int mask) { | 675 void setTypeMask(int mask) { |
653 // allow kUnknown or a valid mask | 676 // allow kUnknown or a valid mask |
654 SkASSERT(kUnknown_Mask == mask || (mask & kAllMasks) == mask || | 677 SkASSERT(kUnknown_Mask == mask || (mask & kAllMasks) == mask || |
655 ((kUnknown_Mask | kOnlyPerspectiveValid_Mask) & mask) | 678 ((kUnknown_Mask | kOnlyPerspectiveValid_Mask) & mask) |
656 == (kUnknown_Mask | kOnlyPerspectiveValid_Mask)); | 679 == (kUnknown_Mask | kOnlyPerspectiveValid_Mask)); |
657 fTypeMask = SkToU8(mask); | 680 fTypeMask = SkToU8(mask); |
658 } | 681 } |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
711 static void RotTrans_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], | 734 static void RotTrans_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], |
712 int count); | 735 int count); |
713 static void Persp_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], int); | 736 static void Persp_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], int); |
714 | 737 |
715 static const MapPtsProc gMapPtsProcs[]; | 738 static const MapPtsProc gMapPtsProcs[]; |
716 | 739 |
717 friend class SkPerspIter; | 740 friend class SkPerspIter; |
718 }; | 741 }; |
719 | 742 |
720 #endif | 743 #endif |
OLD | NEW |