diff options
author | Chris Craik <ccraik@google.com> | 2014-08-16 00:19:32 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-08-15 19:21:54 +0000 |
commit | 40f67da884e60970dc5b0259aa463941de4d2788 (patch) | |
tree | 774a969cde89274722cd4c38dd2db1c59e3f7354 | |
parent | e364aecf17124e0ae443bf9fe0e1b7c588a0d25a (diff) | |
parent | 39c5e7cbdfdc0c74eb5746467d9975dbaba3da61 (diff) | |
download | frameworks_base-40f67da884e60970dc5b0259aa463941de4d2788.zip frameworks_base-40f67da884e60970dc5b0259aa463941de4d2788.tar.gz frameworks_base-40f67da884e60970dc5b0259aa463941de4d2788.tar.bz2 |
Merge "Fix glyph positions underflow issue" into lmp-dev
-rw-r--r-- | libs/hwui/font/Font.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/libs/hwui/font/Font.cpp b/libs/hwui/font/Font.cpp index 2ea6c8c..ba878ba 100644 --- a/libs/hwui/font/Font.cpp +++ b/libs/hwui/font/Font.cpp @@ -140,12 +140,12 @@ void Font::invalidateTextureCache(CacheTexture* cacheTexture) { void Font::measureCachedGlyph(CachedGlyphInfo *glyph, int x, int y, uint8_t* bitmap, uint32_t bitmapW, uint32_t bitmapH, Rect* bounds, const float* pos) { - int nPenX = x + glyph->mBitmapLeft; - int nPenY = y + glyph->mBitmapTop; - int width = (int) glyph->mBitmapWidth; int height = (int) glyph->mBitmapHeight; + int nPenX = x + glyph->mBitmapLeft; + int nPenY = y + glyph->mBitmapTop; + if (bounds->bottom > nPenY) { bounds->bottom = nPenY; } @@ -162,12 +162,12 @@ void Font::measureCachedGlyph(CachedGlyphInfo *glyph, int x, int y, void Font::drawCachedGlyph(CachedGlyphInfo* glyph, int x, int y, uint8_t* bitmap, uint32_t bitmapW, uint32_t bitmapH, Rect* bounds, const float* pos) { - float nPenX = x + glyph->mBitmapLeft; - float nPenY = y + glyph->mBitmapTop + glyph->mBitmapHeight; - float width = (float) glyph->mBitmapWidth; float height = (float) glyph->mBitmapHeight; + float nPenX = x + glyph->mBitmapLeft; + float nPenY = y + glyph->mBitmapTop + height; + float u1 = glyph->mBitmapMinU; float u2 = glyph->mBitmapMaxU; float v1 = glyph->mBitmapMinV; @@ -181,10 +181,13 @@ void Font::drawCachedGlyph(CachedGlyphInfo* glyph, int x, int y, void Font::drawCachedGlyphTransformed(CachedGlyphInfo* glyph, int x, int y, uint8_t* bitmap, uint32_t bitmapW, uint32_t bitmapH, Rect* bounds, const float* pos) { + float width = (float) glyph->mBitmapWidth; + float height = (float) glyph->mBitmapHeight; + SkPoint p[4]; - p[0].iset(glyph->mBitmapLeft, glyph->mBitmapTop + glyph->mBitmapHeight); - p[1].iset(glyph->mBitmapLeft + glyph->mBitmapWidth, glyph->mBitmapTop + glyph->mBitmapHeight); - p[2].iset(glyph->mBitmapLeft + glyph->mBitmapWidth, glyph->mBitmapTop); + p[0].iset(glyph->mBitmapLeft, glyph->mBitmapTop + height); + p[1].iset(glyph->mBitmapLeft + width, glyph->mBitmapTop + height); + p[2].iset(glyph->mBitmapLeft + width, glyph->mBitmapTop); p[3].iset(glyph->mBitmapLeft, glyph->mBitmapTop); mDescription.mInverseLookupTransform.mapPoints(p, 4); |