Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf225194 authored by Chris Craik's avatar Chris Craik Committed by Android Git Automerger
Browse files

am a763bb83: Merge "Saturate alpha values when overlaying glyphs" into mnc-dev

* commit 'a763bb83':
  Saturate alpha values when overlaying glyphs
parents 1809cfaa a763bb83
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -228,15 +228,15 @@ void Font::drawCachedGlyphBitmap(CachedGlyphInfo* glyph, int x, int y, uint8_t*
    for (uint32_t cacheY = startY, bitmapY = dstY * bitmapWidth; cacheY < endY;
            cacheY += srcStride, bitmapY += bitmapWidth) {

        if (formatSize == 1) {
            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 + alpha_channel_offset];
            }
            uint8_t* dst = &(bitmap[bitmapY + dstX + i]);
            const uint8_t& src = cacheBuffer[
                    cacheY + (glyph->mStartX + i)*formatSize + alpha_channel_offset];
            // Add alpha values to a max of 255, full opacity. This is done to handle
            // fonts/strings where glyphs overlap.
            *dst = std::min(*dst + src, 255);
        }
    }

}

void Font::drawCachedGlyph(CachedGlyphInfo* glyph, float x, float hOffset, float vOffset,