From 0c98f99cb8207ff5b08e33da4b7e024312c5d9c9 Mon Sep 17 00:00:00 2001 From: Andy McFadden Date: Tue, 19 Nov 2013 12:50:17 -0800 Subject: screenrecord fixes Fixes to issues identified during code review. (cherry-pick from I2203694acb5c0544878f64f4347d29ad1a0725c4) Change-Id: I58fcb5264fc17b26fac4b03f95d35262e9e199e2 --- cmds/screenrecord/TextRenderer.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'cmds/screenrecord/TextRenderer.cpp') diff --git a/cmds/screenrecord/TextRenderer.cpp b/cmds/screenrecord/TextRenderer.cpp index 048d382..784055c 100644 --- a/cmds/screenrecord/TextRenderer.cpp +++ b/cmds/screenrecord/TextRenderer.cpp @@ -102,8 +102,9 @@ status_t TextRenderer::loadIntoTexture() { } uint32_t potHeight = powerOfTwoCeil(FontBitmap::height); - uint32_t* rgbaPixels = new uint32_t[FontBitmap::width * potHeight]; + uint8_t* rgbaPixels = new uint8_t[FontBitmap::width * potHeight * 4]; memset(rgbaPixels, 0, FontBitmap::width * potHeight * 4); + uint8_t* pix = rgbaPixels; for (unsigned int i = 0; i < FontBitmap::width * FontBitmap::height; i++) { uint8_t alpha, color; @@ -116,7 +117,10 @@ status_t TextRenderer::loadIntoTexture() { color = FontBitmap::pixels[i] & ~1; alpha = 0xff; } - rgbaPixels[i] = (alpha << 24) | (color << 16) | (color << 8) | color; + *pix++ = color; + *pix++ = color; + *pix++ = color; + *pix++ = alpha; } glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, FontBitmap::width, potHeight, 0, @@ -151,11 +155,20 @@ float TextRenderer::computeScaledStringWidth(const String8& str8) const { return computeScaledStringWidth(str, strlen(str)); } +size_t TextRenderer::glyphIndex(char ch) const { + size_t chi = ch - FontBitmap::firstGlyphChar; + if (chi >= FontBitmap::numGlyphs) { + chi = '?' - FontBitmap::firstGlyphChar; + } + assert(chi < FontBitmap::numGlyphs); + return chi; +} + float TextRenderer::computeScaledStringWidth(const char* str, size_t len) const { float width = 0.0f; for (size_t i = 0; i < len; i++) { - size_t chi = str[i] - FontBitmap::firstGlyphChar; + size_t chi = glyphIndex(str[i]); float glyphWidth = FontBitmap::glyphWidth[chi]; width += (glyphWidth - 1 - FontBitmap::outlineWidth) * mScale; } @@ -182,11 +195,7 @@ void TextRenderer::drawString(const Program& program, const float* texMatrix, float fullTexWidth = FontBitmap::width; float fullTexHeight = powerOfTwoCeil(FontBitmap::height); for (size_t i = 0; i < len; i++) { - size_t chi = str[i] - FontBitmap::firstGlyphChar; - if (chi >= FontBitmap::numGlyphs) { - chi = '?' - FontBitmap::firstGlyphChar; - assert(chi < FontBitmap::numGlyphs); - } + size_t chi = glyphIndex(str[i]); float glyphWidth = FontBitmap::glyphWidth[chi]; float glyphHeight = FontBitmap::maxGlyphHeight; -- cgit v1.1