Index: src/gpu/GrTextContext.cpp |
diff --git a/src/gpu/GrTextContext.cpp b/src/gpu/GrTextContext.cpp |
index bae8a72fb27e25ea626d7b2db9bec53a7ea26363..92a851bc5a59765542ce1a770671d37844f81657 100644 |
--- a/src/gpu/GrTextContext.cpp |
+++ b/src/gpu/GrTextContext.cpp |
@@ -20,28 +20,27 @@ |
#include "SkTextMapStateProc.h" |
#include "SkTextToPathIter.h" |
-GrTextContext::GrTextContext(GrContext* context, GrDrawContext* drawContext, |
- const SkSurfaceProps& surfaceProps) |
+GrTextContext::GrTextContext(GrContext* context, const SkSurfaceProps& surfaceProps) |
: fFallbackTextContext(nullptr) |
, fContext(context) |
- , fSurfaceProps(surfaceProps) |
- , fDrawContext(drawContext) { |
+ , fSurfaceProps(surfaceProps) { |
} |
GrTextContext::~GrTextContext() { delete fFallbackTextContext; } |
-void GrTextContext::drawText(GrRenderTarget* rt, const GrClip& clip, const GrPaint& paint, |
+void GrTextContext::drawText(GrDrawContext* dc, GrRenderTarget* rt, |
+ const GrClip& clip, const GrPaint& paint, |
const SkPaint& skPaint, const SkMatrix& viewMatrix, |
const char text[], size_t byteLength, |
SkScalar x, SkScalar y, const SkIRect& clipBounds) { |
- if (fContext->abandoned() || !fDrawContext) { |
+ if (fContext->abandoned()) { |
return; |
} |
GrTextContext* textContext = this; |
do { |
if (textContext->canDraw(rt, clip, paint, skPaint, viewMatrix)) { |
- textContext->onDrawText(rt, clip, paint, skPaint, viewMatrix, |
+ textContext->onDrawText(dc, rt, clip, paint, skPaint, viewMatrix, |
text, byteLength, x, y, clipBounds); |
return; |
} |
@@ -49,23 +48,24 @@ void GrTextContext::drawText(GrRenderTarget* rt, const GrClip& clip, const GrPai |
} while (textContext); |
// fall back to drawing as a path |
- this->drawTextAsPath(rt, clip, skPaint, viewMatrix, |
+ this->drawTextAsPath(dc, rt, clip, skPaint, viewMatrix, |
text, byteLength, x, y, clipBounds); |
} |
-void GrTextContext::drawPosText(GrRenderTarget* rt, const GrClip& clip, const GrPaint& paint, |
+void GrTextContext::drawPosText(GrDrawContext* dc, GrRenderTarget* rt, |
+ const GrClip& clip, const GrPaint& paint, |
const SkPaint& skPaint, const SkMatrix& viewMatrix, |
const char text[], size_t byteLength, |
const SkScalar pos[], int scalarsPerPosition, |
const SkPoint& offset, const SkIRect& clipBounds) { |
- if (fContext->abandoned() || !fDrawContext) { |
+ if (fContext->abandoned()) { |
return; |
} |
GrTextContext* textContext = this; |
do { |
if (textContext->canDraw(rt, clip, paint, skPaint, viewMatrix)) { |
- textContext->onDrawPosText(rt, clip, paint, skPaint, viewMatrix, |
+ textContext->onDrawPosText(dc, rt, clip, paint, skPaint, viewMatrix, |
text, byteLength, pos, |
scalarsPerPosition, offset, clipBounds); |
return; |
@@ -74,7 +74,7 @@ void GrTextContext::drawPosText(GrRenderTarget* rt, const GrClip& clip, const Gr |
} while (textContext); |
// fall back to drawing as a path |
- this->drawPosTextAsPath(rt, clip, skPaint, viewMatrix, text, byteLength, pos, |
+ this->drawPosTextAsPath(dc, rt, clip, skPaint, viewMatrix, text, byteLength, pos, |
scalarsPerPosition, offset, clipBounds); |
} |
@@ -108,7 +108,7 @@ uint32_t GrTextContext::FilterTextFlags(const SkSurfaceProps& surfaceProps, cons |
return flags; |
} |
-void GrTextContext::drawTextBlob(GrRenderTarget* rt, |
+void GrTextContext::drawTextBlob(GrDrawContext* dc, GrRenderTarget* rt, |
const GrClip& clip, const SkPaint& skPaint, |
const SkMatrix& viewMatrix, const SkTextBlob* blob, |
SkScalar x, SkScalar y, |
@@ -138,15 +138,15 @@ void GrTextContext::drawTextBlob(GrRenderTarget* rt, |
switch (it.positioning()) { |
case SkTextBlob::kDefault_Positioning: |
- this->drawText(rt, clip, grPaint, runPaint, viewMatrix, (const char *)it.glyphs(), |
+ this->drawText(dc, rt, clip, grPaint, runPaint, viewMatrix, (const char *)it.glyphs(), |
textLen, x + offset.x(), y + offset.y(), clipBounds); |
break; |
case SkTextBlob::kHorizontal_Positioning: |
- this->drawPosText(rt, clip, grPaint, runPaint, viewMatrix, (const char*)it.glyphs(), |
+ this->drawPosText(dc, rt, clip, grPaint, runPaint, viewMatrix, (const char*)it.glyphs(), |
textLen, it.pos(), 1, SkPoint::Make(x, y + offset.y()), clipBounds); |
break; |
case SkTextBlob::kFull_Positioning: |
- this->drawPosText(rt, clip, grPaint, runPaint, viewMatrix, (const char*)it.glyphs(), |
+ this->drawPosText(dc, rt, clip, grPaint, runPaint, viewMatrix, (const char*)it.glyphs(), |
textLen, it.pos(), 2, SkPoint::Make(x, y), clipBounds); |
break; |
default: |
@@ -160,7 +160,7 @@ void GrTextContext::drawTextBlob(GrRenderTarget* rt, |
} |
} |
-void GrTextContext::drawTextAsPath(GrRenderTarget* rt, |
+void GrTextContext::drawTextAsPath(GrDrawContext* dc, GrRenderTarget* rt, |
const GrClip& clip, |
const SkPaint& skPaint, const SkMatrix& viewMatrix, |
const char text[], size_t byteLength, SkScalar x, SkScalar y, |
@@ -178,14 +178,14 @@ void GrTextContext::drawTextAsPath(GrRenderTarget* rt, |
matrix.postTranslate(xpos - prevXPos, 0); |
if (iterPath) { |
const SkPaint& pnt = iter.getPaint(); |
- GrBlurUtils::drawPathWithMaskFilter(fContext, fDrawContext, rt, clip, *iterPath, |
+ GrBlurUtils::drawPathWithMaskFilter(fContext, dc, rt, clip, *iterPath, |
pnt, viewMatrix, &matrix, clipBounds, false); |
} |
prevXPos = xpos; |
} |
} |
-void GrTextContext::drawPosTextAsPath(GrRenderTarget* rt, |
+void GrTextContext::drawPosTextAsPath(GrDrawContext* dc, GrRenderTarget* rt, |
const GrClip& clip, |
const SkPaint& origPaint, const SkMatrix& viewMatrix, |
const char text[], size_t byteLength, |
@@ -226,7 +226,7 @@ void GrTextContext::drawPosTextAsPath(GrRenderTarget* rt, |
matrix[SkMatrix::kMTransX] = loc.fX; |
matrix[SkMatrix::kMTransY] = loc.fY; |
- GrBlurUtils::drawPathWithMaskFilter(fContext, fDrawContext, rt, clip, *path, paint, |
+ GrBlurUtils::drawPathWithMaskFilter(fContext, dc, rt, clip, *path, paint, |
viewMatrix, &matrix, clipBounds, false); |
} |
} |