diff options
author | Chris Craik <ccraik@android.com> | 2014-05-19 19:27:52 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-05-19 19:27:52 +0000 |
commit | 00fabcbeb035fb513293ea01d245002f40b3234f (patch) | |
tree | 18d5a94677faf88715fc9a40e1ef270ae04dedca /libs | |
parent | 7099995be5bfadcb03973d4ae952fd345bae264b (diff) | |
parent | b1708e9b764268a06d91219a5c39ee9efd32ab00 (diff) | |
download | frameworks_base-00fabcbeb035fb513293ea01d245002f40b3234f.zip frameworks_base-00fabcbeb035fb513293ea01d245002f40b3234f.tar.gz frameworks_base-00fabcbeb035fb513293ea01d245002f40b3234f.tar.bz2 |
am b1708e9b: Merge "Use alpha channel instead of red in drawCachedGlyphBitmap"
* commit 'b1708e9b764268a06d91219a5c39ee9efd32ab00':
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 1d50bd5..b115756 100644 --- a/libs/hwui/font/Font.cpp +++ b/libs/hwui/font/Font.cpp @@ -216,6 +216,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; @@ -230,7 +231,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]; } } } |