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 GrDrawTarget_DEFINED | 8 #ifndef GrDrawTarget_DEFINED |
9 #define GrDrawTarget_DEFINED | 9 #define GrDrawTarget_DEFINED |
10 | 10 |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 void drawNonIndexed(GrPrimitiveType type, | 319 void drawNonIndexed(GrPrimitiveType type, |
320 int startVertex, | 320 int startVertex, |
321 int vertexCount, | 321 int vertexCount, |
322 const SkRect* devBounds = NULL); | 322 const SkRect* devBounds = NULL); |
323 | 323 |
324 /** | 324 /** |
325 * Draws path into the stencil buffer. The fill must be either even/odd or | 325 * Draws path into the stencil buffer. The fill must be either even/odd or |
326 * winding (not inverse or hairline). It will respect the HW antialias flag | 326 * winding (not inverse or hairline). It will respect the HW antialias flag |
327 * on the draw state (if possible in the 3D API). | 327 * on the draw state (if possible in the 3D API). |
328 */ | 328 */ |
329 void stencilPath(const GrPath*, const SkStrokeRec& stroke, SkPath::FillType
fill); | 329 void stencilPath(const GrPath*, SkPath::FillType fill); |
330 | 330 |
331 /** | 331 /** |
332 * Fills a path. Fill must not be a hairline. It will respect the HW | 332 * Draws a path. Fill must not be a hairline. It will respect the HW |
333 * antialias flag on the draw state (if possible in the 3D API). | 333 * antialias flag on the draw state (if possible in the 3D API). |
334 */ | 334 */ |
335 void fillPath(const GrPath*, const SkStrokeRec& stroke, SkPath::FillType fil
l); | 335 void drawPath(const GrPath*, SkPath::FillType fill); |
336 | 336 |
337 /** | 337 /** |
338 * Helper function for drawing rects. It performs a geometry src push and po
p | 338 * Helper function for drawing rects. It performs a geometry src push and po
p |
339 * and thus will finalize any reserved geometry. | 339 * and thus will finalize any reserved geometry. |
340 * | 340 * |
341 * @param rect the rect to draw | 341 * @param rect the rect to draw |
342 * @param matrix optional matrix applied to rect (before viewMatrix) | 342 * @param matrix optional matrix applied to rect (before viewMatrix) |
343 * @param localRect optional rect that specifies local coords to map onto | 343 * @param localRect optional rect that specifies local coords to map onto |
344 * rect. If NULL then rect serves as the local coords. | 344 * rect. If NULL then rect serves as the local coords. |
345 * @param localMatrix optional matrix applied to localRect. If | 345 * @param localMatrix optional matrix applied to localRect. If |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 * is intended to give an application some recourse when resources are low. | 448 * is intended to give an application some recourse when resources are low. |
449 */ | 449 */ |
450 virtual void purgeResources() {}; | 450 virtual void purgeResources() {}; |
451 | 451 |
452 /** | 452 /** |
453 * For subclass internal use to invoke a call to onDraw(). See DrawInfo belo
w. | 453 * For subclass internal use to invoke a call to onDraw(). See DrawInfo belo
w. |
454 */ | 454 */ |
455 void executeDraw(const DrawInfo& info) { this->onDraw(info); } | 455 void executeDraw(const DrawInfo& info) { this->onDraw(info); } |
456 | 456 |
457 /** | 457 /** |
458 * For subclass internal use to invoke a call to onFillPath(). | 458 * For subclass internal use to invoke a call to onDrawPath(). |
459 */ | 459 */ |
460 void executeFillPath(const GrPath* path, const SkStrokeRec& stroke, | 460 void executeDrawPath(const GrPath* path, SkPath::FillType fill, |
461 SkPath::FillType fill, const GrDeviceCoordTexture* dstC
opy) { | 461 const GrDeviceCoordTexture* dstCopy) { |
462 this->onFillPath(path, stroke, fill, dstCopy); | 462 this->onDrawPath(path, fill, dstCopy); |
463 } | 463 } |
464 | 464 |
465 //////////////////////////////////////////////////////////////////////////// | 465 //////////////////////////////////////////////////////////////////////////// |
466 | 466 |
467 /** | 467 /** |
468 * See AutoStateRestore below. | 468 * See AutoStateRestore below. |
469 */ | 469 */ |
470 enum ASRInit { | 470 enum ASRInit { |
471 kPreserve_ASRInit, | 471 kPreserve_ASRInit, |
472 kReset_ASRInit | 472 kReset_ASRInit |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
831 // Implementation of drawRect. The geometry src and vertex attribs will alre
ady | 831 // Implementation of drawRect. The geometry src and vertex attribs will alre
ady |
832 // be saved before this is called and restored afterwards. A subclass may ov
erride | 832 // be saved before this is called and restored afterwards. A subclass may ov
erride |
833 // this to perform more optimal rect rendering. Its draws should be funneled
through | 833 // this to perform more optimal rect rendering. Its draws should be funneled
through |
834 // one of the public GrDrawTarget draw methods (e.g. drawNonIndexed, | 834 // one of the public GrDrawTarget draw methods (e.g. drawNonIndexed, |
835 // drawIndexedInstances, ...). The base class draws a two triangle fan using | 835 // drawIndexedInstances, ...). The base class draws a two triangle fan using |
836 // drawNonIndexed from reserved vertex space. | 836 // drawNonIndexed from reserved vertex space. |
837 virtual void onDrawRect(const SkRect& rect, | 837 virtual void onDrawRect(const SkRect& rect, |
838 const SkMatrix* matrix, | 838 const SkMatrix* matrix, |
839 const SkRect* localRect, | 839 const SkRect* localRect, |
840 const SkMatrix* localMatrix); | 840 const SkMatrix* localMatrix); |
841 virtual void onStencilPath(const GrPath*, const SkStrokeRec& stroke, SkPath:
:FillType fill) = 0; | 841 |
842 virtual void onFillPath(const GrPath*, const SkStrokeRec& stroke, SkPath::Fi
llType fill, | 842 virtual void onStencilPath(const GrPath*, SkPath::FillType) = 0; |
| 843 virtual void onDrawPath(const GrPath*, SkPath::FillType, |
843 const GrDeviceCoordTexture* dstCopy) = 0; | 844 const GrDeviceCoordTexture* dstCopy) = 0; |
844 | 845 |
845 // helpers for reserving vertex and index space. | 846 // helpers for reserving vertex and index space. |
846 bool reserveVertexSpace(size_t vertexSize, | 847 bool reserveVertexSpace(size_t vertexSize, |
847 int vertexCount, | 848 int vertexCount, |
848 void** vertices); | 849 void** vertices); |
849 bool reserveIndexSpace(int indexCount, void** indices); | 850 bool reserveIndexSpace(int indexCount, void** indices); |
850 | 851 |
851 // called by drawIndexed and drawNonIndexed. Use a negative indexCount to | 852 // called by drawIndexed and drawNonIndexed. Use a negative indexCount to |
852 // indicate non-indexed drawing. | 853 // indicate non-indexed drawing. |
(...skipping 21 matching lines...) Expand all Loading... |
874 const GrClipData* fClip; | 875 const GrClipData* fClip; |
875 GrDrawState* fDrawState; | 876 GrDrawState* fDrawState; |
876 GrDrawState fDefaultDraw
State; | 877 GrDrawState fDefaultDraw
State; |
877 // The context owns us, not vice-versa, so this ptr is not ref'ed by DrawTar
get. | 878 // The context owns us, not vice-versa, so this ptr is not ref'ed by DrawTar
get. |
878 GrContext* fContext; | 879 GrContext* fContext; |
879 | 880 |
880 typedef SkRefCnt INHERITED; | 881 typedef SkRefCnt INHERITED; |
881 }; | 882 }; |
882 | 883 |
883 #endif | 884 #endif |
OLD | NEW |