]> granicus.if.org Git - libass/commitdiff
Partial fix for semitransparent glyph outlines.
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>
Mon, 13 Nov 2006 16:35:15 +0000 (16:35 +0000)
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>
Mon, 13 Nov 2006 16:35:15 +0000 (16:35 +0000)
This fix removes semitransparent area (less then pixel width) between glyph and
it's outline. Instead, it makes them overlap a little. It usually looks much
better this way.
Complete fix seems impossible with the current output format (single color
alpha bitmaps). The right way is to blend both glyph and outline into one
bitmap so that 2 pixels with 50% transparency produce a fully solid one.
This requires RGBA bitmap output from libass.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@20890 b3059339-0415-0410-9bf9-f77b7e298cf2

libass/ass_bitmap.c

index 3076713a66cccc95439f8183fd8ef697bd95c538..baadc55415781af2d54d1d89f149c0669ea829f4 100644 (file)
@@ -219,7 +219,7 @@ static bitmap_t* fix_outline_and_shadow(bitmap_t* bm_g, bitmap_t* bm_o)
                        unsigned char c_g, c_o;
                        c_g = g[x];
                        c_o = o[x];
-                       o[x] = (c_o > c_g) ? c_o - c_g : 0;
+                       o[x] = (c_o > c_g) ? c_o : 0;
                        s[x] = (c_o < 0xFF - c_g) ? c_o + c_g : 0xFF;
                }
                g += bm_g->w;