|
|
|
@ -979,16 +979,18 @@ typedef ptrdiff_t FT_PtrDist; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
base[4].x = base[2].x; |
|
|
|
|
b = base[1].x; |
|
|
|
|
a = base[3].x = ( base[2].x + b ) / 2; |
|
|
|
|
b = base[1].x = ( base[0].x + b ) / 2; |
|
|
|
|
base[2].x = ( a + b ) / 2; |
|
|
|
|
a = base[0].x + base[1].x; |
|
|
|
|
b = base[1].x + base[2].x; |
|
|
|
|
base[3].x = b >> 1; |
|
|
|
|
base[2].x = ( a + b ) >> 2; |
|
|
|
|
base[1].x = a >> 1; |
|
|
|
|
|
|
|
|
|
base[4].y = base[2].y; |
|
|
|
|
b = base[1].y; |
|
|
|
|
a = base[3].y = ( base[2].y + b ) / 2; |
|
|
|
|
b = base[1].y = ( base[0].y + b ) / 2; |
|
|
|
|
base[2].y = ( a + b ) / 2; |
|
|
|
|
a = base[0].y + base[1].y; |
|
|
|
|
b = base[1].y + base[2].y; |
|
|
|
|
base[3].y = b >> 1; |
|
|
|
|
base[2].y = ( a + b ) >> 2; |
|
|
|
|
base[1].y = a >> 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1060,28 +1062,32 @@ typedef ptrdiff_t FT_PtrDist; |
|
|
|
|
static void |
|
|
|
|
gray_split_cubic( FT_Vector* base ) |
|
|
|
|
{ |
|
|
|
|
TPos a, b, c, d; |
|
|
|
|
TPos a, b, c; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
base[6].x = base[3].x; |
|
|
|
|
c = base[1].x; |
|
|
|
|
d = base[2].x; |
|
|
|
|
base[1].x = a = ( base[0].x + c ) / 2; |
|
|
|
|
base[5].x = b = ( base[3].x + d ) / 2; |
|
|
|
|
c = ( c + d ) / 2; |
|
|
|
|
base[2].x = a = ( a + c ) / 2; |
|
|
|
|
base[4].x = b = ( b + c ) / 2; |
|
|
|
|
base[3].x = ( a + b ) / 2; |
|
|
|
|
a = base[0].x + base[1].x; |
|
|
|
|
b = base[1].x + base[2].x; |
|
|
|
|
c = base[2].x + base[3].x; |
|
|
|
|
base[5].x = c >> 1; |
|
|
|
|
c += b; |
|
|
|
|
base[4].x = c >> 2; |
|
|
|
|
base[1].x = a >> 1; |
|
|
|
|
a += b; |
|
|
|
|
base[2].x = a >> 2; |
|
|
|
|
base[3].x = ( a + c ) >> 3; |
|
|
|
|
|
|
|
|
|
base[6].y = base[3].y; |
|
|
|
|
c = base[1].y; |
|
|
|
|
d = base[2].y; |
|
|
|
|
base[1].y = a = ( base[0].y + c ) / 2; |
|
|
|
|
base[5].y = b = ( base[3].y + d ) / 2; |
|
|
|
|
c = ( c + d ) / 2; |
|
|
|
|
base[2].y = a = ( a + c ) / 2; |
|
|
|
|
base[4].y = b = ( b + c ) / 2; |
|
|
|
|
base[3].y = ( a + b ) / 2; |
|
|
|
|
a = base[0].y + base[1].y; |
|
|
|
|
b = base[1].y + base[2].y; |
|
|
|
|
c = base[2].y + base[3].y; |
|
|
|
|
base[5].y = c >> 1; |
|
|
|
|
c += b; |
|
|
|
|
base[4].y = c >> 2; |
|
|
|
|
base[1].y = a >> 1; |
|
|
|
|
a += b; |
|
|
|
|
base[2].y = a >> 2; |
|
|
|
|
base[3].y = ( a + c ) >> 3; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|