diff options
author | Chris Craik <ccraik@android.com> | 2014-05-19 19:32:38 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-05-19 19:32:38 +0000 |
commit | 3c769ec02b8b82bec4dec2169bf76af58be94a9a (patch) | |
tree | 2453a2cad31cbf378ac6884a8db96c3c88443aed /libs | |
parent | dc0c52f4f592f6b9731939f0031e977a70515d4a (diff) | |
parent | 00fabcbeb035fb513293ea01d245002f40b3234f (diff) | |
download | frameworks_base-3c769ec02b8b82bec4dec2169bf76af58be94a9a.zip frameworks_base-3c769ec02b8b82bec4dec2169bf76af58be94a9a.tar.gz frameworks_base-3c769ec02b8b82bec4dec2169bf76af58be94a9a.tar.bz2 |
am 00fabcbe: am b1708e9b: Merge "Use alpha channel instead of red in drawCachedGlyphBitmap"
* commit '00fabcbeb035fb513293ea01d245002f40b3234f':
Use alpha channel instead of red in drawCachedGlyphBitmap
Diffstat (limited to 'libs')
-rw-r--r-- | libs/hwui/PixelBuffer.h | 19 | ||||
-rw-r--r-- | libs/hwui/font/Font.cpp | 3 |
2 files changed, 21 insertions, 1 deletions
diff --git a/libs/hwui/PixelBuffer.h b/libs/hwui/PixelBuffer.h index 9725a61..04225a2 100644 --- a/libs/hwui/PixelBuffer.h +++ b/libs/hwui/PixelBuffer.h @@ -175,6 +175,25 @@ public: return 0; } + /** + * Returns the alpha channel offset in the specified format. + * + * Supported formats: + * GL_ALPHA + * GL_RGBA + */ + static uint32_t formatAlphaOffset(GLenum format) { + switch (format) { + case GL_ALPHA: + return 0; + case GL_RGBA: + return 3; + } + + ALOGE("unsupported format: %d",format); + return 0; + } + protected: /** * Creates a new render buffer in the specified format and dimensions. diff --git a/libs/hwui/font/Font.cpp b/libs/hwui/font/Font.cpp index d829f58..e69b0cc 100644 --- a/libs/hwui/font/Font.cpp +++ b/libs/hwui/font/Font.cpp @@ -217,6 +217,7 @@ void Font::drawCachedGlyphBitmap(CachedGlyphInfo* glyph, int x, int y, uint8_t* PixelBuffer* pixelBuffer = cacheTexture->getPixelBuffer(); uint32_t formatSize = PixelBuffer::formatSize(pixelBuffer->getFormat()); + uint32_t alpha_channel_offset = PixelBuffer::formatAlphaOffset(pixelBuffer->getFormat()); uint32_t cacheWidth = cacheTexture->getWidth(); uint32_t srcStride = formatSize * cacheWidth; uint32_t startY = glyph->mStartY * srcStride; @@ -231,7 +232,7 @@ void Font::drawCachedGlyphBitmap(CachedGlyphInfo* glyph, int x, int y, uint8_t* memcpy(&bitmap[bitmapY + dstX], &cacheBuffer[cacheY + glyph->mStartX], glyph->mBitmapWidth); } else { for (uint32_t i = 0; i < glyph->mBitmapWidth; ++i) { - bitmap[bitmapY + dstX + i] = cacheBuffer[cacheY + (glyph->mStartX + i)*formatSize]; + bitmap[bitmapY + dstX + i] = cacheBuffer[cacheY + (glyph->mStartX + i)*formatSize + alpha_channel_offset]; } } } |