ref: 38d1002b8ab6057a54d3483bc0a6f3808d44794d
parent: 8a2c7f8fb804f3b74ea062f1c367b78d12c5b3f2
author: David Turner <[email protected]>
date: Thu Jan 4 13:50:12 EST 2007
* src/raster/ftraster.c: removing dynamically generated "count_table", and replace it with a constant array of bytes
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2007-01-04 David Turner <[email protected]>
+ * src/raster/ftraster.c: removing dynamically generated "count_table",
+ and replace it with a constant array of bytes
+
* src/raster/ftraster.c, src/smooth/ftgrays.c: small optimization, the
rasterizers now uses the render pool to store their state during scanline
convertion. this saves about 6 KB of heap space for each FT_Library instance
--- a/src/raster/ftraster.c
+++ b/src/raster/ftraster.c
@@ -498,8 +498,6 @@
TBand band_stack[16]; /* band stack used for sub-banding */
Int band_top; /* band stack top */
- Int* count_table;
-
#ifdef FT_RASTER_OPTION_ANTI_ALIASING
Byte* grays;
@@ -528,8 +526,6 @@
long buffer_size;
void* memory;
PWorker worker;
- Int count_table[256]; /* Look-up table used to quickly count */
- /* set bits in a gray 2x2 cell */
Byte grays[5];
Short gray_width;
@@ -547,6 +543,27 @@
#endif /* FT_STATIC_RASTER */
+static const char count_table[256] =
+{
+ 0 , 1 , 1 , 2 , 1 , 2 , 2 , 3 , 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4,
+ 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
+ 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
+ 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
+ 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
+ 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
+ 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
+ 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
+ 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5,
+ 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
+ 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
+ 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
+ 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6,
+ 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
+ 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7,
+ 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7 , 5 , 6 , 6 , 7 , 6 , 7 , 7 , 8 };
+
+
+
/*************************************************************************/
/*************************************************************************/
/** **/
@@ -2494,7 +2511,7 @@
{
Int c1, c2;
PByte pix, bit, bit2;
- Int* count = ras.count_table;
+ char* count = (char*)count_table;
Byte* grays;
@@ -3155,24 +3172,10 @@
static void
ft_black_init( PRaster raster )
{
- FT_UInt n;
- FT_ULong c;
+ FT_UNUSED( raster );
-
- /* setup count table */
- for ( n = 0; n < 256; n++ )
- {
- c = ( n & 0x55 ) + ( ( n & 0xAA ) >> 1 );
-
- c = ( ( c << 6 ) & 0x3000 ) |
- ( ( c << 4 ) & 0x0300 ) |
- ( ( c << 2 ) & 0x0030 ) |
- (c & 0x0003 );
-
- raster->count_table[n] = (UInt)c;
- }
-
#ifdef FT_RASTER_OPTION_ANTI_ALIASING
+ FT_UInt n;
/* set default 5-levels gray palette */
for ( n = 0; n < 5; n++ )
@@ -3335,7 +3338,6 @@
ras.outline = *outline;
ras.target = *target_map;
- worker->count_table = raster->count_table;
worker->buff = (PLong) raster->buffer;
worker->sizeBuff = worker->buff + raster->buffer_size/sizeof(Long);
#ifdef FT_RASTER_OPTION_ANTI_ALIASING