diff --git a/ChangeLog b/ChangeLog index fc6d8b00f..92b2c4120 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2021-06-25 Alexei Podtelezhnikov + + [raster] Make `band_top' local variable. + + * src/raster/ftraster.c (black_TWorker): Move `band_top' from here... + (Render_Single_Pass): ... to here, and refactor. + (Render_Glyph): Updated. + 2021-06-25 Alexei Podtelezhnikov [raster] Adjust sub-band bisecting limits. diff --git a/src/raster/ftraster.c b/src/raster/ftraster.c index b88a436e0..31ea65575 100644 --- a/src/raster/ftraster.c +++ b/src/raster/ftraster.c @@ -529,7 +529,6 @@ black_TBand band_stack[16]; /* band stack used for sub-banding */ /* enough for signed short bands */ - Int band_top; /* band stack top */ }; @@ -3034,12 +3033,13 @@ Render_Single_Pass( RAS_ARGS Bool flipped ) { Short i, j, k; + Int band_top = 0; - while ( ras.band_top >= 0 ) + do { - ras.maxY = (Long)ras.band_stack[ras.band_top].y_max * ras.precision; - ras.minY = (Long)ras.band_stack[ras.band_top].y_min * ras.precision; + ras.maxY = (Long)ras.band_stack[band_top].y_max * ras.precision; + ras.minY = (Long)ras.band_stack[band_top].y_min * ras.precision; ras.top = ras.buff; @@ -3052,33 +3052,29 @@ /* sub-banding */ - i = ras.band_stack[ras.band_top].y_min; - j = ras.band_stack[ras.band_top].y_max; + i = ras.band_stack[band_top].y_min; + j = ras.band_stack[band_top].y_max; if ( i == j ) - { - ras.band_top = 0; - return ras.error; /* still Raster_Overflow */ - } k = (Short)( ( i + j ) / 2 ); - ras.band_stack[ras.band_top + 1].y_min = (Short)( k + 1 ); - ras.band_stack[ras.band_top + 1].y_max = j; + ras.band_stack[band_top].y_max = k; - ras.band_stack[ras.band_top].y_max = k; + ras.band_stack[band_top + 1].y_min = (Short)( k + 1 ); + ras.band_stack[band_top + 1].y_max = j; - ras.band_top++; + band_top++; } else { if ( ras.fProfile ) if ( Draw_Sweep( RAS_VAR ) ) return ras.error; - ras.band_top--; + band_top--; } - } + } while ( band_top >= 0 ); return Raster_Err_Ok; } @@ -3128,7 +3124,6 @@ ras.Proc_Sweep_Drop = Vertical_Sweep_Drop; ras.Proc_Sweep_Step = Vertical_Sweep_Step; - ras.band_top = 0; ras.band_stack[0].y_min = 0; ras.band_stack[0].y_max = (Short)( ras.target.rows - 1 ); @@ -3151,7 +3146,6 @@ ras.Proc_Sweep_Drop = Horizontal_Sweep_Drop; ras.Proc_Sweep_Step = Horizontal_Sweep_Step; - ras.band_top = 0; ras.band_stack[0].y_min = 0; ras.band_stack[0].y_max = (Short)( ras.target.width - 1 );