| Index: include/gpu/GrContext.h
|
| diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h
|
| index 2433b89189d60fc43e84e6dae4f893b143fa7e3b..6a225c2538b0c057c19fd26ab42bfe3d22b49030 100644
|
| --- a/include/gpu/GrContext.h
|
| +++ b/include/gpu/GrContext.h
|
| @@ -362,20 +362,6 @@ public:
|
| GrRenderTarget* wrapBackendRenderTarget(const GrBackendRenderTargetDesc& desc);
|
|
|
| ///////////////////////////////////////////////////////////////////////////
|
| - // Clip state
|
| - /**
|
| - * Gets the current clip.
|
| - * @return the current clip.
|
| - */
|
| - const GrClip* getClip() const { return fClip; }
|
| -
|
| - /**
|
| - * Sets the clip.
|
| - * @param clipData the clip to set.
|
| - */
|
| - void setClip(const GrClip* clipData) { fClip = clipData; }
|
| -
|
| - ///////////////////////////////////////////////////////////////////////////
|
| // Draws
|
|
|
| /**
|
| @@ -391,7 +377,7 @@ public:
|
| /**
|
| * Draw everywhere (respecting the clip) with the paint.
|
| */
|
| - void drawPaint(GrRenderTarget*, const GrPaint&, const SkMatrix& viewMatrix);
|
| + void drawPaint(GrRenderTarget*, const GrClip&, const GrPaint&, const SkMatrix& viewMatrix);
|
|
|
| /**
|
| * Draw the rect using a paint.
|
| @@ -406,6 +392,7 @@ public:
|
| * The rects coords are used to access the paint (through texture matrix)
|
| */
|
| void drawRect(GrRenderTarget*,
|
| + const GrClip&,
|
| const GrPaint& paint,
|
| const SkMatrix& viewMatrix,
|
| const SkRect&,
|
| @@ -422,6 +409,7 @@ public:
|
| * to rectToDraw
|
| */
|
| void drawNonAARectToRect(GrRenderTarget*,
|
| + const GrClip&,
|
| const GrPaint& paint,
|
| const SkMatrix& viewMatrix,
|
| const SkRect& rectToDraw,
|
| @@ -432,11 +420,12 @@ public:
|
| * Draws a non-AA rect with paint and a localMatrix
|
| */
|
| void drawNonAARectWithLocalMatrix(GrRenderTarget* rt,
|
| + const GrClip& clip,
|
| const GrPaint& paint,
|
| const SkMatrix& viewMatrix,
|
| const SkRect& rect,
|
| const SkMatrix& localMatrix) {
|
| - this->drawNonAARectToRect(rt, paint, viewMatrix, rect, rect, &localMatrix);
|
| + this->drawNonAARectToRect(rt, clip, paint, viewMatrix, rect, rect, &localMatrix);
|
| }
|
|
|
| /**
|
| @@ -449,6 +438,7 @@ public:
|
| * the dash information (intervals, count, phase).
|
| */
|
| void drawRRect(GrRenderTarget*,
|
| + const GrClip&,
|
| const GrPaint&,
|
| const SkMatrix& viewMatrix,
|
| const SkRRect& rrect,
|
| @@ -465,6 +455,7 @@ public:
|
| * @param inner the inner roundrect
|
| */
|
| void drawDRRect(GrRenderTarget*,
|
| + const GrClip&,
|
| const GrPaint&,
|
| const SkMatrix& viewMatrix,
|
| const SkRRect& outer,
|
| @@ -481,6 +472,7 @@ public:
|
| * the dash information (intervals, count, phase).
|
| */
|
| void drawPath(GrRenderTarget*,
|
| + const GrClip&,
|
| const GrPaint&,
|
| const SkMatrix& viewMatrix,
|
| const SkPath&,
|
| @@ -504,6 +496,7 @@ public:
|
| * number of indices.
|
| */
|
| void drawVertices(GrRenderTarget*,
|
| + const GrClip&,
|
| const GrPaint& paint,
|
| const SkMatrix& viewMatrix,
|
| GrPrimitiveType primitiveType,
|
| @@ -524,6 +517,7 @@ public:
|
| * the dash information (intervals, count, phase).
|
| */
|
| void drawOval(GrRenderTarget*,
|
| + const GrClip&,
|
| const GrPaint& paint,
|
| const SkMatrix& viewMatrix,
|
| const SkRect& oval,
|
| @@ -666,59 +660,6 @@ public:
|
| #endif
|
|
|
| ///////////////////////////////////////////////////////////////////////////
|
| - // Helpers
|
| -
|
| - class AutoClip : public ::SkNoncopyable {
|
| - public:
|
| - // This enum exists to require a caller of the constructor to acknowledge that the clip will
|
| - // initially be wide open. It also could be extended if there are other desirable initial
|
| - // clip states.
|
| - enum InitialClip {
|
| - kWideOpen_InitialClip,
|
| - };
|
| -
|
| - AutoClip(GrContext* context, InitialClip SkDEBUGCODE(initialState))
|
| - : fContext(context) {
|
| - SkASSERT(kWideOpen_InitialClip == initialState);
|
| - fNewClipData.setClipStack(&fNewClipStack);
|
| -
|
| - fOldClip = context->getClip();
|
| - context->setClip(&fNewClipData);
|
| - }
|
| -
|
| - AutoClip(GrContext* context, const SkRect& newClipRect)
|
| - : fContext(context)
|
| - , fNewClipStack(newClipRect) {
|
| - fNewClipData.setClipStack(&fNewClipStack);
|
| -
|
| - fOldClip = fContext->getClip();
|
| - fContext->setClip(&fNewClipData);
|
| - }
|
| -
|
| - ~AutoClip() {
|
| - if (fContext) {
|
| - fContext->setClip(fOldClip);
|
| - }
|
| - }
|
| - private:
|
| - GrContext* fContext;
|
| - const GrClip* fOldClip;
|
| -
|
| - SkClipStack fNewClipStack;
|
| - GrClip fNewClipData;
|
| - };
|
| -
|
| - class AutoWideOpenIdentityDraw {
|
| - public:
|
| - AutoWideOpenIdentityDraw(GrContext* ctx)
|
| - : fAutoClip(ctx, AutoClip::kWideOpen_InitialClip) {
|
| - }
|
| -
|
| - private:
|
| - AutoClip fAutoClip;
|
| - };
|
| -
|
| - ///////////////////////////////////////////////////////////////////////////
|
| // Functions intended for internal use only.
|
| GrGpu* getGpu() { return fGpu; }
|
| const GrGpu* getGpu() const { return fGpu; }
|
| @@ -761,7 +702,6 @@ public:
|
|
|
| private:
|
| GrGpu* fGpu;
|
| - const GrClip* fClip;
|
|
|
| GrResourceCache* fResourceCache;
|
| GrFontCache* fFontCache;
|
| @@ -802,11 +742,16 @@ private:
|
| void setupDrawBuffer();
|
|
|
| class AutoCheckFlush;
|
| - // Sets the paint and returns the target to draw into. This function is overloaded to either
|
| - // take a GrDrawState, GrPaint, and AutoCheckFlush, or JUST an AutoCheckFlush
|
| - GrDrawTarget* prepareToDraw(GrPipelineBuilder*, GrRenderTarget* rt, const GrPaint* paint,
|
| + // Sets the paint and returns the target to draw into.
|
| + GrDrawTarget* prepareToDraw(GrPipelineBuilder*,
|
| + GrRenderTarget* rt,
|
| + const GrClip&,
|
| + const GrPaint* paint,
|
| const AutoCheckFlush*);
|
|
|
| + // A simpler version of the above which just returns the draw target. Clip is *NOT* set
|
| + GrDrawTarget* prepareToDraw();
|
| +
|
| void internalDrawPath(GrDrawTarget*,
|
| GrPipelineBuilder*,
|
| const SkMatrix& viewMatrix,
|
|
|