| 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 | 
|  |