[PATCH] dwrite: When assembling run bitmap combine instead of overwriting
Nikolay Sivov
nsivov at codeweavers.com
Mon Nov 2 14:34:21 CST 2015
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/dwrite/font.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index c00aeed..2c52840 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -4269,7 +4269,8 @@ static void glyphrunanalysis_render(struct dwrite_glyphrunanalysis *analysis, DW
if (type == DWRITE_TEXTURE_CLEARTYPE_3x1) {
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++)
- dst[3*x] = dst[3*x+1] = dst[3*x+2] = (src[x / 8] & masks[x % 8]) ? DWRITE_ALPHA_MAX : 0;
+ if (src[x / 8] & masks[x % 8])
+ dst[3*x] = dst[3*x+1] = dst[3*x+2] = DWRITE_ALPHA_MAX;
src += glyph_bitmap.pitch;
dst += (analysis->bounds.right - analysis->bounds.left) * 3;
}
@@ -4277,7 +4278,8 @@ static void glyphrunanalysis_render(struct dwrite_glyphrunanalysis *analysis, DW
else {
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++)
- dst[x] = (src[x / 8] & masks[x % 8]) ? DWRITE_ALPHA_MAX : 0;
+ if (src[x / 8] & masks[x % 8])
+ dst[x] = DWRITE_ALPHA_MAX;
src += get_dib_stride(width, 1);
dst += analysis->bounds.right - analysis->bounds.left;
}
@@ -4287,7 +4289,7 @@ static void glyphrunanalysis_render(struct dwrite_glyphrunanalysis *analysis, DW
/* at this point it's DWRITE_TEXTURE_CLEARTYPE_3x1 with 8bpp src bitmap */
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++)
- dst[3*x] = dst[3*x+1] = dst[3*x+2] = src[x];
+ dst[3*x] = dst[3*x+1] = dst[3*x+2] = src[x] | dst[3*x];
src += glyph_bitmap.pitch;
dst += (analysis->bounds.right - analysis->bounds.left) * 3;
}
--
2.6.1
More information about the wine-patches
mailing list