diff --git a/ChangeLog b/ChangeLog index 9a2cabc9c..a1de34602 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2021-06-30 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Render_Single_Pass): Simplify `band_stack'. + 2021-06-29 Alexei Podtelezhnikov [raster] Do not skip the second pass without dropout control. diff --git a/src/raster/ftraster.c b/src/raster/ftraster.c index 74c290879..fbcf8d22a 100644 --- a/src/raster/ftraster.c +++ b/src/raster/ftraster.c @@ -366,16 +366,6 @@ typedef PProfile* PProfileList; - /* Simple record used to implement a stack of bands, required */ - /* by the sub-banding mechanism */ - typedef struct black_TBand_ - { - Int y_min; /* band's minimum */ - Int y_max; /* band's maximum */ - - } black_TBand; - - #define AlignProfileSize \ ( ( sizeof ( TProfile ) + sizeof ( Alignment ) - 1 ) / sizeof ( Long ) ) @@ -3027,9 +3017,7 @@ { Int y_mid; Int band_top = 0; - - black_TBand band_stack[16]; /* band stack used for sub-banding */ - /* enough for signed short bands */ + Int band_stack[32]; /* enough to bisect 32-bit int bands */ while ( 1 ) @@ -3053,12 +3041,8 @@ y_mid = ( y_min + y_max ) >> 1; - band_stack[band_top].y_min = y_min; - band_stack[band_top].y_max = y_mid; - - band_top++; - - y_min = y_mid + 1; + band_stack[band_top++] = y_min; + y_min = y_mid + 1; } else { @@ -3069,8 +3053,8 @@ if ( --band_top < 0 ) break; - y_min = band_stack[band_top].y_min; - y_max = band_stack[band_top].y_max; + y_max = y_min - 1; + y_min = band_stack[band_top]; } }