| Index: src/gpu/GrBitmapTextContext.cpp
|
| diff --git a/src/gpu/GrBitmapTextContext.cpp b/src/gpu/GrBitmapTextContext.cpp
|
| index 790590dbcc2c75707cae674aee366f230407bcc3..94b2770b23c6c90c02d67bfd519cd3d26ccda60e 100755
|
| --- a/src/gpu/GrBitmapTextContext.cpp
|
| +++ b/src/gpu/GrBitmapTextContext.cpp
|
| @@ -154,9 +154,10 @@ void GrBitmapTextContext::onDrawText(const GrPaint& paint, const SkPaint& skPain
|
| SkFixed fx = SkScalarToFixed(x) + halfSampleX;
|
| SkFixed fy = SkScalarToFixed(y) + halfSampleY;
|
|
|
| - // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix
|
| - if (kARGB_GrMaskFormat != fCurrMaskFormat && !viewMatrix.invert(&fLocalMatrix)) {
|
| - SkDebugf("Cannot invert viewmatrix\n");
|
| + // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix, but for
|
| + // performance reasons we just invert here instead
|
| + if (!viewMatrix.invert(&fLocalMatrix)) {
|
| + SkDebugf("Cannot invert viewmatrix\n");
|
| }
|
|
|
| while (text < stop) {
|
| @@ -201,11 +202,9 @@ void GrBitmapTextContext::onDrawPosText(const GrPaint& paint, const SkPaint& skP
|
| SkGlyphCache* cache = autoCache.getCache();
|
| GrFontScaler* fontScaler = GetGrFontScaler(cache);
|
|
|
| - // store original matrix before we reset, so we can use it to transform positions
|
| - SkMatrix ctm = viewMatrix;
|
| -
|
| - // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix
|
| - if (kARGB_GrMaskFormat != fCurrMaskFormat && !viewMatrix.invert(&fLocalMatrix)) {
|
| + // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix, but for
|
| + // performance reasons we just invert here instead
|
| + if (!viewMatrix.invert(&fLocalMatrix)) {
|
| SkDebugf("Cannot invert viewmatrix\n");
|
| }
|
|
|
| @@ -214,12 +213,12 @@ void GrBitmapTextContext::onDrawPosText(const GrPaint& paint, const SkPaint& skP
|
|
|
| const char* stop = text + byteLength;
|
| SkTextAlignProc alignProc(fSkPaint.getTextAlign());
|
| - SkTextMapStateProc tmsProc(ctm, offset, scalarsPerPosition);
|
| + SkTextMapStateProc tmsProc(viewMatrix, offset, scalarsPerPosition);
|
| SkFixed halfSampleX = 0, halfSampleY = 0;
|
|
|
| if (cache->isSubpixel()) {
|
| // maybe we should skip the rounding if linearText is set
|
| - SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(ctm);
|
| + SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(viewMatrix);
|
|
|
| SkFixed fxMask = ~0;
|
| SkFixed fyMask = ~0;
|
|
|