• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2016 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "GrPathRenderingRenderTargetContext.h"
9 
10 #include "GrDrawingManager.h"
11 
12 #include "text/GrStencilAndCoverTextContext.h"
13 
14 #define ASSERT_SINGLE_OWNER \
15     SkDEBUGCODE(GrSingleOwner::AutoEnforce debug_SingleOwner(this->singleOwner());)
16 #define RETURN_IF_ABANDONED        if (this->drawingManager()->wasAbandoned()) { return; }
17 
drawText(const GrClip & clip,const SkPaint & skPaint,const SkMatrix & viewMatrix,const char text[],size_t byteLength,SkScalar x,SkScalar y,const SkIRect & clipBounds)18 void GrPathRenderingRenderTargetContext::drawText(const GrClip& clip, const SkPaint& skPaint,
19                                                   const SkMatrix& viewMatrix, const char text[],
20                                                   size_t byteLength, SkScalar x, SkScalar y,
21                                                   const SkIRect& clipBounds) {
22     ASSERT_SINGLE_OWNER
23     RETURN_IF_ABANDONED
24     SkDEBUGCODE(this->validate();)
25     GR_AUDIT_TRAIL_AUTO_FRAME(this->auditTrail(), "GrPathRenderingRenderTargetContext::drawText");
26 
27     if (!fStencilAndCoverTextContext) {
28         GrAtlasTextContext* fallbackContext = this->drawingManager()->getAtlasTextContext();
29         fStencilAndCoverTextContext.reset(GrStencilAndCoverTextContext::Create(fallbackContext));
30     }
31 
32     fStencilAndCoverTextContext->drawText(this->drawingManager()->getContext(), this, clip, skPaint,
33                                           viewMatrix, this->surfaceProps(), text, byteLength, x, y,
34                                           clipBounds);
35 }
36 
drawPosText(const GrClip & clip,const SkPaint & skPaint,const SkMatrix & viewMatrix,const char text[],size_t byteLength,const SkScalar pos[],int scalarsPerPosition,const SkPoint & offset,const SkIRect & clipBounds)37 void GrPathRenderingRenderTargetContext::drawPosText(const GrClip& clip, const SkPaint& skPaint,
38                                                      const SkMatrix& viewMatrix, const char text[],
39                                                      size_t byteLength, const SkScalar pos[],
40                                                      int scalarsPerPosition, const SkPoint& offset,
41                                                      const SkIRect& clipBounds) {
42     ASSERT_SINGLE_OWNER
43     RETURN_IF_ABANDONED
44     SkDEBUGCODE(this->validate();)
45     GR_AUDIT_TRAIL_AUTO_FRAME(this->auditTrail(),
46                               "GrPathRenderingRenderTargetContext::drawPosText");
47 
48     if (!fStencilAndCoverTextContext) {
49         GrAtlasTextContext* fallbackContext = this->drawingManager()->getAtlasTextContext();
50         fStencilAndCoverTextContext.reset(GrStencilAndCoverTextContext::Create(fallbackContext));
51     }
52 
53     fStencilAndCoverTextContext->drawPosText(
54             this->drawingManager()->getContext(), this, clip, skPaint, viewMatrix,
55             this->surfaceProps(), text, byteLength, pos, scalarsPerPosition, offset, clipBounds);
56 }
57 
drawTextBlob(const GrClip & clip,const SkPaint & skPaint,const SkMatrix & viewMatrix,const SkTextBlob * blob,SkScalar x,SkScalar y,SkDrawFilter * filter,const SkIRect & clipBounds)58 void GrPathRenderingRenderTargetContext::drawTextBlob(const GrClip& clip, const SkPaint& skPaint,
59                                                       const SkMatrix& viewMatrix,
60                                                       const SkTextBlob* blob,
61                                                       SkScalar x, SkScalar y,
62                                                       SkDrawFilter* filter,
63                                                       const SkIRect& clipBounds) {
64     ASSERT_SINGLE_OWNER
65     RETURN_IF_ABANDONED
66     SkDEBUGCODE(this->validate();)
67     GR_AUDIT_TRAIL_AUTO_FRAME(this->auditTrail(),
68                               "GrPathRenderingRenderTargetContext::drawTextBlob");
69 
70     if (!fStencilAndCoverTextContext) {
71         GrAtlasTextContext* fallbackContext = this->drawingManager()->getAtlasTextContext();
72         fStencilAndCoverTextContext.reset(GrStencilAndCoverTextContext::Create(fallbackContext));
73     }
74 
75     fStencilAndCoverTextContext->drawTextBlob(this->drawingManager()->getContext(), this, clip,
76                                               skPaint, viewMatrix, this->surfaceProps(), blob, x,
77                                               y, filter, clipBounds);
78 }
79