Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index 0e91182f9d3f5fabbb0f26a44b00a0a10c27c948..5ba174cafcc53e9f483b7844c1f1d98b173629ac 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -200,12 +200,6 @@ |
fContext = context; |
fContext->ref(); |
-#if SK_DISTANCEFIELD_FONTS |
- fTextContextManager = SkNEW(GrTTextContextManager<GrDistanceFieldTextContext>); |
-#else |
- fTextContextManager = SkNEW(GrTTextContextManager<GrBitmapTextContext>); |
-#endif |
- |
fRenderTarget = NULL; |
fNeedClear = false; |
@@ -241,12 +235,6 @@ |
fContext = context; |
fContext->ref(); |
-#if SK_DISTANCEFIELD_FONTS |
- fTextContextManager = SkNEW(GrTTextContextManager<GrDistanceFieldTextContext>); |
-#else |
- fTextContextManager = SkNEW(GrTTextContextManager<GrBitmapTextContext>); |
-#endif |
- |
fRenderTarget = NULL; |
fNeedClear = false; |
@@ -291,8 +279,6 @@ |
if (fDrawProcs) { |
delete fDrawProcs; |
} |
- |
- delete fTextContextManager; |
// The GrContext takes a ref on the target. We don't want to cause the render |
// target to be unnecessarily kept alive. |
@@ -1834,15 +1820,13 @@ |
SkDEBUGCODE(this->validate();) |
- SkAutoTDelete<GrTextContext> context(fTextContextManager->create(fContext, grPaint, paint)); |
- GrDistanceFieldTextContext* dfContext = |
- static_cast<GrDistanceFieldTextContext*>(context.get()); |
- |
- SkAutoGlyphCache autoCache(dfContext->getSkPaint(), &this->fLeakyProperties, NULL); |
+ GrDistanceFieldTextContext context(fContext, grPaint, paint); |
+ |
+ SkAutoGlyphCache autoCache(context.getSkPaint(), &this->fLeakyProperties, NULL); |
SkGlyphCache* cache = autoCache.getCache(); |
GrFontScaler* fontScaler = get_gr_font_scaler(cache); |
- dfContext->drawText((const char *)text, byteLength, x, y, cache, fontScaler); |
+ context.drawText((const char *)text, byteLength, x, y, cache, fontScaler); |
#endif |
} else { |
SkDraw myDraw(draw); |
@@ -1852,8 +1836,8 @@ |
return; |
} |
- SkAutoTDelete<GrTextContext> context(fTextContextManager->create(fContext, grPaint, paint)); |
- myDraw.fProcs = this->initDrawForText(context.get()); |
+ GrBitmapTextContext context(fContext, grPaint, paint.getColor()); |
+ myDraw.fProcs = this->initDrawForText(&context); |
this->INHERITED::drawText(myDraw, text, byteLength, x, y, paint); |
} |
} |
@@ -1877,15 +1861,13 @@ |
SkDEBUGCODE(this->validate();) |
- SkAutoTDelete<GrTextContext> context(fTextContextManager->create(fContext, grPaint, paint)); |
- GrDistanceFieldTextContext* dfContext = |
- static_cast<GrDistanceFieldTextContext*>(context.get()); |
- |
- SkAutoGlyphCache autoCache(dfContext->getSkPaint(), &this->fLeakyProperties, NULL); |
+ GrDistanceFieldTextContext context(fContext, grPaint, paint); |
+ |
+ SkAutoGlyphCache autoCache(context.getSkPaint(), &this->fLeakyProperties, NULL); |
SkGlyphCache* cache = autoCache.getCache(); |
GrFontScaler* fontScaler = get_gr_font_scaler(cache); |
- |
- dfContext->drawPosText((const char *)text, byteLength, pos, constY, scalarsPerPos, |
+ |
+ context.drawPosText((const char *)text, byteLength, pos, constY, scalarsPerPos, |
cache, fontScaler); |
#endif |
} else { |
@@ -1895,9 +1877,8 @@ |
if (!skPaint2GrPaintShader(this, paint, true, &grPaint)) { |
return; |
} |
- |
- SkAutoTDelete<GrTextContext> context(fTextContextManager->create(fContext, grPaint, paint)); |
- myDraw.fProcs = this->initDrawForText(context.get()); |
+ GrBitmapTextContext context(fContext, grPaint, paint.getColor()); |
+ myDraw.fProcs = this->initDrawForText(&context); |
this->INHERITED::drawPosText(myDraw, text, byteLength, pos, constY, |
scalarsPerPos, paint); |
} |