| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2010 Google Inc. | 3 * Copyright 2010 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 | 9 |
| 10 #ifndef GrDrawTarget_DEFINED | 10 #ifndef GrDrawTarget_DEFINED |
| (...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 648 void adjustStartVertex(int vertexOffset); | 648 void adjustStartVertex(int vertexOffset); |
| 649 // shifts the start index | 649 // shifts the start index |
| 650 void adjustStartIndex(int indexOffset); | 650 void adjustStartIndex(int indexOffset); |
| 651 | 651 |
| 652 void setDevBounds(const SkRect& bounds) { | 652 void setDevBounds(const SkRect& bounds) { |
| 653 fDevBoundsStorage = bounds; | 653 fDevBoundsStorage = bounds; |
| 654 fDevBounds = &fDevBoundsStorage; | 654 fDevBounds = &fDevBoundsStorage; |
| 655 } | 655 } |
| 656 const SkRect* getDevBounds() const { return fDevBounds; } | 656 const SkRect* getDevBounds() const { return fDevBounds; } |
| 657 | 657 |
| 658 // NULL if no copy of the dst is needed for the draw. |
| 659 const GrDeviceCoordTexture* getDstCopy() const { |
| 660 if (NULL != fDstCopy.texture()) { |
| 661 return &fDstCopy; |
| 662 } else { |
| 663 return NULL; |
| 664 } |
| 665 } |
| 666 |
| 658 private: | 667 private: |
| 659 DrawInfo() { fDevBounds = NULL; } | 668 DrawInfo() { fDevBounds = NULL; } |
| 660 | 669 |
| 661 friend class GrDrawTarget; | 670 friend class GrDrawTarget; |
| 662 | 671 |
| 663 GrPrimitiveType fPrimitiveType; | 672 GrPrimitiveType fPrimitiveType; |
| 664 | 673 |
| 665 int fStartVertex; | 674 int fStartVertex; |
| 666 int fStartIndex; | 675 int fStartIndex; |
| 667 int fVertexCount; | 676 int fVertexCount; |
| 668 int fIndexCount; | 677 int fIndexCount; |
| 669 | 678 |
| 670 int fInstanceCount; | 679 int fInstanceCount; |
| 671 int fVerticesPerInstance; | 680 int fVerticesPerInstance; |
| 672 int fIndicesPerInstance; | 681 int fIndicesPerInstance; |
| 673 | 682 |
| 674 SkRect fDevBoundsStorage; | 683 SkRect fDevBoundsStorage; |
| 675 SkRect* fDevBounds; | 684 SkRect* fDevBounds; |
| 685 |
| 686 GrDeviceCoordTexture fDstCopy; |
| 676 }; | 687 }; |
| 677 | 688 |
| 678 private: | 689 private: |
| 679 // A subclass can optionally overload this function to be notified before | 690 // A subclass can optionally overload this function to be notified before |
| 680 // vertex and index space is reserved. | 691 // vertex and index space is reserved. |
| 681 virtual void willReserveVertexAndIndexSpace(int vertexCount, int indexCount)
{} | 692 virtual void willReserveVertexAndIndexSpace(int vertexCount, int indexCount)
{} |
| 682 | 693 |
| 683 // implemented by subclass to allocate space for reserved geom | 694 // implemented by subclass to allocate space for reserved geom |
| 684 virtual bool onReserveVertexSpace(size_t vertexSize, int vertexCount, void**
vertices) = 0; | 695 virtual bool onReserveVertexSpace(size_t vertexSize, int vertexCount, void**
vertices) = 0; |
| 685 virtual bool onReserveIndexSpace(int indexCount, void** indices) = 0; | 696 virtual bool onReserveIndexSpace(int indexCount, void** indices) = 0; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 707 | 718 |
| 708 // called by drawIndexed and drawNonIndexed. Use a negative indexCount to | 719 // called by drawIndexed and drawNonIndexed. Use a negative indexCount to |
| 709 // indicate non-indexed drawing. | 720 // indicate non-indexed drawing. |
| 710 bool checkDraw(GrPrimitiveType type, int startVertex, | 721 bool checkDraw(GrPrimitiveType type, int startVertex, |
| 711 int startIndex, int vertexCount, | 722 int startIndex, int vertexCount, |
| 712 int indexCount) const; | 723 int indexCount) const; |
| 713 // called when setting a new vert/idx source to unref prev vb/ib | 724 // called when setting a new vert/idx source to unref prev vb/ib |
| 714 void releasePreviousVertexSource(); | 725 void releasePreviousVertexSource(); |
| 715 void releasePreviousIndexSource(); | 726 void releasePreviousIndexSource(); |
| 716 | 727 |
| 728 // Makes a copy of the dst if it is necessary for the draw. Returns false if
a copy is required |
| 729 // but couldn't be made. Otherwise, returns true. |
| 730 bool setupDstReadIfNecessary(DrawInfo* info); |
| 731 |
| 717 enum { | 732 enum { |
| 718 kPreallocGeoSrcStateStackCnt = 4, | 733 kPreallocGeoSrcStateStackCnt = 4, |
| 719 }; | 734 }; |
| 720 SkSTArray<kPreallocGeoSrcStateStackCnt, GeometrySrcState, true> fGeoSrcState
Stack; | 735 SkSTArray<kPreallocGeoSrcStateStackCnt, GeometrySrcState, true> fGeoSrcState
Stack; |
| 721 const GrClipData* fClip; | 736 const GrClipData* fClip; |
| 722 GrDrawState* fDrawState; | 737 GrDrawState* fDrawState; |
| 723 GrDrawState fDefaultDraw
State; | 738 GrDrawState fDefaultDraw
State; |
| 724 // The context owns us, not vice-versa, so this ptr is not ref'ed by DrawTar
get. | 739 // The context owns us, not vice-versa, so this ptr is not ref'ed by DrawTar
get. |
| 725 GrContext* fContext; | 740 GrContext* fContext; |
| 726 | 741 |
| 727 typedef GrRefCnt INHERITED; | 742 typedef GrRefCnt INHERITED; |
| 728 }; | 743 }; |
| 729 | 744 |
| 730 #endif | 745 #endif |
| OLD | NEW |