OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2010 Google Inc. | 2 * Copyright 2010 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 #ifndef GrContext_DEFINED | 8 #ifndef GrContext_DEFINED |
9 #define GrContext_DEFINED | 9 #define GrContext_DEFINED |
10 | 10 |
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 class AutoMatrix : GrNoncopyable { | 671 class AutoMatrix : GrNoncopyable { |
672 public: | 672 public: |
673 AutoMatrix() : fContext(NULL) {} | 673 AutoMatrix() : fContext(NULL) {} |
674 | 674 |
675 ~AutoMatrix() { this->restore(); } | 675 ~AutoMatrix() { this->restore(); } |
676 | 676 |
677 /** | 677 /** |
678 * Initializes by pre-concat'ing the context's current matrix with the p
reConcat param. | 678 * Initializes by pre-concat'ing the context's current matrix with the p
reConcat param. |
679 */ | 679 */ |
680 void setPreConcat(GrContext* context, const SkMatrix& preConcat, GrPaint
* paint = NULL) { | 680 void setPreConcat(GrContext* context, const SkMatrix& preConcat, GrPaint
* paint = NULL) { |
681 GrAssert(NULL != context); | 681 SkASSERT(NULL != context); |
682 | 682 |
683 this->restore(); | 683 this->restore(); |
684 | 684 |
685 fContext = context; | 685 fContext = context; |
686 fMatrix = context->getMatrix(); | 686 fMatrix = context->getMatrix(); |
687 this->preConcat(preConcat, paint); | 687 this->preConcat(preConcat, paint); |
688 } | 688 } |
689 | 689 |
690 /** | 690 /** |
691 * Sets the context's matrix to identity. Returns false if the inverse m
atrix is required to | 691 * Sets the context's matrix to identity. Returns false if the inverse m
atrix is required to |
692 * update a paint but the matrix cannot be inverted. | 692 * update a paint but the matrix cannot be inverted. |
693 */ | 693 */ |
694 bool setIdentity(GrContext* context, GrPaint* paint = NULL) { | 694 bool setIdentity(GrContext* context, GrPaint* paint = NULL) { |
695 GrAssert(NULL != context); | 695 SkASSERT(NULL != context); |
696 | 696 |
697 this->restore(); | 697 this->restore(); |
698 | 698 |
699 if (NULL != paint) { | 699 if (NULL != paint) { |
700 if (!paint->localCoordChangeInverse(context->getMatrix())) { | 700 if (!paint->localCoordChangeInverse(context->getMatrix())) { |
701 return false; | 701 return false; |
702 } | 702 } |
703 } | 703 } |
704 fMatrix = context->getMatrix(); | 704 fMatrix = context->getMatrix(); |
705 fContext = context; | 705 fContext = context; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
765 public: | 765 public: |
766 // This enum exists to require a caller of the constructor to acknowledg
e that the clip will | 766 // This enum exists to require a caller of the constructor to acknowledg
e that the clip will |
767 // initially be wide open. It also could be extended if there are other
desirable initial | 767 // initially be wide open. It also could be extended if there are other
desirable initial |
768 // clip states. | 768 // clip states. |
769 enum InitialClip { | 769 enum InitialClip { |
770 kWideOpen_InitialClip, | 770 kWideOpen_InitialClip, |
771 }; | 771 }; |
772 | 772 |
773 AutoClip(GrContext* context, InitialClip initialState) | 773 AutoClip(GrContext* context, InitialClip initialState) |
774 : fContext(context) { | 774 : fContext(context) { |
775 GrAssert(kWideOpen_InitialClip == initialState); | 775 SkASSERT(kWideOpen_InitialClip == initialState); |
776 fNewClipData.fClipStack = &fNewClipStack; | 776 fNewClipData.fClipStack = &fNewClipStack; |
777 | 777 |
778 fOldClip = context->getClip(); | 778 fOldClip = context->getClip(); |
779 context->setClip(&fNewClipData); | 779 context->setClip(&fNewClipData); |
780 } | 780 } |
781 | 781 |
782 AutoClip(GrContext* context, const SkRect& newClipRect) | 782 AutoClip(GrContext* context, const SkRect& newClipRect) |
783 : fContext(context) | 783 : fContext(context) |
784 , fNewClipStack(newClipRect) { | 784 , fNewClipStack(newClipRect) { |
785 fNewClipData.fClipStack = &fNewClipStack; | 785 fNewClipData.fClipStack = &fNewClipStack; |
(...skipping 15 matching lines...) Expand all Loading... |
801 GrClipData fNewClipData; | 801 GrClipData fNewClipData; |
802 }; | 802 }; |
803 | 803 |
804 class AutoWideOpenIdentityDraw { | 804 class AutoWideOpenIdentityDraw { |
805 public: | 805 public: |
806 AutoWideOpenIdentityDraw(GrContext* ctx, GrRenderTarget* rt) | 806 AutoWideOpenIdentityDraw(GrContext* ctx, GrRenderTarget* rt) |
807 : fAutoClip(ctx, AutoClip::kWideOpen_InitialClip) | 807 : fAutoClip(ctx, AutoClip::kWideOpen_InitialClip) |
808 , fAutoRT(ctx, rt) { | 808 , fAutoRT(ctx, rt) { |
809 fAutoMatrix.setIdentity(ctx); | 809 fAutoMatrix.setIdentity(ctx); |
810 // should never fail with no paint param. | 810 // should never fail with no paint param. |
811 GrAssert(fAutoMatrix.succeeded()); | 811 SkASSERT(fAutoMatrix.succeeded()); |
812 } | 812 } |
813 | 813 |
814 private: | 814 private: |
815 AutoClip fAutoClip; | 815 AutoClip fAutoClip; |
816 AutoRenderTarget fAutoRT; | 816 AutoRenderTarget fAutoRT; |
817 AutoMatrix fAutoMatrix; | 817 AutoMatrix fAutoMatrix; |
818 }; | 818 }; |
819 | 819 |
820 /////////////////////////////////////////////////////////////////////////// | 820 /////////////////////////////////////////////////////////////////////////// |
821 // Functions intended for internal use only. | 821 // Functions intended for internal use only. |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
980 if (NULL == fTexture) { | 980 if (NULL == fTexture) { |
981 return NULL; | 981 return NULL; |
982 } | 982 } |
983 GrTexture* texture = fTexture; | 983 GrTexture* texture = fTexture; |
984 fTexture = NULL; | 984 fTexture = NULL; |
985 | 985 |
986 // This GrAutoScratchTexture has a ref from lockAndRefScratchTexture, wh
ich we give up now. | 986 // This GrAutoScratchTexture has a ref from lockAndRefScratchTexture, wh
ich we give up now. |
987 // The cache also has a ref which we are lending to the caller of detach
(). When the caller | 987 // The cache also has a ref which we are lending to the caller of detach
(). When the caller |
988 // lets go of the ref and the ref count goes to 0 internal_dispose will
see this flag is | 988 // lets go of the ref and the ref count goes to 0 internal_dispose will
see this flag is |
989 // set and re-ref the texture, thereby restoring the cache's ref. | 989 // set and re-ref the texture, thereby restoring the cache's ref. |
990 GrAssert(texture->getRefCnt() > 1); | 990 SkASSERT(texture->getRefCnt() > 1); |
991 texture->setFlag((GrTextureFlags) GrTexture::kReturnToCache_FlagBit); | 991 texture->setFlag((GrTextureFlags) GrTexture::kReturnToCache_FlagBit); |
992 texture->unref(); | 992 texture->unref(); |
993 GrAssert(NULL != texture->getCacheEntry()); | 993 SkASSERT(NULL != texture->getCacheEntry()); |
994 | 994 |
995 return texture; | 995 return texture; |
996 } | 996 } |
997 | 997 |
998 GrTexture* set(GrContext* context, | 998 GrTexture* set(GrContext* context, |
999 const GrTextureDesc& desc, | 999 const GrTextureDesc& desc, |
1000 GrContext::ScratchTexMatch match = GrContext::kApprox_Scratch
TexMatch) { | 1000 GrContext::ScratchTexMatch match = GrContext::kApprox_Scratch
TexMatch) { |
1001 this->reset(); | 1001 this->reset(); |
1002 | 1002 |
1003 fContext = context; | 1003 fContext = context; |
1004 if (NULL != fContext) { | 1004 if (NULL != fContext) { |
1005 fTexture = fContext->lockAndRefScratchTexture(desc, match); | 1005 fTexture = fContext->lockAndRefScratchTexture(desc, match); |
1006 if (NULL == fTexture) { | 1006 if (NULL == fTexture) { |
1007 fContext = NULL; | 1007 fContext = NULL; |
1008 } | 1008 } |
1009 return fTexture; | 1009 return fTexture; |
1010 } else { | 1010 } else { |
1011 return NULL; | 1011 return NULL; |
1012 } | 1012 } |
1013 } | 1013 } |
1014 | 1014 |
1015 GrTexture* texture() { return fTexture; } | 1015 GrTexture* texture() { return fTexture; } |
1016 | 1016 |
1017 private: | 1017 private: |
1018 GrContext* fContext; | 1018 GrContext* fContext; |
1019 GrTexture* fTexture; | 1019 GrTexture* fTexture; |
1020 }; | 1020 }; |
1021 | 1021 |
1022 #endif | 1022 #endif |
OLD | NEW |