Index: src/gpu/GrGpu.h |
diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h |
index cd7502e18ac3a0f5a0588d5c9aaafe1ab479d094..17b7b697e225f0095ab6df1a3498ceb83a37e5af 100644 |
--- a/src/gpu/GrGpu.h |
+++ b/src/gpu/GrGpu.h |
@@ -16,6 +16,7 @@ class GrContext; |
class GrGpuObject; |
class GrIndexBufferAllocPool; |
class GrPath; |
+class GrPathRange; |
class GrPathRenderer; |
class GrPathRendererChain; |
class GrStencilBuffer; |
@@ -138,6 +139,13 @@ public: |
GrPath* createPath(const SkPath& path, const SkStrokeRec& stroke); |
/** |
+ * Creates a path range object that can be used to draw multiple paths via |
+ * drawPaths(). It is only legal to call this if the caps report support for |
+ * path rendering. |
+ */ |
+ GrPathRange* createPathRange(size_t size, const SkStrokeRec&); |
+ |
+ /** |
* Returns an index buffer that can be used to render quads. |
* Six indices per quad: 0, 1, 2, 0, 2, 3, etc. |
* The max number of quads can be queried using GrIndexBuffer::maxQuads(). |
@@ -432,6 +440,7 @@ private: |
virtual GrVertexBuffer* onCreateVertexBuffer(size_t size, bool dynamic) = 0; |
virtual GrIndexBuffer* onCreateIndexBuffer(size_t size, bool dynamic) = 0; |
virtual GrPath* onCreatePath(const SkPath& path, const SkStrokeRec&) = 0; |
+ virtual GrPathRange* onCreatePathRange(size_t size, const SkStrokeRec&) = 0; |
// overridden by backend-specific derived class to perform the clear and |
// clearRect. NULL rect means clear whole target. If canIgnoreRect is |
@@ -444,8 +453,10 @@ private: |
// overridden by backend-specific derived class to perform the path stenciling. |
virtual void onGpuStencilPath(const GrPath*, SkPath::FillType) = 0; |
virtual void onGpuDrawPath(const GrPath*, SkPath::FillType) = 0; |
- virtual void onGpuDrawPaths(int, const GrPath**, const SkMatrix*, |
- SkPath::FillType, SkStrokeRec::Style) = 0; |
+ virtual void onGpuDrawPaths(const GrPathRange*, |
+ const uint32_t indices[], int count, |
+ const float transforms[], PathTransformType, |
+ SkPath::FillType) = 0; |
// overridden by backend-specific derived class to perform the read pixels. |
virtual bool onReadPixels(GrRenderTarget* target, |
@@ -488,9 +499,10 @@ private: |
virtual void onStencilPath(const GrPath*, SkPath::FillType) SK_OVERRIDE; |
virtual void onDrawPath(const GrPath*, SkPath::FillType, |
const GrDeviceCoordTexture* dstCopy) SK_OVERRIDE; |
- virtual void onDrawPaths(int, const GrPath**, const SkMatrix*, |
- SkPath::FillType, SkStrokeRec::Style, |
- const GrDeviceCoordTexture* dstCopy) SK_OVERRIDE; |
+ virtual void onDrawPaths(const GrPathRange*, |
+ const uint32_t indices[], int count, |
+ const float transforms[], PathTransformType, |
+ SkPath::FillType, const GrDeviceCoordTexture*) SK_OVERRIDE; |
// readies the pools to provide vertex/index data. |
void prepareVertexPool(); |