| Index: src/core/SkDraw.cpp
|
| diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
|
| index b6738e2429014bd94ea266d09ebbbfc4b20e3422..bd4e40e9f112c3acea7fb874023701b63bc29d33 100644
|
| --- a/src/core/SkDraw.cpp
|
| +++ b/src/core/SkDraw.cpp
|
| @@ -1443,9 +1443,9 @@ void SkDraw::drawText_asPaths(const char text[], size_t byteLength,
|
|
|
| //////////////////////////////////////////////////////////////////////////////
|
|
|
| -static void D1G_RectClip(const SkDraw1Glyph& state, SkFixed fx, SkFixed fy, const SkGlyph& glyph) {
|
| - int left = SkFixedFloorToInt(fx);
|
| - int top = SkFixedFloorToInt(fy);
|
| +static void D1G_RectClip(const SkDraw1Glyph& state, Sk48Dot16 fx, Sk48Dot16 fy, const SkGlyph& glyph) {
|
| + int left = Sk48Dot16FloorToInt(fx);
|
| + int top = Sk48Dot16FloorToInt(fy);
|
| SkASSERT(glyph.fWidth > 0 && glyph.fHeight > 0);
|
| SkASSERT((NULL == state.fClip && state.fAAClip) ||
|
| (state.fClip && NULL == state.fAAClip && state.fClip->isRect()));
|
| @@ -1484,9 +1484,9 @@ static void D1G_RectClip(const SkDraw1Glyph& state, SkFixed fx, SkFixed fy, cons
|
| state.blitMask(mask, *bounds);
|
| }
|
|
|
| -static void D1G_RgnClip(const SkDraw1Glyph& state, SkFixed fx, SkFixed fy, const SkGlyph& glyph) {
|
| - int left = SkFixedFloorToInt(fx);
|
| - int top = SkFixedFloorToInt(fy);
|
| +static void D1G_RgnClip(const SkDraw1Glyph& state, Sk48Dot16 fx, Sk48Dot16 fy, const SkGlyph& glyph) {
|
| + int left = Sk48Dot16FloorToInt(fx);
|
| + int top = Sk48Dot16FloorToInt(fy);
|
| SkASSERT(glyph.fWidth > 0 && glyph.fHeight > 0);
|
| SkASSERT(!state.fClip->isRect());
|
|
|
| @@ -1534,9 +1534,9 @@ SkDraw1Glyph::Proc SkDraw1Glyph::init(const SkDraw* draw, SkBlitter* blitter, Sk
|
| fPaint = &pnt;
|
|
|
| if (cache->isSubpixel()) {
|
| - fHalfSampleX = fHalfSampleY = SkGlyph::kSubpixelRound;
|
| + fHalfSampleX = fHalfSampleY = SkFixedToScalar(SkGlyph::kSubpixelRound);
|
| } else {
|
| - fHalfSampleX = fHalfSampleY = SK_FixedHalf;
|
| + fHalfSampleX = fHalfSampleY = SK_ScalarHalf;
|
| }
|
|
|
| if (hasCustomD1GProc(*draw)) {
|
| @@ -1647,15 +1647,15 @@ void SkDraw::drawText(const char text[], size_t byteLength,
|
| SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(*fMatrix);
|
| if (kX_SkAxisAlignment == baseline) {
|
| fyMask = 0;
|
| - d1g.fHalfSampleY = SK_FixedHalf;
|
| + d1g.fHalfSampleY = SK_ScalarHalf;
|
| } else if (kY_SkAxisAlignment == baseline) {
|
| fxMask = 0;
|
| - d1g.fHalfSampleX = SK_FixedHalf;
|
| + d1g.fHalfSampleX = SK_ScalarHalf;
|
| }
|
| }
|
|
|
| - SkFixed fx = SkScalarToFixed(x) + d1g.fHalfSampleX;
|
| - SkFixed fy = SkScalarToFixed(y) + d1g.fHalfSampleY;
|
| + Sk48Dot16 fx = SkScalarTo48Dot16(x + d1g.fHalfSampleX);
|
| + Sk48Dot16 fy = SkScalarTo48Dot16(y + d1g.fHalfSampleY);
|
|
|
| while (text < stop) {
|
| const SkGlyph& glyph = glyphCacheProc(cache, &text, fx & fxMask, fy & fyMask);
|
| @@ -1692,7 +1692,7 @@ void SkDraw::drawPosText_asPaths(const char text[], size_t byteLength,
|
| SkGlyphCache* cache = autoCache.getCache();
|
|
|
| const char* stop = text + byteLength;
|
| - SkTextAlignProcScalar alignProc(paint.getTextAlign());
|
| + SkTextAlignProc alignProc(paint.getTextAlign());
|
| SkTextMapStateProc tmsProc(SkMatrix::I(), offset, scalarsPerPosition);
|
|
|
| // Now restore the original settings, so we "draw" with whatever style/stroking.
|
| @@ -1770,21 +1770,21 @@ void SkDraw::drawPosText(const char text[], size_t byteLength,
|
| SkFixed fyMask = ~0;
|
| if (kX_SkAxisAlignment == baseline) {
|
| fyMask = 0;
|
| - d1g.fHalfSampleY = SK_FixedHalf;
|
| + d1g.fHalfSampleY = SK_ScalarHalf;
|
| } else if (kY_SkAxisAlignment == baseline) {
|
| fxMask = 0;
|
| - d1g.fHalfSampleX = SK_FixedHalf;
|
| + d1g.fHalfSampleX = SK_ScalarHalf;
|
| }
|
|
|
| if (SkPaint::kLeft_Align == paint.getTextAlign()) {
|
| while (text < stop) {
|
| SkPoint tmsLoc;
|
| tmsProc(pos, &tmsLoc);
|
| - SkFixed fx = SkScalarToFixed(tmsLoc.fX) + d1g.fHalfSampleX;
|
| - SkFixed fy = SkScalarToFixed(tmsLoc.fY) + d1g.fHalfSampleY;
|
|
|
| - const SkGlyph& glyph = glyphCacheProc(cache, &text,
|
| - fx & fxMask, fy & fyMask);
|
| + Sk48Dot16 fx = SkScalarTo48Dot16(tmsLoc.fX + d1g.fHalfSampleX);
|
| + Sk48Dot16 fy = SkScalarTo48Dot16(tmsLoc.fY + d1g.fHalfSampleY);
|
| +
|
| + const SkGlyph& glyph = glyphCacheProc(cache, &text, fx & fxMask, fy & fyMask);
|
|
|
| if (glyph.fWidth) {
|
| proc(d1g, fx, fy, glyph);
|
| @@ -1801,11 +1801,12 @@ void SkDraw::drawPosText(const char text[], size_t byteLength,
|
| SkDEBUGCODE(SkFixed prevAdvY = metricGlyph.fAdvanceY;)
|
| SkPoint tmsLoc;
|
| tmsProc(pos, &tmsLoc);
|
| - SkIPoint fixedLoc;
|
| - alignProc(tmsLoc, metricGlyph, &fixedLoc);
|
|
|
| - SkFixed fx = fixedLoc.fX + d1g.fHalfSampleX;
|
| - SkFixed fy = fixedLoc.fY + d1g.fHalfSampleY;
|
| + SkPoint alignLoc;
|
| + alignProc(tmsLoc, metricGlyph, &alignLoc);
|
| +
|
| + Sk48Dot16 fx = SkScalarTo48Dot16(alignLoc.fX + d1g.fHalfSampleX);
|
| + Sk48Dot16 fy = SkScalarTo48Dot16(alignLoc.fY + d1g.fHalfSampleY);
|
|
|
| // have to call again, now that we've been "aligned"
|
| const SkGlyph& glyph = glyphCacheProc(cache, ¤tText,
|
| @@ -1831,8 +1832,8 @@ void SkDraw::drawPosText(const char text[], size_t byteLength,
|
| tmsProc(pos, &tmsLoc);
|
|
|
| proc(d1g,
|
| - SkScalarToFixed(tmsLoc.fX) + SK_FixedHalf, //d1g.fHalfSampleX,
|
| - SkScalarToFixed(tmsLoc.fY) + SK_FixedHalf, //d1g.fHalfSampleY,
|
| + SkScalarTo48Dot16(tmsLoc.fX + SK_ScalarHalf), //d1g.fHalfSampleX,
|
| + SkScalarTo48Dot16(tmsLoc.fY + SK_ScalarHalf), //d1g.fHalfSampleY,
|
| glyph);
|
| }
|
| pos += scalarsPerPosition;
|
| @@ -1846,12 +1847,12 @@ void SkDraw::drawPosText(const char text[], size_t byteLength,
|
| SkPoint tmsLoc;
|
| tmsProc(pos, &tmsLoc);
|
|
|
| - SkIPoint fixedLoc;
|
| - alignProc(tmsLoc, glyph, &fixedLoc);
|
| + SkPoint alignLoc;
|
| + alignProc(tmsLoc, glyph, &alignLoc);
|
|
|
| proc(d1g,
|
| - fixedLoc.fX + SK_FixedHalf, //d1g.fHalfSampleX,
|
| - fixedLoc.fY + SK_FixedHalf, //d1g.fHalfSampleY,
|
| + SkScalarTo48Dot16(alignLoc.fX + SK_ScalarHalf), //d1g.fHalfSampleX,
|
| + SkScalarTo48Dot16(alignLoc.fY + SK_ScalarHalf), //d1g.fHalfSampleY,
|
| glyph);
|
| }
|
| pos += scalarsPerPosition;
|
|
|