summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Podtelezhnikov <apodtele@gmail.com>2021-06-30 10:54:59 -0400
committerAlexei Podtelezhnikov <apodtele@gmail.com>2021-06-30 10:54:59 -0400
commitf27b4834b7dcf9d667fd5173106be0cddb0ec1c2 (patch)
treefa840ee2acc80bfd3af4f7fe75356ab60fd17f66
parent90ecac4118eb18b2f9e2f72cc0e0fdd42144bfe3 (diff)
downloadfreetype2-f27b4834b7dcf9d667fd5173106be0cddb0ec1c2.tar.gz
* src/raster/ftraster.c (Render_Single_Pass): Simplify `band_stack'.
-rw-r--r--ChangeLog4
-rw-r--r--src/raster/ftraster.c26
2 files changed, 9 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index 9a2cabc9c..a1de34602 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2021-06-30 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ * src/raster/ftraster.c (Render_Single_Pass): Simplify `band_stack'.
+
2021-06-29 Alexei Podtelezhnikov <apodtele@gmail.com>
[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];
}
}