|
|
|
@ -4,7 +4,7 @@ |
|
|
|
|
/* */ |
|
|
|
|
/* FreeType API for color filtering of subpixel bitmap glyphs (body). */ |
|
|
|
|
/* */ |
|
|
|
|
/* Copyright 2006, 2008-2010, 2013 by */ |
|
|
|
|
/* Copyright 2006, 2008-2010, 2013, 2014 by */ |
|
|
|
|
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
|
|
|
|
/* */ |
|
|
|
|
/* This file is part of the FreeType project, and may only be used, */ |
|
|
|
@ -46,9 +46,12 @@ |
|
|
|
|
FT_Byte* line = bitmap->buffer; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* `fir' and `pix' must be at least 32 bit wide, since the sum of */ |
|
|
|
|
/* the values in `weights' can exceed 0xFF */ |
|
|
|
|
|
|
|
|
|
for ( ; height > 0; height--, line += bitmap->pitch ) |
|
|
|
|
{ |
|
|
|
|
FT_UInt fir[5]; |
|
|
|
|
FT_UInt fir[4]; /* below, `pix' is used as the 5th element */ |
|
|
|
|
FT_UInt val1, xx; |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -57,7 +60,6 @@ |
|
|
|
|
fir[1] = weights[3] * val1; |
|
|
|
|
fir[2] = weights[4] * val1; |
|
|
|
|
fir[3] = 0; |
|
|
|
|
fir[4] = 0; |
|
|
|
|
|
|
|
|
|
val1 = line[1]; |
|
|
|
|
fir[0] += weights[1] * val1; |
|
|
|
@ -78,7 +80,7 @@ |
|
|
|
|
fir[3] = weights[4] * val; |
|
|
|
|
|
|
|
|
|
pix >>= 8; |
|
|
|
|
pix |= -( pix >> 8 ); |
|
|
|
|
pix |= (FT_UInt)-(FT_Int)( pix >> 8 ); |
|
|
|
|
line[xx - 2] = (FT_Byte)pix; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -87,11 +89,11 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pix = fir[0] >> 8; |
|
|
|
|
pix |= -( pix >> 8 ); |
|
|
|
|
pix |= (FT_UInt)-(FT_Int)( pix >> 8 ); |
|
|
|
|
line[xx - 2] = (FT_Byte)pix; |
|
|
|
|
|
|
|
|
|
pix = fir[1] >> 8; |
|
|
|
|
pix |= -( pix >> 8 ); |
|
|
|
|
pix |= (FT_UInt)-(FT_Int)( pix >> 8 ); |
|
|
|
|
line[xx - 1] = (FT_Byte)pix; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -107,7 +109,7 @@ |
|
|
|
|
for ( ; width > 0; width--, column++ ) |
|
|
|
|
{ |
|
|
|
|
FT_Byte* col = column; |
|
|
|
|
FT_UInt fir[5]; |
|
|
|
|
FT_UInt fir[4]; /* below, `pix' is used as the 5th element */ |
|
|
|
|
FT_UInt val1, yy; |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -116,7 +118,6 @@ |
|
|
|
|
fir[1] = weights[3] * val1; |
|
|
|
|
fir[2] = weights[4] * val1; |
|
|
|
|
fir[3] = 0; |
|
|
|
|
fir[4] = 0; |
|
|
|
|
col += pitch; |
|
|
|
|
|
|
|
|
|
val1 = col[0]; |
|
|
|
@ -139,7 +140,7 @@ |
|
|
|
|
fir[3] = weights[4] * val; |
|
|
|
|
|
|
|
|
|
pix >>= 8; |
|
|
|
|
pix |= -( pix >> 8 ); |
|
|
|
|
pix |= (FT_UInt)-(FT_Int)( pix >> 8 ); |
|
|
|
|
col[-2 * pitch] = (FT_Byte)pix; |
|
|
|
|
col += pitch; |
|
|
|
|
} |
|
|
|
@ -149,11 +150,11 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pix = fir[0] >> 8; |
|
|
|
|
pix |= -( pix >> 8 ); |
|
|
|
|
pix |= (FT_UInt)-(FT_Int)( pix >> 8 ); |
|
|
|
|
col[-2 * pitch] = (FT_Byte)pix; |
|
|
|
|
|
|
|
|
|
pix = fir[1] >> 8; |
|
|
|
|
pix |= -( pix >> 8 ); |
|
|
|
|
pix |= (FT_UInt)-(FT_Int)( pix >> 8 ); |
|
|
|
|
col[-pitch] = (FT_Byte)pix; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|