| Index: src/gpu/GrBitmapTextContext.cpp | 
| diff --git a/src/gpu/GrBitmapTextContext.cpp b/src/gpu/GrBitmapTextContext.cpp | 
| index a8ac78a209105bf58c3def737eeae083fe64e81e..3031f985ed373fb3b819ed127fa83b6332bf0bd8 100755 | 
| --- a/src/gpu/GrBitmapTextContext.cpp | 
| +++ b/src/gpu/GrBitmapTextContext.cpp | 
| @@ -138,23 +138,23 @@ void GrBitmapTextContext::onDrawText(GrRenderTarget* rt, const GrClip& clip, | 
|  | 
| SkFixed fxMask = ~0; | 
| SkFixed fyMask = ~0; | 
| -    SkFixed halfSampleX, halfSampleY; | 
| +    SkScalar halfSampleX, halfSampleY; | 
| if (cache->isSubpixel()) { | 
| -        halfSampleX = halfSampleY = SkGlyph::kSubpixelRound; | 
| +        halfSampleX = halfSampleY = SkFixedToScalar(SkGlyph::kSubpixelRound); | 
| SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(viewMatrix); | 
| if (kX_SkAxisAlignment == baseline) { | 
| fyMask = 0; | 
| -            halfSampleY = SK_FixedHalf; | 
| +            halfSampleY = SK_ScalarHalf; | 
| } else if (kY_SkAxisAlignment == baseline) { | 
| fxMask = 0; | 
| -            halfSampleX = SK_FixedHalf; | 
| +            halfSampleX = SK_ScalarHalf; | 
| } | 
| } else { | 
| -        halfSampleX = halfSampleY = SK_FixedHalf; | 
| +        halfSampleX = halfSampleY = SK_ScalarHalf; | 
| } | 
|  | 
| -    SkFixed fx = SkScalarToFixed(x) + halfSampleX; | 
| -    SkFixed fy = SkScalarToFixed(y) + halfSampleY; | 
| +    Sk48Dot16 fx = SkScalarTo48Dot16(x + halfSampleX); | 
| +    Sk48Dot16 fy = SkScalarTo48Dot16(y + halfSampleY); | 
|  | 
| // 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 | 
| @@ -172,8 +172,8 @@ void GrBitmapTextContext::onDrawText(GrRenderTarget* rt, const GrClip& clip, | 
| this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), | 
| glyph.getSubXFixed(), | 
| glyph.getSubYFixed()), | 
| -                              SkFixedFloorToFixed(fx), | 
| -                              SkFixedFloorToFixed(fy), | 
| +                              Sk48Dot16FloorToInt(fx), | 
| +                              Sk48Dot16FloorToInt(fy), | 
| fontScaler); | 
| } | 
|  | 
| @@ -219,7 +219,7 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, | 
| const char*        stop = text + byteLength; | 
| SkTextAlignProc    alignProc(fSkPaint.getTextAlign()); | 
| SkTextMapStateProc tmsProc(viewMatrix, offset, scalarsPerPosition); | 
| -    SkFixed halfSampleX = 0, halfSampleY = 0; | 
| +    SkScalar halfSampleX = 0, halfSampleY = 0; | 
|  | 
| if (cache->isSubpixel()) { | 
| // maybe we should skip the rounding if linearText is set | 
| @@ -229,18 +229,18 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, | 
| SkFixed fyMask = ~0; | 
| if (kX_SkAxisAlignment == baseline) { | 
| fyMask = 0; | 
| -            halfSampleY = SK_FixedHalf; | 
| +            halfSampleY = SK_ScalarHalf; | 
| } else if (kY_SkAxisAlignment == baseline) { | 
| fxMask = 0; | 
| -            halfSampleX = SK_FixedHalf; | 
| +            halfSampleX = SK_ScalarHalf; | 
| } | 
|  | 
| if (SkPaint::kLeft_Align == fSkPaint.getTextAlign()) { | 
| while (text < stop) { | 
| SkPoint tmsLoc; | 
| tmsProc(pos, &tmsLoc); | 
| -                SkFixed fx = SkScalarToFixed(tmsLoc.fX) + halfSampleX; | 
| -                SkFixed fy = SkScalarToFixed(tmsLoc.fY) + halfSampleY; | 
| +                Sk48Dot16 fx = SkScalarTo48Dot16(tmsLoc.fX + halfSampleX); | 
| +                Sk48Dot16 fy = SkScalarTo48Dot16(tmsLoc.fY + halfSampleY); | 
|  | 
| const SkGlyph& glyph = glyphCacheProc(cache, &text, | 
| fx & fxMask, fy & fyMask); | 
| @@ -249,8 +249,8 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, | 
| this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), | 
| glyph.getSubXFixed(), | 
| glyph.getSubYFixed()), | 
| -                                      SkFixedFloorToFixed(fx), | 
| -                                      SkFixedFloorToFixed(fy), | 
| +                                      Sk48Dot16FloorToInt(fx), | 
| +                                      Sk48Dot16FloorToInt(fy), | 
| fontScaler); | 
| } | 
| pos += scalarsPerPosition; | 
| @@ -265,11 +265,11 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, | 
| SkDEBUGCODE(SkFixed prevAdvY = metricGlyph.fAdvanceY;) | 
| SkPoint tmsLoc; | 
| tmsProc(pos, &tmsLoc); | 
| -                    SkIPoint fixedLoc; | 
| -                    alignProc(tmsLoc, metricGlyph, &fixedLoc); | 
| +                    SkPoint alignLoc; | 
| +                    alignProc(tmsLoc, metricGlyph, &alignLoc); | 
|  | 
| -                    SkFixed fx = fixedLoc.fX + halfSampleX; | 
| -                    SkFixed fy = fixedLoc.fY + halfSampleY; | 
| +                    Sk48Dot16 fx = SkScalarTo48Dot16(alignLoc.fX + halfSampleX); | 
| +                    Sk48Dot16 fy = SkScalarTo48Dot16(alignLoc.fY + halfSampleY); | 
|  | 
| // have to call again, now that we've been "aligned" | 
| const SkGlyph& glyph = glyphCacheProc(cache, ¤tText, | 
| @@ -282,8 +282,8 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, | 
| this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), | 
| glyph.getSubXFixed(), | 
| glyph.getSubYFixed()), | 
| -                                      SkFixedFloorToFixed(fx), | 
| -                                      SkFixedFloorToFixed(fy), | 
| +                                      Sk48Dot16FloorToInt(fx), | 
| +                                      Sk48Dot16FloorToInt(fy), | 
| fontScaler); | 
| } | 
| pos += scalarsPerPosition; | 
| @@ -300,13 +300,13 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, | 
| SkPoint tmsLoc; | 
| tmsProc(pos, &tmsLoc); | 
|  | 
| -                    SkFixed fx = SkScalarToFixed(tmsLoc.fX) + SK_FixedHalf; //halfSampleX; | 
| -                    SkFixed fy = SkScalarToFixed(tmsLoc.fY) + SK_FixedHalf; //halfSampleY; | 
| +                    Sk48Dot16 fx = SkScalarTo48Dot16(tmsLoc.fX + SK_ScalarHalf); //halfSampleX; | 
| +                    Sk48Dot16 fy = SkScalarTo48Dot16(tmsLoc.fY + SK_ScalarHalf); //halfSampleY; | 
| this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), | 
| glyph.getSubXFixed(), | 
| glyph.getSubYFixed()), | 
| -                                      SkFixedFloorToFixed(fx), | 
| -                                      SkFixedFloorToFixed(fy), | 
| +                                      Sk48Dot16FloorToInt(fx), | 
| +                                      Sk48Dot16FloorToInt(fy), | 
| fontScaler); | 
| } | 
| pos += scalarsPerPosition; | 
| @@ -320,16 +320,16 @@ void GrBitmapTextContext::onDrawPosText(GrRenderTarget* rt, const GrClip& clip, | 
| SkPoint tmsLoc; | 
| tmsProc(pos, &tmsLoc); | 
|  | 
| -                    SkIPoint fixedLoc; | 
| -                    alignProc(tmsLoc, glyph, &fixedLoc); | 
| +                    SkPoint alignLoc; | 
| +                    alignProc(tmsLoc, glyph, &alignLoc); | 
|  | 
| -                    SkFixed fx = fixedLoc.fX + SK_FixedHalf; //halfSampleX; | 
| -                    SkFixed fy = fixedLoc.fY + SK_FixedHalf; //halfSampleY; | 
| +                    Sk48Dot16 fx = SkScalarTo48Dot16(alignLoc.fX + SK_ScalarHalf); //halfSampleX; | 
| +                    Sk48Dot16 fy = SkScalarTo48Dot16(alignLoc.fY + SK_ScalarHalf); //halfSampleY; | 
| this->appendGlyph(GrGlyph::Pack(glyph.getGlyphID(), | 
| glyph.getSubXFixed(), | 
| glyph.getSubYFixed()), | 
| -                                      SkFixedFloorToFixed(fx), | 
| -                                      SkFixedFloorToFixed(fy), | 
| +                                      Sk48Dot16FloorToInt(fx), | 
| +                                      Sk48Dot16FloorToInt(fy), | 
| fontScaler); | 
| } | 
| pos += scalarsPerPosition; | 
| @@ -405,7 +405,7 @@ inline bool GrBitmapTextContext::uploadGlyph(GrGlyph* glyph, GrFontScaler* scale | 
| } | 
|  | 
| void GrBitmapTextContext::appendGlyph(GrGlyph::PackedID packed, | 
| -                                      SkFixed vx, SkFixed vy, | 
| +                                      int vx, int vy, | 
| GrFontScaler* scaler) { | 
| if (NULL == fDrawTarget) { | 
| return; | 
| @@ -420,16 +420,14 @@ void GrBitmapTextContext::appendGlyph(GrGlyph::PackedID packed, | 
| return; | 
| } | 
|  | 
| -    vx += SkIntToFixed(glyph->fBounds.fLeft); | 
| -    vy += SkIntToFixed(glyph->fBounds.fTop); | 
| +    int x = vx + glyph->fBounds.fLeft; | 
| +    int y = vy + glyph->fBounds.fTop; | 
|  | 
| // keep them as ints until we've done the clip-test | 
| int width = glyph->fBounds.width(); | 
| int height = glyph->fBounds.height(); | 
|  | 
| // check if we clipped out | 
| -    int x = vx >> 16; | 
| -    int y = vy >> 16; | 
| if (fClipRect.quickReject(x, y, x + width, y + height)) { | 
| return; | 
| } | 
| @@ -450,8 +448,7 @@ void GrBitmapTextContext::appendGlyph(GrGlyph::PackedID packed, | 
| this->flush(); | 
|  | 
| SkMatrix translate; | 
| -        translate.setTranslate(SkFixedToScalar(vx - SkIntToFixed(glyph->fBounds.fLeft)), | 
| -                               SkFixedToScalar(vy - SkIntToFixed(glyph->fBounds.fTop))); | 
| +        translate.setTranslate(SkIntToScalar(vx), SkIntToScalar(vy)); | 
| SkPath tmpPath(*glyph->fPath); | 
| tmpPath.transform(translate); | 
| GrStrokeInfo strokeInfo(SkStrokeRec::kFill_InitStyle); | 
| @@ -484,13 +481,13 @@ void GrBitmapTextContext::appendGlyph(GrGlyph::PackedID packed, | 
| } | 
|  | 
| SkRect r; | 
| -    r.fLeft = SkFixedToFloat(vx); | 
| -    r.fTop = SkFixedToFloat(vy); | 
| -    r.fRight = r.fLeft + width; | 
| -    r.fBottom = r.fTop + height; | 
| +    r.fLeft = SkIntToScalar(x); | 
| +    r.fTop = SkIntToScalar(y); | 
| +    r.fRight = r.fLeft + SkIntToScalar(width); | 
| +    r.fBottom = r.fTop + SkIntToScalar(height); | 
|  | 
| fVertexBounds.joinNonEmptyArg(r); | 
| - | 
| + | 
| int u0 = glyph->fAtlasLocation.fX; | 
| int v0 = glyph->fAtlasLocation.fY; | 
| int u1 = u0 + width; | 
| @@ -510,7 +507,7 @@ void GrBitmapTextContext::appendGlyph(GrGlyph::PackedID packed, | 
| sizeof(SkIPoint16)); | 
| textureCoords->set(u0, v0); | 
| vertex += vertSize; | 
| - | 
| + | 
| // V1 | 
| position = reinterpret_cast<SkPoint*>(vertex); | 
| position->set(r.fLeft, r.fBottom); | 
| @@ -521,7 +518,7 @@ void GrBitmapTextContext::appendGlyph(GrGlyph::PackedID packed, | 
| textureCoords = reinterpret_cast<SkIPoint16*>(vertex + vertSize  - sizeof(SkIPoint16)); | 
| textureCoords->set(u0, v1); | 
| vertex += vertSize; | 
| - | 
| + | 
| // V2 | 
| position = reinterpret_cast<SkPoint*>(vertex); | 
| position->set(r.fRight, r.fBottom); | 
| @@ -532,7 +529,7 @@ void GrBitmapTextContext::appendGlyph(GrGlyph::PackedID packed, | 
| textureCoords = reinterpret_cast<SkIPoint16*>(vertex + vertSize  - sizeof(SkIPoint16)); | 
| textureCoords->set(u1, v1); | 
| vertex += vertSize; | 
| - | 
| + | 
| // V3 | 
| position = reinterpret_cast<SkPoint*>(vertex); | 
| position->set(r.fRight, r.fTop); | 
|  |