summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Podtelezhnikov <apodtele@gmail.com>2021-06-28 10:22:03 -0400
committerAlexei Podtelezhnikov <apodtele@gmail.com>2021-06-28 10:22:03 -0400
commit3a278381ae1d11841ac4c2986eaa66bd644ebe35 (patch)
treeb62a8c4f9eeb07aefd038675bbcce30e40c84286
parentfb4511eb9a8fa1869e971e72b05d438fec43bb88 (diff)
downloadfreetype2-3a278381ae1d11841ac4c2986eaa66bd644ebe35.tar.gz
[raster] Clean up vertical sweep.
* src/raster/ftraster.c (black_TWorker): Replace the current line offset with the pointer and drop the increment. (Function_Sweep_Init): Take values as arguments instead of pointers. (Vertical_Sweep_*, Horizontal_Sweep_Init, Draw_Sweep): Updated.
-rw-r--r--ChangeLog9
-rw-r--r--src/raster/ftraster.c33
2 files changed, 23 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index 92b2c4120..8c079d101 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2021-06-28 Alexei Podtelezhnikov <apodtele@gmail.com>
+
+ [raster] Clean up vertical sweep.
+
+ * src/raster/ftraster.c (black_TWorker): Replace the current line
+ offset with the pointer and drop the increment.
+ (Function_Sweep_Init): Take values as arguments instead of pointers.
+ (Vertical_Sweep_*, Horizontal_Sweep_Init, Draw_Sweep): Updated.
+
2021-06-25 Alexei Podtelezhnikov <apodtele@gmail.com>
[raster] Make `band_top' local variable.
diff --git a/src/raster/ftraster.c b/src/raster/ftraster.c
index 31ea65575..c330e0dfb 100644
--- a/src/raster/ftraster.c
+++ b/src/raster/ftraster.c
@@ -417,8 +417,8 @@
/* prototypes used for sweep function dispatch */
typedef void
- Function_Sweep_Init( RAS_ARGS Short* min,
- Short* max );
+ Function_Sweep_Init( RAS_ARGS Short min,
+ Short max );
typedef void
Function_Sweep_Span( RAS_ARGS Short y,
@@ -487,6 +487,7 @@
UShort bWidth; /* target bitmap width */
PByte bOrigin; /* target bitmap bottom-left origin */
+ PByte bLine; /* target bitmap current line */
Long lastX, lastY;
Long minY, maxY;
@@ -508,9 +509,6 @@
FT_Bitmap target; /* description of target bit/pixmap */
FT_Outline outline;
- Long traceOfs; /* current offset in target bitmap */
- Short traceIncr; /* sweep's increment in target bitmap */
-
/* dispatch variables */
Function_Sweep_Init* Proc_Sweep_Init;
@@ -2205,16 +2203,13 @@
*/
static void
- Vertical_Sweep_Init( RAS_ARGS Short* min,
- Short* max )
+ Vertical_Sweep_Init( RAS_ARGS Short min,
+ Short max )
{
- Long pitch = ras.target.pitch;
-
FT_UNUSED( max );
- ras.traceIncr = (Short)-pitch;
- ras.traceOfs = -*min * pitch;
+ ras.bLine = ras.bOrigin - min * ras.target.pitch;
}
@@ -2276,7 +2271,7 @@
f1 = (Byte) ( 0xFF >> ( e1 & 7 ) );
f2 = (Byte) ~( 0x7F >> ( e2 & 7 ) );
- target = ras.bOrigin + ras.traceOfs + c1;
+ target = ras.bLine + c1;
c2 -= c1;
if ( c2 > 0 )
@@ -2428,8 +2423,8 @@
c1 = (Short)( e1 >> 3 );
f1 = (Short)( e1 & 7 );
- if ( e1 >= 0 && e1 < ras.bWidth &&
- ras.bOrigin[ras.traceOfs + c1] & ( 0x80 >> f1 ) )
+ if ( e1 >= 0 && e1 < ras.bWidth &&
+ ras.bLine[c1] & ( 0x80 >> f1 ) )
goto Exit;
}
else
@@ -2445,7 +2440,7 @@
c1 = (Short)( e1 >> 3 );
f1 = (Short)( e1 & 7 );
- ras.bOrigin[ras.traceOfs + c1] |= (char)( 0x80 >> f1 );
+ ras.bLine[c1] |= (char)( 0x80 >> f1 );
}
Exit:
@@ -2456,7 +2451,7 @@
static void
Vertical_Sweep_Step( RAS_ARG )
{
- ras.traceOfs += ras.traceIncr;
+ ras.bLine -= ras.target.pitch;
}
@@ -2470,8 +2465,8 @@
*/
static void
- Horizontal_Sweep_Init( RAS_ARGS Short* min,
- Short* max )
+ Horizontal_Sweep_Init( RAS_ARGS Short min,
+ Short max )
{
/* nothing, really */
FT_UNUSED_RASTER;
@@ -2741,7 +2736,7 @@
/* now initialize the sweep */
- ras.Proc_Sweep_Init( RAS_VARS &min_Y, &max_Y );
+ ras.Proc_Sweep_Init( RAS_VARS min_Y, max_Y );
/* then compute the distance of each profile from min_Y */