| Index: include/gpu/GrDrawContext.h
|
| diff --git a/include/gpu/GrDrawContext.h b/include/gpu/GrDrawContext.h
|
| index 4b78c89f918379586266c024cb7dd5398eaab828..7e711260cec282f46401c2a67f98c3ee0c1535ce 100644
|
| --- a/include/gpu/GrDrawContext.h
|
| +++ b/include/gpu/GrDrawContext.h
|
| @@ -22,14 +22,18 @@ class GrPipelineBuilder;
|
| class GrRenderTarget;
|
| class GrStrokeInfo;
|
| class GrSurface;
|
| +class GrTextContext;
|
| +struct SkDeviceProperties;
|
| +class SkDrawFilter;
|
| struct SkIPoint;
|
| struct SkIRect;
|
| class SkMatrix;
|
| +class SkPaint;
|
| class SkPath;
|
| struct SkPoint;
|
| struct SkRect;
|
| class SkRRect;
|
| -
|
| +class SkTextBlob;
|
|
|
| /*
|
| * A helper object to orchestrate draws
|
| @@ -38,14 +42,28 @@ class SK_API GrDrawContext : public SkRefCnt {
|
| public:
|
| SK_DECLARE_INST_COUNT(GrDrawContext)
|
|
|
| + ~GrDrawContext() override;
|
| +
|
| void copySurface(GrRenderTarget* dst, GrSurface* src,
|
| const SkIRect& srcRect, const SkIPoint& dstPoint);
|
|
|
| - // drawText and drawPaths are thanks to the GrAtlasTextContext and the
|
| - // GrStencilAndCoverTextContext respectively
|
| - // TODO: remove these two
|
| - void drawText(GrPipelineBuilder* pipelineBuilder, GrBatch* batch);
|
| + // TODO: it is odd that we need both the SkPaint in the following 3 methods.
|
| + // We should extract the text parameters from SkPaint and pass them separately
|
| + // akin to GrStrokeInfo (GrTextInfo?)
|
| + void drawText(GrRenderTarget*, const GrClip&, const GrPaint&, const SkPaint&,
|
| + const SkMatrix& viewMatrix, const char text[], size_t byteLength,
|
| + SkScalar x, SkScalar y, const SkIRect& clipBounds);
|
| + void drawPosText(GrRenderTarget*, const GrClip&, const GrPaint&, const SkPaint&,
|
| + const SkMatrix& viewMatrix, const char text[], size_t byteLength,
|
| + const SkScalar pos[], int scalarsPerPosition,
|
| + const SkPoint& offset, const SkIRect& clipBounds);
|
| + void drawTextBlob(GrRenderTarget*, const GrClip&, const SkPaint&,
|
| + const SkMatrix& viewMatrix, const SkTextBlob*,
|
| + SkScalar x, SkScalar y,
|
| + SkDrawFilter*, const SkIRect& clipBounds);
|
|
|
| + // drawPaths is thanks to GrStencilAndCoverTextContext
|
| + // TODO: remove
|
| void drawPaths(GrPipelineBuilder* pipelineBuilder,
|
| const GrPathProcessor* pathProc,
|
| const GrPathRange* pathRange,
|
| @@ -223,16 +241,17 @@ public:
|
|
|
|
|
| private:
|
| + friend class GrAtlasTextContext; // for access to drawBatch
|
| friend class GrContext; // for ctor
|
|
|
| - GrDrawContext(GrContext* context, GrDrawTarget* drawTarget);
|
| - ~GrDrawContext() override;
|
| + GrDrawContext(GrContext*, GrDrawTarget*, const SkDeviceProperties&, bool useDFT);
|
|
|
| // Sets the paint. Returns true on success; false on failure.
|
| bool prepareToDraw(GrPipelineBuilder*,
|
| GrRenderTarget* rt,
|
| const GrClip&,
|
| const GrPaint* paint);
|
| + GrTextContext* createTextContext(GrRenderTarget*, const SkDeviceProperties&, bool useDFT);
|
|
|
| // A simpler version of the above which just returns true on success; false on failure.
|
| // Clip is *NOT* set
|
| @@ -246,8 +265,16 @@ private:
|
| const SkPath&,
|
| const GrStrokeInfo&);
|
|
|
| - GrContext* fContext; // owning context -> no ref
|
| - GrDrawTarget* fDrawTarget;
|
| + // This entry point allows the GrTextContext-derived classes to add their batches to
|
| + // the drawTarget.
|
| + void drawBatch(GrPipelineBuilder* pipelineBuilder, GrBatch* batch);
|
| +
|
| + GrContext* fContext; // owning context -> no ref
|
| + GrDrawTarget* fDrawTarget;
|
| + GrTextContext* fTextContext; // lazily created
|
| +
|
| + SkDeviceProperties* fDevProps; // ptr b.c. SkDeviceProperties isn't public
|
| + bool fUseDFT;
|
| };
|
|
|
| #endif
|
|
|