Alexei Podtelezhnikov pushed to branch master at FreeType / FreeType
Commits:
-
d8ac180c
by Alexei Podtelezhnikov at 2021-06-23T23:32:02-04:00
-
1e0cef9e
by Alexei Podtelezhnikov at 2021-06-24T00:19:50-04:00
3 changed files:
Changes:
1 |
-2021-07-22 Dominik Röttsches <drott@chromium.org>
|
|
1 |
+2021-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
|
|
2 |
+ |
|
3 |
+ [smooth, raster] Fix up and align error codes.
|
|
4 |
+ |
|
5 |
+ FT_Render_Glyph picked up FAILURE or 1 returned from the raster
|
|
6 |
+ function, which became a confusing error code. Instead, return
|
|
7 |
+ Raster_Overflow in the unlikely event that banding does not help or
|
|
8 |
+ another meaningful error.
|
|
9 |
+ |
|
10 |
+ * src/smooth/ftgrays.c (gray_convert_glyph_inner, gray_convert_glyph):
|
|
11 |
+ Use Raster_Overflow when the rendering pool is exhausted and return it
|
|
12 |
+ if banding does not help.
|
|
13 |
+ (gray_raster_render): Use Smooth_Err_Ok.
|
|
14 |
+ |
|
15 |
+ * src/raster/ftraster.c (Render_Single_Pass): Return Raster_Overflow
|
|
16 |
+ if banding does not help or another error code.
|
|
17 |
+ |
|
18 |
+2021-06-23 Alexei Podtelezhnikov <apodtele@gmail.com>
|
|
19 |
+ |
|
20 |
+ [smooth, raster] Remove synonymous error macros.
|
|
21 |
+ |
|
22 |
+ * src/smooth/ftgays.c [STANDALONE_]: s/ErrRaster_/Smooth_Err_/.
|
|
23 |
+ (gray_convert_glyph_inner): Updated accordingly.
|
|
24 |
+ |
|
25 |
+ * src/raster/ftraster.c [STANDALONE_]: Do not abbreviate error macros.
|
|
26 |
+ (New_Profile, End_Profile, Insert_Y_Turn, Line_Up, Bezier_Up,
|
|
27 |
+ Decompose_Curve, Draw_Sweep, Render_Single_Pass, ft_black_render):
|
|
28 |
+ Updated accordingly.
|
|
29 |
+ |
|
30 |
+2021-06-22 Dominik Röttsches <drott@chromium.org>
|
|
2 | 31 |
|
3 | 32 |
[sfnt] s/PaintTransformed/PaintTransform/, s/transformed/transform/.
|
4 | 33 |
|
... | ... | @@ -8,7 +37,7 @@ |
8 | 37 |
|
9 | 38 |
* src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Ditto.
|
10 | 39 |
|
11 |
-2021-07-22 Dominik Röttsches <drott@chromium.org>
|
|
40 |
+2021-06-22 Dominik Röttsches <drott@chromium.org>
|
|
12 | 41 |
|
13 | 42 |
Move 'COLR' API to `ftcolor.h`.
|
14 | 43 |
|
... | ... | @@ -200,12 +200,13 @@ |
200 | 200 |
#define FT_THROW( e ) FT_ERR_CAT( Raster_Err_, e )
|
201 | 201 |
#endif
|
202 | 202 |
|
203 |
-#define Raster_Err_None 0
|
|
204 |
-#define Raster_Err_Not_Ini -1
|
|
205 |
-#define Raster_Err_Overflow -2
|
|
206 |
-#define Raster_Err_Neg_Height -3
|
|
207 |
-#define Raster_Err_Invalid -4
|
|
208 |
-#define Raster_Err_Unsupported -5
|
|
203 |
+#define Raster_Err_Ok 0
|
|
204 |
+#define Raster_Err_Invalid_Outline -1
|
|
205 |
+#define Raster_Err_Cannot_Render_Glyph -2
|
|
206 |
+#define Raster_Err_Invalid_Argument -3
|
|
207 |
+#define Raster_Err_Raster_Overflow -4
|
|
208 |
+#define Raster_Err_Raster_Uninitialized -5
|
|
209 |
+#define Raster_Err_Raster_Negative_Height -6
|
|
209 | 210 |
|
210 | 211 |
#define ft_memset memset
|
211 | 212 |
|
... | ... | @@ -230,13 +231,6 @@ |
230 | 231 |
|
231 | 232 |
#include "rasterrs.h"
|
232 | 233 |
|
233 |
-#define Raster_Err_None FT_Err_Ok
|
|
234 |
-#define Raster_Err_Not_Ini Raster_Err_Raster_Uninitialized
|
|
235 |
-#define Raster_Err_Overflow Raster_Err_Raster_Overflow
|
|
236 |
-#define Raster_Err_Neg_Height Raster_Err_Raster_Negative_Height
|
|
237 |
-#define Raster_Err_Invalid Raster_Err_Invalid_Outline
|
|
238 |
-#define Raster_Err_Unsupported Raster_Err_Cannot_Render_Glyph
|
|
239 |
- |
|
240 | 234 |
|
241 | 235 |
#endif /* !STANDALONE_ */
|
242 | 236 |
|
... | ... | @@ -660,7 +654,7 @@ |
660 | 654 |
|
661 | 655 |
if ( ras.top >= ras.maxBuff )
|
662 | 656 |
{
|
663 |
- ras.error = FT_THROW( Overflow );
|
|
657 |
+ ras.error = FT_THROW( Raster_Overflow );
|
|
664 | 658 |
return FAILURE;
|
665 | 659 |
}
|
666 | 660 |
|
... | ... | @@ -689,7 +683,7 @@ |
689 | 683 |
|
690 | 684 |
default:
|
691 | 685 |
FT_ERROR(( "New_Profile: invalid profile direction\n" ));
|
692 |
- ras.error = FT_THROW( Invalid );
|
|
686 |
+ ras.error = FT_THROW( Invalid_Outline );
|
|
693 | 687 |
return FAILURE;
|
694 | 688 |
}
|
695 | 689 |
|
... | ... | @@ -731,7 +725,7 @@ |
731 | 725 |
if ( h < 0 )
|
732 | 726 |
{
|
733 | 727 |
FT_ERROR(( "End_Profile: negative height encountered\n" ));
|
734 |
- ras.error = FT_THROW( Neg_Height );
|
|
728 |
+ ras.error = FT_THROW( Raster_Negative_Height );
|
|
735 | 729 |
return FAILURE;
|
736 | 730 |
}
|
737 | 731 |
|
... | ... | @@ -767,7 +761,7 @@ |
767 | 761 |
if ( ras.top >= ras.maxBuff )
|
768 | 762 |
{
|
769 | 763 |
FT_TRACE1(( "overflow in End_Profile\n" ));
|
770 |
- ras.error = FT_THROW( Overflow );
|
|
764 |
+ ras.error = FT_THROW( Raster_Overflow );
|
|
771 | 765 |
return FAILURE;
|
772 | 766 |
}
|
773 | 767 |
|
... | ... | @@ -822,7 +816,7 @@ |
822 | 816 |
ras.maxBuff--;
|
823 | 817 |
if ( ras.maxBuff <= ras.top )
|
824 | 818 |
{
|
825 |
- ras.error = FT_THROW( Overflow );
|
|
819 |
+ ras.error = FT_THROW( Raster_Overflow );
|
|
826 | 820 |
return FAILURE;
|
827 | 821 |
}
|
828 | 822 |
ras.numTurns++;
|
... | ... | @@ -1086,7 +1080,7 @@ |
1086 | 1080 |
size = e2 - e1 + 1;
|
1087 | 1081 |
if ( ras.top + size >= ras.maxBuff )
|
1088 | 1082 |
{
|
1089 |
- ras.error = FT_THROW( Overflow );
|
|
1083 |
+ ras.error = FT_THROW( Raster_Overflow );
|
|
1090 | 1084 |
return FAILURE;
|
1091 | 1085 |
}
|
1092 | 1086 |
|
... | ... | @@ -1271,7 +1265,7 @@ |
1271 | 1265 |
if ( ( top + TRUNC( e2 - e ) + 1 ) >= ras.maxBuff )
|
1272 | 1266 |
{
|
1273 | 1267 |
ras.top = top;
|
1274 |
- ras.error = FT_THROW( Overflow );
|
|
1268 |
+ ras.error = FT_THROW( Raster_Overflow );
|
|
1275 | 1269 |
return FAILURE;
|
1276 | 1270 |
}
|
1277 | 1271 |
|
... | ... | @@ -1967,7 +1961,7 @@ |
1967 | 1961 |
return SUCCESS;
|
1968 | 1962 |
|
1969 | 1963 |
Invalid_Outline:
|
1970 |
- ras.error = FT_THROW( Invalid );
|
|
1964 |
+ ras.error = FT_THROW( Invalid_Outline );
|
|
1971 | 1965 |
|
1972 | 1966 |
Fail:
|
1973 | 1967 |
return FAILURE;
|
... | ... | @@ -2744,7 +2738,7 @@ |
2744 | 2738 |
/* check the Y-turns */
|
2745 | 2739 |
if ( ras.numTurns == 0 )
|
2746 | 2740 |
{
|
2747 |
- ras.error = FT_THROW( Invalid );
|
|
2741 |
+ ras.error = FT_THROW( Invalid_Outline );
|
|
2748 | 2742 |
return FAILURE;
|
2749 | 2743 |
}
|
2750 | 2744 |
|
... | ... | @@ -3051,14 +3045,14 @@ |
3051 | 3045 |
|
3052 | 3046 |
ras.top = ras.buff;
|
3053 | 3047 |
|
3054 |
- ras.error = Raster_Err_None;
|
|
3048 |
+ ras.error = Raster_Err_Ok;
|
|
3055 | 3049 |
|
3056 | 3050 |
if ( Convert_Glyph( RAS_VARS flipped ) )
|
3057 | 3051 |
{
|
3058 |
- if ( ras.error != Raster_Err_Overflow )
|
|
3059 |
- return FAILURE;
|
|
3052 |
+ if ( ras.error != Raster_Err_Raster_Overflow )
|
|
3053 |
+ return ras.error;
|
|
3060 | 3054 |
|
3061 |
- ras.error = Raster_Err_None;
|
|
3055 |
+ ras.error = Raster_Err_Ok;
|
|
3062 | 3056 |
|
3063 | 3057 |
/* sub-banding */
|
3064 | 3058 |
|
... | ... | @@ -3074,7 +3068,7 @@ |
3074 | 3068 |
if ( ras.band_top >= 7 || k < i )
|
3075 | 3069 |
{
|
3076 | 3070 |
ras.band_top = 0;
|
3077 |
- ras.error = FT_THROW( Invalid );
|
|
3071 |
+ ras.error = FT_THROW( Raster_Overflow );
|
|
3078 | 3072 |
|
3079 | 3073 |
return ras.error;
|
3080 | 3074 |
}
|
... | ... | @@ -3095,7 +3089,7 @@ |
3095 | 3089 |
}
|
3096 | 3090 |
}
|
3097 | 3091 |
|
3098 |
- return SUCCESS;
|
|
3092 |
+ return Raster_Err_Ok;
|
|
3099 | 3093 |
}
|
3100 | 3094 |
|
3101 | 3095 |
|
... | ... | @@ -3174,7 +3168,7 @@ |
3174 | 3168 |
return error;
|
3175 | 3169 |
}
|
3176 | 3170 |
|
3177 |
- return Raster_Err_None;
|
|
3171 |
+ return Raster_Err_Ok;
|
|
3178 | 3172 |
}
|
3179 | 3173 |
|
3180 | 3174 |
|
... | ... | @@ -3292,38 +3286,36 @@ |
3292 | 3286 |
|
3293 | 3287 |
|
3294 | 3288 |
if ( !raster )
|
3295 |
- return FT_THROW( Not_Ini );
|
|
3289 |
+ return FT_THROW( Raster_Uninitialized );
|
|
3296 | 3290 |
|
3297 | 3291 |
if ( !outline )
|
3298 |
- return FT_THROW( Invalid );
|
|
3292 |
+ return FT_THROW( Invalid_Outline );
|
|
3299 | 3293 |
|
3300 | 3294 |
/* return immediately if the outline is empty */
|
3301 | 3295 |
if ( outline->n_points == 0 || outline->n_contours <= 0 )
|
3302 |
- return Raster_Err_None;
|
|
3296 |
+ return Raster_Err_Ok;
|
|
3303 | 3297 |
|
3304 | 3298 |
if ( !outline->contours || !outline->points )
|
3305 |
- return FT_THROW( Invalid );
|
|
3299 |
+ return FT_THROW( Invalid_Outline );
|
|
3306 | 3300 |
|
3307 | 3301 |
if ( outline->n_points !=
|
3308 | 3302 |
outline->contours[outline->n_contours - 1] + 1 )
|
3309 |
- return FT_THROW( Invalid );
|
|
3303 |
+ return FT_THROW( Invalid_Outline );
|
|
3310 | 3304 |
|
3311 | 3305 |
/* this version of the raster does not support direct rendering, sorry */
|
3312 |
- if ( params->flags & FT_RASTER_FLAG_DIRECT )
|
|
3313 |
- return FT_THROW( Unsupported );
|
|
3314 |
- |
|
3315 |
- if ( params->flags & FT_RASTER_FLAG_AA )
|
|
3316 |
- return FT_THROW( Unsupported );
|
|
3306 |
+ if ( params->flags & FT_RASTER_FLAG_DIRECT ||
|
|
3307 |
+ params->flags & FT_RASTER_FLAG_AA )
|
|
3308 |
+ return FT_THROW( Cannot_Render_Glyph );
|
|
3317 | 3309 |
|
3318 | 3310 |
if ( !target_map )
|
3319 |
- return FT_THROW( Invalid );
|
|
3311 |
+ return FT_THROW( Invalid_Argument );
|
|
3320 | 3312 |
|
3321 | 3313 |
/* nothing to do */
|
3322 | 3314 |
if ( !target_map->width || !target_map->rows )
|
3323 |
- return Raster_Err_None;
|
|
3315 |
+ return Raster_Err_Ok;
|
|
3324 | 3316 |
|
3325 | 3317 |
if ( !target_map->buffer )
|
3326 |
- return FT_THROW( Invalid );
|
|
3318 |
+ return FT_THROW( Invalid_Argument );
|
|
3327 | 3319 |
|
3328 | 3320 |
ras.outline = *outline;
|
3329 | 3321 |
ras.target = *target_map;
|
... | ... | @@ -168,10 +168,11 @@ |
168 | 168 |
typedef ptrdiff_t FT_PtrDist;
|
169 | 169 |
|
170 | 170 |
|
171 |
-#define ErrRaster_Invalid_Mode -2
|
|
172 |
-#define ErrRaster_Invalid_Outline -1
|
|
173 |
-#define ErrRaster_Invalid_Argument -3
|
|
174 |
-#define ErrRaster_Memory_Overflow -4
|
|
171 |
+#define Smooth_Err_Ok 0
|
|
172 |
+#define Smooth_Err_Invalid_Outline -1
|
|
173 |
+#define Smooth_Err_Cannot_Render_Glyph -2
|
|
174 |
+#define Smooth_Err_Invalid_Argument -3
|
|
175 |
+#define Smooth_Err_Raster_Overflow -4
|
|
175 | 176 |
|
176 | 177 |
#define FT_BEGIN_HEADER
|
177 | 178 |
#define FT_END_HEADER
|
... | ... | @@ -229,18 +230,18 @@ typedef ptrdiff_t FT_PtrDist; |
229 | 230 |
#define FT_ERROR( varformat ) FT_Message varformat
|
230 | 231 |
#endif
|
231 | 232 |
|
232 |
-#define FT_THROW( e ) \
|
|
233 |
- ( FT_Throw( FT_ERR_CAT( ErrRaster_, e ), \
|
|
234 |
- __LINE__, \
|
|
235 |
- __FILE__ ) | \
|
|
236 |
- FT_ERR_CAT( ErrRaster_, e ) )
|
|
233 |
+#define FT_THROW( e ) \
|
|
234 |
+ ( FT_Throw( FT_ERR_CAT( Smooth_Err_, e ), \
|
|
235 |
+ __LINE__, \
|
|
236 |
+ __FILE__ ) | \
|
|
237 |
+ FT_ERR_CAT( Smooth_Err_, e ) )
|
|
237 | 238 |
|
238 | 239 |
#else /* !FT_DEBUG_LEVEL_TRACE */
|
239 | 240 |
|
240 | 241 |
#define FT_TRACE5( x ) do { } while ( 0 ) /* nothing */
|
241 | 242 |
#define FT_TRACE7( x ) do { } while ( 0 ) /* nothing */
|
242 | 243 |
#define FT_ERROR( x ) do { } while ( 0 ) /* nothing */
|
243 |
-#define FT_THROW( e ) FT_ERR_CAT( ErrRaster_, e )
|
|
244 |
+#define FT_THROW( e ) FT_ERR_CAT( Smooth_Err_, e )
|
|
244 | 245 |
|
245 | 246 |
|
246 | 247 |
#endif /* !FT_DEBUG_LEVEL_TRACE */
|
... | ... | @@ -286,10 +287,6 @@ typedef ptrdiff_t FT_PtrDist; |
286 | 287 |
|
287 | 288 |
#include "ftsmerrs.h"
|
288 | 289 |
|
289 |
-#define Smooth_Err_Invalid_Mode Smooth_Err_Cannot_Render_Glyph
|
|
290 |
-#define Smooth_Err_Memory_Overflow Smooth_Err_Out_Of_Memory
|
|
291 |
-#define ErrRaster_Memory_Overflow Smooth_Err_Out_Of_Memory
|
|
292 |
- |
|
293 | 290 |
|
294 | 291 |
#endif /* !STANDALONE_ */
|
295 | 292 |
|
... | ... | @@ -1605,7 +1602,7 @@ typedef ptrdiff_t FT_PtrDist; |
1605 | 1602 |
}
|
1606 | 1603 |
|
1607 | 1604 |
FT_TRACE5(( "FT_Outline_Decompose: Done\n", n ));
|
1608 |
- return 0;
|
|
1605 |
+ return Smooth_Err_Ok;
|
|
1609 | 1606 |
|
1610 | 1607 |
Exit:
|
1611 | 1608 |
FT_TRACE5(( "FT_Outline_Decompose: Error 0x%x\n", error ));
|
... | ... | @@ -1654,7 +1651,7 @@ typedef ptrdiff_t FT_PtrDist; |
1654 | 1651 |
}
|
1655 | 1652 |
else
|
1656 | 1653 |
{
|
1657 |
- error = FT_THROW( Memory_Overflow );
|
|
1654 |
+ error = FT_THROW( Raster_Overflow );
|
|
1658 | 1655 |
|
1659 | 1656 |
FT_TRACE7(( "band [%d..%d]: to be bisected\n",
|
1660 | 1657 |
ras.min_ey, ras.max_ey ));
|
... | ... | @@ -1730,8 +1727,8 @@ typedef ptrdiff_t FT_PtrDist; |
1730 | 1727 |
band--;
|
1731 | 1728 |
continue;
|
1732 | 1729 |
}
|
1733 |
- else if ( error != ErrRaster_Memory_Overflow )
|
|
1734 |
- return 1;
|
|
1730 |
+ else if ( error != Smooth_Err_Raster_Overflow )
|
|
1731 |
+ return error;
|
|
1735 | 1732 |
|
1736 | 1733 |
/* render pool overflow; we will reduce the render band by half */
|
1737 | 1734 |
width >>= 1;
|
... | ... | @@ -1740,7 +1737,7 @@ typedef ptrdiff_t FT_PtrDist; |
1740 | 1737 |
if ( width == 0 )
|
1741 | 1738 |
{
|
1742 | 1739 |
FT_TRACE7(( "gray_convert_glyph: rotten glyph\n" ));
|
1743 |
- return 1;
|
|
1740 |
+ return FT_THROW( Raster_Overflow );
|
|
1744 | 1741 |
}
|
1745 | 1742 |
|
1746 | 1743 |
band++;
|
... | ... | @@ -1749,7 +1746,7 @@ typedef ptrdiff_t FT_PtrDist; |
1749 | 1746 |
} while ( band >= bands );
|
1750 | 1747 |
}
|
1751 | 1748 |
|
1752 |
- return 0;
|
|
1749 |
+ return Smooth_Err_Ok;
|
|
1753 | 1750 |
}
|
1754 | 1751 |
|
1755 | 1752 |
|
... | ... | @@ -1770,14 +1767,14 @@ typedef ptrdiff_t FT_PtrDist; |
1770 | 1767 |
|
1771 | 1768 |
/* this version does not support monochrome rendering */
|
1772 | 1769 |
if ( !( params->flags & FT_RASTER_FLAG_AA ) )
|
1773 |
- return FT_THROW( Invalid_Mode );
|
|
1770 |
+ return FT_THROW( Cannot_Render_Glyph );
|
|
1774 | 1771 |
|
1775 | 1772 |
if ( !outline )
|
1776 | 1773 |
return FT_THROW( Invalid_Outline );
|
1777 | 1774 |
|
1778 | 1775 |
/* return immediately if the outline is empty */
|
1779 | 1776 |
if ( outline->n_points == 0 || outline->n_contours <= 0 )
|
1780 |
- return 0;
|
|
1777 |
+ return Smooth_Err_Ok;
|
|
1781 | 1778 |
|
1782 | 1779 |
if ( !outline->contours || !outline->points )
|
1783 | 1780 |
return FT_THROW( Invalid_Outline );
|
... | ... | @@ -1791,7 +1788,7 @@ typedef ptrdiff_t FT_PtrDist; |
1791 | 1788 |
if ( params->flags & FT_RASTER_FLAG_DIRECT )
|
1792 | 1789 |
{
|
1793 | 1790 |
if ( !params->gray_spans )
|
1794 |
- return 0;
|
|
1791 |
+ return Smooth_Err_Ok;
|
|
1795 | 1792 |
|
1796 | 1793 |
ras.render_span = (FT_Raster_Span_Func)params->gray_spans;
|
1797 | 1794 |
ras.render_span_data = params->user;
|
... | ... | @@ -1809,7 +1806,7 @@ typedef ptrdiff_t FT_PtrDist; |
1809 | 1806 |
|
1810 | 1807 |
/* nothing to do */
|
1811 | 1808 |
if ( !target_map->width || !target_map->rows )
|
1812 |
- return 0;
|
|
1809 |
+ return Smooth_Err_Ok;
|
|
1813 | 1810 |
|
1814 | 1811 |
if ( !target_map->buffer )
|
1815 | 1812 |
return FT_THROW( Invalid_Argument );
|
... | ... | @@ -1833,7 +1830,7 @@ typedef ptrdiff_t FT_PtrDist; |
1833 | 1830 |
|
1834 | 1831 |
/* exit if nothing to do */
|
1835 | 1832 |
if ( ras.max_ex <= ras.min_ex || ras.max_ey <= ras.min_ey )
|
1836 |
- return 0;
|
|
1833 |
+ return Smooth_Err_Ok;
|
|
1837 | 1834 |
|
1838 | 1835 |
return gray_convert_glyph( RAS_VAR );
|
1839 | 1836 |
}
|