Alexei Podtelezhnikov pushed to branch master at FreeType / FreeType
Commits:
-
d77dd24b
by Alexei Podtelezhnikov (Алексей Подтележников) at 2023-11-21T15:16:56+00:00
[raster] Sweep polishing.
* src/raster/ftraster.c (*_Sweep_Span): Polish.
(*_Sweep_Drop): Restore tracing, polish.
(Draw_Sweep): Simplify the dropout processing loop.
1 changed file:
Changes:
src/raster/ftraster.c
... |
... |
@@ -1989,7 +1989,8 @@ |
1989
|
1989
|
FT_F26Dot6 x1,
|
1990
|
1990
|
FT_F26Dot6 x2 )
|
1991
|
1991
|
{
|
1992
|
|
- Int e1, e2;
|
|
1992
|
+ Int e1 = (Int)TRUNC( CEILING( x1 ) );
|
|
1993
|
+ Int e2 = (Int)TRUNC( FLOOR( x2 ) );
|
1993
|
1994
|
|
1994
|
1995
|
FT_UNUSED( y );
|
1995
|
1996
|
|
... |
... |
@@ -1999,12 +2000,9 @@ |
1999
|
2000
|
ras.precision_bits, (double)x1 / (double)ras.precision,
|
2000
|
2001
|
ras.precision_bits, (double)x2 / (double)ras.precision ));
|
2001
|
2002
|
|
2002
|
|
- e1 = (Int)TRUNC( CEILING( x1 ) );
|
2003
|
|
- e2 = (Int)TRUNC( FLOOR( x2 ) );
|
2004
|
|
-
|
2005
|
2003
|
if ( e2 >= 0 && e1 <= ras.bRight )
|
2006
|
2004
|
{
|
2007
|
|
- Byte* target;
|
|
2005
|
+ PByte target;
|
2008
|
2006
|
|
2009
|
2007
|
Int c1, f1, c2, f2;
|
2010
|
2008
|
|
... |
... |
@@ -2066,19 +2064,22 @@ |
2066
|
2064
|
/* otherwise check that the other pixel isn't set */
|
2067
|
2065
|
else if ( e2 >=0 && e2 <= ras.bRight )
|
2068
|
2066
|
{
|
2069
|
|
- c1 = (Int)( e2 >> 3 );
|
2070
|
|
- f1 = (Int)( e2 & 7 );
|
|
2067
|
+ c1 = e2 >> 3;
|
|
2068
|
+ f1 = 0x80 >> ( e2 & 7 );
|
2071
|
2069
|
|
2072
|
|
- if ( ras.bLine[c1] & ( 0x80 >> f1 ) )
|
|
2070
|
+ if ( ras.bLine[c1] & f1 )
|
2073
|
2071
|
return;
|
2074
|
2072
|
}
|
2075
|
2073
|
|
2076
|
2074
|
if ( e1 >= 0 && e1 <= ras.bRight )
|
2077
|
2075
|
{
|
2078
|
|
- c1 = (Int)( e1 >> 3 );
|
2079
|
|
- f1 = (Int)( e1 & 7 );
|
|
2076
|
+ c1 = e1 >> 3;
|
|
2077
|
+ f1 = 0x80 >> ( e1 & 7 );
|
|
2078
|
+
|
|
2079
|
+ FT_TRACE7(( " y=%d x=%d%s\n", y, e1,
|
|
2080
|
+ ras.bLine[c1] & f1 ? " redundant" : "" ));
|
2080
|
2081
|
|
2081
|
|
- ras.bLine[c1] |= 0x80 >> f1;
|
|
2082
|
+ ras.bLine[c1] |= f1;
|
2082
|
2083
|
}
|
2083
|
2084
|
}
|
2084
|
2085
|
|
... |
... |
@@ -2115,7 +2116,8 @@ |
2115
|
2116
|
FT_F26Dot6 x1,
|
2116
|
2117
|
FT_F26Dot6 x2 )
|
2117
|
2118
|
{
|
2118
|
|
- Long e1, e2;
|
|
2119
|
+ Long e1 = CEILING( x1 );
|
|
2120
|
+ Long e2 = FLOOR( x2 );
|
2119
|
2121
|
|
2120
|
2122
|
|
2121
|
2123
|
FT_TRACE7(( " x=%d y=[% .*f;% .*f]",
|
... |
... |
@@ -2129,8 +2131,6 @@ |
2129
|
2131
|
/* */
|
2130
|
2132
|
/* XXX: Can we handle horizontal lines better and drop this? */
|
2131
|
2133
|
|
2132
|
|
- e1 = CEILING( x1 );
|
2133
|
|
-
|
2134
|
2134
|
if ( x1 == e1 )
|
2135
|
2135
|
{
|
2136
|
2136
|
e1 = TRUNC( e1 );
|
... |
... |
@@ -2151,8 +2151,6 @@ |
2151
|
2151
|
}
|
2152
|
2152
|
}
|
2153
|
2153
|
|
2154
|
|
- e2 = FLOOR ( x2 );
|
2155
|
|
-
|
2156
|
2154
|
if ( x2 == e2 )
|
2157
|
2155
|
{
|
2158
|
2156
|
e2 = TRUNC( e2 );
|
... |
... |
@@ -2209,6 +2207,9 @@ |
2209
|
2207
|
bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.bPitch;
|
2210
|
2208
|
f1 = 0x80 >> ( y & 7 );
|
2211
|
2209
|
|
|
2210
|
+ FT_TRACE7(( " x=%d y=%d%s\n", y, e1,
|
|
2211
|
+ *bits & f1 ? " redundant" : "" ));
|
|
2212
|
+
|
2212
|
2213
|
*bits |= f1;
|
2213
|
2214
|
}
|
2214
|
2215
|
}
|
... |
... |
@@ -2402,7 +2403,7 @@ |
2402
|
2403
|
P_Left = draw_left;
|
2403
|
2404
|
P_Right = draw_right;
|
2404
|
2405
|
|
2405
|
|
- while ( dropouts && P_Left && P_Right )
|
|
2406
|
+ while ( dropouts )
|
2406
|
2407
|
{
|
2407
|
2408
|
if ( P_Left->flags & Dropout )
|
2408
|
2409
|
{
|
|