| Index: src/gpu/GrAtlasTextContext.cpp
|
| diff --git a/src/gpu/GrAtlasTextContext.cpp b/src/gpu/GrAtlasTextContext.cpp
|
| index 868f8bbe8ebc580abd24dcdb591997758ecbb80b..8009e92f934ccf5e0da824a4e381241152c9ac6a 100644
|
| --- a/src/gpu/GrAtlasTextContext.cpp
|
| +++ b/src/gpu/GrAtlasTextContext.cpp
|
| @@ -244,7 +244,7 @@ bool GrAtlasTextContext::HasLCD(const SkTextBlob* blob) {
|
| }
|
|
|
| bool GrAtlasTextContext::MustRegenerateBlob(SkScalar* outTransX, SkScalar* outTransY,
|
| - const BitmapTextBlob& blob, const SkPaint& paint,
|
| + const GrAtlasTextBlob& blob, const SkPaint& paint,
|
| const SkMaskFilter::BlurRec& blurRec,
|
| const SkMatrix& viewMatrix, SkScalar x, SkScalar y) {
|
| // If we have LCD text then our canonical color will be set to transparent, in this case we have
|
| @@ -326,15 +326,15 @@ bool GrAtlasTextContext::MustRegenerateBlob(SkScalar* outTransX, SkScalar* outTr
|
| (*outTransX) = x - blob.fX;
|
| (*outTransY) = y - blob.fY;
|
| }
|
| +
|
| // It is possible that a blob has neither distanceField nor bitmaptext. This is in the case
|
| // when all of the runs inside the blob are drawn as paths. In this case, we always regenerate
|
| // the blob anyways at flush time, so no need to regenerate explicitly
|
| -
|
| return false;
|
| }
|
|
|
|
|
| -inline SkGlyphCache* GrAtlasTextContext::setupCache(BitmapTextBlob::Run* run,
|
| +inline SkGlyphCache* GrAtlasTextContext::setupCache(GrAtlasTextBlob::Run* run,
|
| const SkPaint& skPaint,
|
| const SkMatrix* viewMatrix,
|
| bool noGamma) {
|
| @@ -353,9 +353,9 @@ void GrAtlasTextContext::drawTextBlob(GrRenderTarget* rt,
|
| return;
|
| }
|
|
|
| - SkAutoTUnref<BitmapTextBlob> cacheBlob;
|
| + SkAutoTUnref<GrAtlasTextBlob> cacheBlob;
|
| SkMaskFilter::BlurRec blurRec;
|
| - BitmapTextBlob::Key key;
|
| + GrAtlasTextBlob::Key key;
|
| // It might be worth caching these things, but its not clear at this time
|
| // TODO for animated mask filters, this will fill up our cache. We need a safeguard here
|
| const SkMaskFilter* mf = skPaint.getMaskFilter();
|
| @@ -470,7 +470,7 @@ inline bool GrAtlasTextContext::canDrawAsDistanceFields(const SkPaint& skPaint,
|
| return true;
|
| }
|
|
|
| -void GrAtlasTextContext::regenerateTextBlob(BitmapTextBlob* cacheBlob,
|
| +void GrAtlasTextContext::regenerateTextBlob(GrAtlasTextBlob* cacheBlob,
|
| const SkPaint& skPaint, GrColor color,
|
| const SkMatrix& viewMatrix,
|
| const SkTextBlob* blob, SkScalar x, SkScalar y,
|
| @@ -594,7 +594,7 @@ void GrAtlasTextContext::regenerateTextBlob(BitmapTextBlob* cacheBlob,
|
| }
|
| }
|
|
|
| -inline void GrAtlasTextContext::initDistanceFieldPaint(BitmapTextBlob* blob,
|
| +inline void GrAtlasTextContext::initDistanceFieldPaint(GrAtlasTextBlob* blob,
|
| SkPaint* skPaint,
|
| SkScalar* textRatio,
|
| const SkMatrix& viewMatrix) {
|
| @@ -648,7 +648,7 @@ inline void GrAtlasTextContext::initDistanceFieldPaint(BitmapTextBlob* blob,
|
| skPaint->setSubpixelText(true);
|
| }
|
|
|
| -inline void GrAtlasTextContext::fallbackDrawPosText(BitmapTextBlob* blob,
|
| +inline void GrAtlasTextContext::fallbackDrawPosText(GrAtlasTextBlob* blob,
|
| int runIndex,
|
| GrRenderTarget* rt, const GrClip& clip,
|
| const GrPaint& paint,
|
| @@ -675,11 +675,11 @@ inline void GrAtlasTextContext::fallbackDrawPosText(BitmapTextBlob* blob,
|
| SkGlyphCache::AttachCache(cache);
|
| }
|
|
|
| -inline GrAtlasTextContext::BitmapTextBlob*
|
| +inline GrAtlasTextBlob*
|
| GrAtlasTextContext::setupDFBlob(int glyphCount, const SkPaint& origPaint,
|
| const SkMatrix& viewMatrix, SkGlyphCache** cache,
|
| SkPaint* dfPaint, SkScalar* textRatio) {
|
| - BitmapTextBlob* blob = fCache->createBlob(glyphCount, 1, kGrayTextVASize);
|
| + GrAtlasTextBlob* blob = fCache->createBlob(glyphCount, 1, kGrayTextVASize);
|
|
|
| *dfPaint = origPaint;
|
| this->initDistanceFieldPaint(blob, dfPaint, textRatio, viewMatrix);
|
| @@ -693,7 +693,7 @@ GrAtlasTextContext::setupDFBlob(int glyphCount, const SkPaint& origPaint,
|
| return blob;
|
| }
|
|
|
| -inline GrAtlasTextContext::BitmapTextBlob*
|
| +inline GrAtlasTextBlob*
|
| GrAtlasTextContext::createDrawTextBlob(GrRenderTarget* rt, const GrClip& clip,
|
| const GrPaint& paint, const SkPaint& skPaint,
|
| const SkMatrix& viewMatrix,
|
| @@ -703,7 +703,7 @@ GrAtlasTextContext::createDrawTextBlob(GrRenderTarget* rt, const GrClip& clip,
|
| SkIRect clipRect;
|
| clip.getConservativeBounds(rt->width(), rt->height(), &clipRect);
|
|
|
| - BitmapTextBlob* blob;
|
| + GrAtlasTextBlob* blob;
|
| if (this->canDrawAsDistanceFields(skPaint, viewMatrix)) {
|
| SkPaint dfPaint;
|
| SkScalar textRatio;
|
| @@ -733,7 +733,7 @@ GrAtlasTextContext::createDrawTextBlob(GrRenderTarget* rt, const GrClip& clip,
|
| return blob;
|
| }
|
|
|
| -inline GrAtlasTextContext::BitmapTextBlob*
|
| +inline GrAtlasTextBlob*
|
| GrAtlasTextContext::createDrawPosTextBlob(GrRenderTarget* rt, const GrClip& clip,
|
| const GrPaint& paint, const SkPaint& skPaint,
|
| const SkMatrix& viewMatrix,
|
| @@ -745,7 +745,7 @@ GrAtlasTextContext::createDrawPosTextBlob(GrRenderTarget* rt, const GrClip& clip
|
| SkIRect clipRect;
|
| clip.getConservativeBounds(rt->width(), rt->height(), &clipRect);
|
|
|
| - BitmapTextBlob* blob;
|
| + GrAtlasTextBlob* blob;
|
| if (this->canDrawAsDistanceFields(skPaint, viewMatrix)) {
|
| SkPaint dfPaint;
|
| SkScalar textRatio;
|
| @@ -779,7 +779,7 @@ void GrAtlasTextContext::onDrawText(GrRenderTarget* rt,
|
| const SkMatrix& viewMatrix,
|
| const char text[], size_t byteLength,
|
| SkScalar x, SkScalar y, const SkIRect& regionClipBounds) {
|
| - SkAutoTUnref<BitmapTextBlob> blob(
|
| + SkAutoTUnref<GrAtlasTextBlob> blob(
|
| this->createDrawTextBlob(rt, clip, paint, skPaint, viewMatrix,
|
| text, byteLength, x, y, regionClipBounds));
|
| this->flush(blob, rt, skPaint, paint, clip, regionClipBounds);
|
| @@ -792,7 +792,7 @@ void GrAtlasTextContext::onDrawPosText(GrRenderTarget* rt,
|
| const char text[], size_t byteLength,
|
| const SkScalar pos[], int scalarsPerPosition,
|
| const SkPoint& offset, const SkIRect& regionClipBounds) {
|
| - SkAutoTUnref<BitmapTextBlob> blob(
|
| + SkAutoTUnref<GrAtlasTextBlob> blob(
|
| this->createDrawPosTextBlob(rt, clip, paint, skPaint, viewMatrix,
|
| text, byteLength,
|
| pos, scalarsPerPosition,
|
| @@ -801,7 +801,7 @@ void GrAtlasTextContext::onDrawPosText(GrRenderTarget* rt,
|
| this->flush(blob, rt, skPaint, paint, clip, regionClipBounds);
|
| }
|
|
|
| -void GrAtlasTextContext::internalDrawBMPText(BitmapTextBlob* blob, int runIndex,
|
| +void GrAtlasTextContext::internalDrawBMPText(GrAtlasTextBlob* blob, int runIndex,
|
| SkGlyphCache* cache, const SkPaint& skPaint,
|
| GrColor color,
|
| const SkMatrix& viewMatrix,
|
| @@ -892,7 +892,7 @@ void GrAtlasTextContext::internalDrawBMPText(BitmapTextBlob* blob, int runIndex,
|
| }
|
| }
|
|
|
| -void GrAtlasTextContext::internalDrawBMPPosText(BitmapTextBlob* blob, int runIndex,
|
| +void GrAtlasTextContext::internalDrawBMPPosText(GrAtlasTextBlob* blob, int runIndex,
|
| SkGlyphCache* cache, const SkPaint& skPaint,
|
| GrColor color,
|
| const SkMatrix& viewMatrix,
|
| @@ -1057,7 +1057,7 @@ void GrAtlasTextContext::internalDrawBMPPosText(BitmapTextBlob* blob, int runInd
|
| }
|
|
|
|
|
| -void GrAtlasTextContext::internalDrawDFText(BitmapTextBlob* blob, int runIndex,
|
| +void GrAtlasTextContext::internalDrawDFText(GrAtlasTextBlob* blob, int runIndex,
|
| SkGlyphCache* cache, const SkPaint& skPaint,
|
| GrColor color,
|
| const SkMatrix& viewMatrix,
|
| @@ -1131,7 +1131,7 @@ void GrAtlasTextContext::internalDrawDFText(BitmapTextBlob* blob, int runIndex,
|
| SkGlyphCache::AttachCache(origPaintCache);
|
| }
|
|
|
| -void GrAtlasTextContext::internalDrawDFPosText(BitmapTextBlob* blob, int runIndex,
|
| +void GrAtlasTextContext::internalDrawDFPosText(GrAtlasTextBlob* blob, int runIndex,
|
| SkGlyphCache* cache, const SkPaint& skPaint,
|
| GrColor color,
|
| const SkMatrix& viewMatrix,
|
| @@ -1224,7 +1224,7 @@ void GrAtlasTextContext::internalDrawDFPosText(BitmapTextBlob* blob, int runInde
|
| }
|
| }
|
|
|
| -void GrAtlasTextContext::bmpAppendGlyph(BitmapTextBlob* blob, int runIndex,
|
| +void GrAtlasTextContext::bmpAppendGlyph(GrAtlasTextBlob* blob, int runIndex,
|
| GrGlyph::PackedID packed,
|
| int vx, int vy, GrColor color, GrFontScaler* scaler,
|
| const SkIRect& clipRect) {
|
| @@ -1285,7 +1285,7 @@ void GrAtlasTextContext::bmpAppendGlyph(BitmapTextBlob* blob, int runIndex,
|
| glyph);
|
| }
|
|
|
| -bool GrAtlasTextContext::dfAppendGlyph(BitmapTextBlob* blob, int runIndex,
|
| +bool GrAtlasTextContext::dfAppendGlyph(GrAtlasTextBlob* blob, int runIndex,
|
| GrGlyph::PackedID packed,
|
| SkScalar sx, SkScalar sy, GrColor color,
|
| GrFontScaler* scaler,
|
| @@ -1352,7 +1352,7 @@ bool GrAtlasTextContext::dfAppendGlyph(BitmapTextBlob* blob, int runIndex,
|
| return true;
|
| }
|
|
|
| -inline void GrAtlasTextContext::appendGlyphPath(BitmapTextBlob* blob, GrGlyph* glyph,
|
| +inline void GrAtlasTextContext::appendGlyphPath(GrAtlasTextBlob* blob, GrGlyph* glyph,
|
| GrFontScaler* scaler, SkScalar x, SkScalar y) {
|
| if (NULL == glyph->fPath) {
|
| SkPath* path = SkNEW(SkPath);
|
| @@ -1364,10 +1364,10 @@ inline void GrAtlasTextContext::appendGlyphPath(BitmapTextBlob* blob, GrGlyph* g
|
| glyph->fPath = path;
|
| }
|
| SkASSERT(glyph->fPath);
|
| - blob->fBigGlyphs.push_back(BitmapTextBlob::BigGlyph(*glyph->fPath, x, y));
|
| + blob->fBigGlyphs.push_back(GrAtlasTextBlob::BigGlyph(*glyph->fPath, x, y));
|
| }
|
|
|
| -inline void GrAtlasTextContext::appendGlyphCommon(BitmapTextBlob* blob, Run* run,
|
| +inline void GrAtlasTextContext::appendGlyphCommon(GrAtlasTextBlob* blob, Run* run,
|
| Run::SubRunInfo* subRun,
|
| const SkRect& positions, GrColor color,
|
| size_t vertexStride, bool useVertexColor,
|
| @@ -1433,7 +1433,7 @@ inline void GrAtlasTextContext::appendGlyphCommon(BitmapTextBlob* blob, Run* run
|
| class BitmapTextBatch : public GrBatch {
|
| public:
|
| typedef GrAtlasTextContext::DistanceAdjustTable DistanceAdjustTable;
|
| - typedef GrAtlasTextContext::BitmapTextBlob Blob;
|
| + typedef GrAtlasTextBlob Blob;
|
| typedef Blob::Run Run;
|
| typedef Run::SubRunInfo TextInfo;
|
| struct Geometry {
|
| @@ -2074,7 +2074,7 @@ void GrAtlasTextContext::flushRunAsPaths(GrRenderTarget* rt, const SkTextBlob::R
|
|
|
|
|
| inline BitmapTextBatch*
|
| -GrAtlasTextContext::createBatch(BitmapTextBlob* cacheBlob, const PerSubRunInfo& info,
|
| +GrAtlasTextContext::createBatch(GrAtlasTextBlob* cacheBlob, const PerSubRunInfo& info,
|
| int glyphCount, int run, int subRun,
|
| GrColor color, SkScalar transX, SkScalar transY,
|
| const SkPaint& skPaint) {
|
| @@ -2116,7 +2116,7 @@ GrAtlasTextContext::createBatch(BitmapTextBlob* cacheBlob, const PerSubRunInfo&
|
| }
|
|
|
| inline void GrAtlasTextContext::flushRun(GrPipelineBuilder* pipelineBuilder,
|
| - BitmapTextBlob* cacheBlob, int run, GrColor color,
|
| + GrAtlasTextBlob* cacheBlob, int run, GrColor color,
|
| SkScalar transX, SkScalar transY,
|
| const SkPaint& skPaint) {
|
| for (int subRun = 0; subRun < cacheBlob->fRuns[run].fSubRunInfo.count(); subRun++) {
|
| @@ -2133,7 +2133,7 @@ inline void GrAtlasTextContext::flushRun(GrPipelineBuilder* pipelineBuilder,
|
| }
|
| }
|
|
|
| -inline void GrAtlasTextContext::flushBigGlyphs(BitmapTextBlob* cacheBlob, GrRenderTarget* rt,
|
| +inline void GrAtlasTextContext::flushBigGlyphs(GrAtlasTextBlob* cacheBlob, GrRenderTarget* rt,
|
| const GrClip& clip, const SkPaint& skPaint,
|
| SkScalar transX, SkScalar transY,
|
| const SkIRect& clipBounds) {
|
| @@ -2148,7 +2148,7 @@ inline void GrAtlasTextContext::flushBigGlyphs(BitmapTextBlob* cacheBlob, GrRend
|
| }
|
|
|
| for (int i = 0; i < cacheBlob->fBigGlyphs.count(); i++) {
|
| - BitmapTextBlob::BigGlyph& bigGlyph = cacheBlob->fBigGlyphs[i];
|
| + GrAtlasTextBlob::BigGlyph& bigGlyph = cacheBlob->fBigGlyphs[i];
|
| bigGlyph.fVx += transX;
|
| bigGlyph.fVy += transY;
|
| SkMatrix translate = cacheBlob->fViewMatrix;
|
| @@ -2160,7 +2160,7 @@ inline void GrAtlasTextContext::flushBigGlyphs(BitmapTextBlob* cacheBlob, GrRend
|
| }
|
|
|
| void GrAtlasTextContext::flush(const SkTextBlob* blob,
|
| - BitmapTextBlob* cacheBlob,
|
| + GrAtlasTextBlob* cacheBlob,
|
| GrRenderTarget* rt,
|
| const SkPaint& skPaint,
|
| const GrPaint& grPaint,
|
| @@ -2192,7 +2192,7 @@ void GrAtlasTextContext::flush(const SkTextBlob* blob,
|
| this->flushBigGlyphs(cacheBlob, rt, clip, skPaint, transX, transY, clipBounds);
|
| }
|
|
|
| -void GrAtlasTextContext::flush(BitmapTextBlob* cacheBlob,
|
| +void GrAtlasTextContext::flush(GrAtlasTextBlob* cacheBlob,
|
| GrRenderTarget* rt,
|
| const SkPaint& skPaint,
|
| const GrPaint& grPaint,
|
| @@ -2265,13 +2265,13 @@ BATCH_TEST_DEFINE(TextBlobBatch) {
|
|
|
| // right now we don't handle textblobs, nor do we handle drawPosText. Since we only
|
| // intend to test the batch with this unit test, that is okay.
|
| - SkAutoTUnref<GrAtlasTextContext::BitmapTextBlob> blob(
|
| + SkAutoTUnref<GrAtlasTextBlob> blob(
|
| gTextContext->createDrawTextBlob(rt, clip, grPaint, skPaint, viewMatrix, text,
|
| static_cast<size_t>(textLen), 0, 0, noClip));
|
|
|
| SkScalar transX = static_cast<SkScalar>(random->nextU());
|
| SkScalar transY = static_cast<SkScalar>(random->nextU());
|
| - const GrAtlasTextContext::BitmapTextBlob::Run::SubRunInfo& info = blob->fRuns[0].fSubRunInfo[0];
|
| + const GrAtlasTextBlob::Run::SubRunInfo& info = blob->fRuns[0].fSubRunInfo[0];
|
| return gTextContext->createBatch(blob, info, textLen, 0, 0, color, transX, transY, skPaint);
|
| }
|
|
|
|
|