#include <ft2build.h>
#include "basepic.h"
Go to the source code of this file.
#define FT_ARC_CUBIC_ANGLE ( FT_ANGLE_PI / 2 ) |
#define FT_EPSILON 2 |
Definition at line 64 of file ftstroke.c.
Definition at line 66 of file ftstroke.c.
Referenced by ft_conic_is_small_enough(), and ft_cubic_is_small_enough().
Definition at line 690 of file ftstroke.c.
Referenced by ft_stroker_arcto(), ft_stroker_cap(), FT_Stroker_ConicTo(), FT_Stroker_CubicTo(), ft_stroker_inside(), and ft_stroker_outside().
#define FT_SMALL_CONIC_THRESHOLD ( FT_ANGLE_PI / 6 ) |
#define FT_SMALL_CUBIC_THRESHOLD ( FT_ANGLE_PI / 6 ) |
#define FT_STROKE_TAG_BEGIN_END (FT_STROKE_TAG_BEGIN|FT_STROKE_TAG_END) |
typedef struct FT_StrokeBorderRec_ * FT_StrokeBorder |
typedef struct FT_StrokeBorderRec_ FT_StrokeBorderRec |
typedef struct FT_StrokerRec_ FT_StrokerRec |
typedef enum FT_StrokeTags_ FT_StrokeTags |
enum FT_StrokeTags_ |
Definition at line 233 of file ftstroke.c.
static FT_Bool ft_conic_is_small_enough | ( | FT_Vector * | base, | |
FT_Angle * | angle_in, | |||
FT_Angle * | angle_out | |||
) | [static] |
Definition at line 97 of file ftstroke.c.
References FT_Angle, FT_Angle_Diff(), FT_Atan2(), FT_BOOL, FT_IS_SMALL, ft_pos_abs(), FT_SMALL_CONIC_THRESHOLD, theta, FT_Vector_::x, and FT_Vector_::y.
Referenced by FT_Stroker_ConicTo().
static void ft_conic_split | ( | FT_Vector * | base | ) | [static] |
Definition at line 77 of file ftstroke.c.
References a, b, FT_Pos, FT_Vector_::x, and FT_Vector_::y.
Referenced by FT_Stroker_ConicTo().
static FT_Bool ft_cubic_is_small_enough | ( | FT_Vector * | base, | |
FT_Angle * | angle_in, | |||
FT_Angle * | angle_mid, | |||
FT_Angle * | angle_out | |||
) | [static] |
Definition at line 166 of file ftstroke.c.
References FT_Angle, FT_Angle_Diff(), FT_Atan2(), FT_BOOL, FT_IS_SMALL, ft_pos_abs(), FT_SMALL_CUBIC_THRESHOLD, FT_Vector_::x, and FT_Vector_::y.
Referenced by FT_Stroker_CubicTo().
static void ft_cubic_split | ( | FT_Vector * | base | ) | [static] |
Definition at line 138 of file ftstroke.c.
References a, b, c, d, FT_Pos, FT_Vector_::x, and FT_Vector_::y.
Referenced by FT_Stroker_CubicTo().
FT_Glyph_Stroke | ( | FT_Glyph * | pglyph, | |
FT_Stroker | stroker, | |||
FT_Bool | destroy | |||
) |
Definition at line 1882 of file ftstroke.c.
References FT_GlyphRec_::clazz, copy(), error, FALSE, FT_Done_Glyph(), FT_Glyph_Copy(), FT_Outline_Done(), FT_OUTLINE_GLYPH_CLASS_GET, FT_Outline_New(), FT_Stroker_Export(), FT_Stroker_GetCounts(), FT_Stroker_ParseOutline(), FT_UNUSED, FT_GlyphRec_::library, FT_Outline_::n_contours, FT_Outline_::n_points, NULL, FT_OutlineGlyphRec_::outline, and void.
FT_Glyph_StrokeBorder | ( | FT_Glyph * | pglyph, | |
FT_Stroker | stroker, | |||
FT_Bool | inside, | |||
FT_Bool | destroy | |||
) |
Definition at line 1955 of file ftstroke.c.
References border, FT_GlyphRec_::clazz, copy(), error, FALSE, FT_Done_Glyph(), FT_Glyph_Copy(), FT_Outline_Done(), FT_Outline_GetOutsideBorder(), FT_OUTLINE_GLYPH_CLASS_GET, FT_Outline_New(), FT_STROKER_BORDER_LEFT, FT_STROKER_BORDER_RIGHT, FT_Stroker_ExportBorder(), FT_Stroker_GetBorderCounts(), FT_Stroker_ParseOutline(), FT_UNUSED, FT_GlyphRec_::library, FT_Outline_::n_contours, FT_Outline_::n_points, NULL, FT_OutlineGlyphRec_::outline, and void.
FT_Outline_GetInsideBorder | ( | FT_Outline * | outline | ) |
Definition at line 31 of file ftstroke.c.
References FT_ORIENTATION_TRUETYPE, FT_Outline_Get_Orientation(), FT_STROKER_BORDER_LEFT, FT_STROKER_BORDER_RIGHT, and o.
FT_Outline_GetOutsideBorder | ( | FT_Outline * | outline | ) |
Definition at line 44 of file ftstroke.c.
References FT_ORIENTATION_TRUETYPE, FT_Outline_Get_Orientation(), FT_STROKER_BORDER_LEFT, FT_STROKER_BORDER_RIGHT, and o.
Referenced by FT_Glyph_StrokeBorder().
Definition at line 70 of file ftstroke.c.
Referenced by ft_conic_is_small_enough(), ft_cubic_is_small_enough(), FT_Stroker_CubicTo(), and ft_stroker_outside().
static FT_Error ft_stroke_border_arcto | ( | FT_StrokeBorder | border, | |
FT_Vector * | center, | |||
FT_Fixed | radius, | |||
FT_Angle | angle_start, | |||
FT_Angle | angle_diff | |||
) | [static] |
Definition at line 456 of file ftstroke.c.
References a, b, border, error, FT_Angle, FT_ANGLE_PI2, FT_ARC_CUBIC_ANGLE, FT_Cos(), FT_MulDiv(), FT_Sin(), ft_stroke_border_cubicto(), FT_Vector_From_Polar(), length, rotate, theta, total, FT_Vector_::x, x10000L, and FT_Vector_::y.
Referenced by ft_stroker_arcto().
static void ft_stroke_border_close | ( | FT_StrokeBorder | border, | |
FT_Bool | reverse | |||
) | [static] |
Definition at line 289 of file ftstroke.c.
References border, FALSE, FT_ASSERT, FT_STROKE_TAG_BEGIN, FT_STROKE_TAG_END, and start.
Referenced by ft_stroke_border_moveto(), and FT_Stroker_EndSubPath().
static FT_Error ft_stroke_border_conicto | ( | FT_StrokeBorder | border, | |
FT_Vector * | control, | |||
FT_Vector * | to | |||
) | [static] |
Definition at line 391 of file ftstroke.c.
References border, error, FALSE, FT_ASSERT, ft_stroke_border_grow(), and FT_STROKE_TAG_ON.
Referenced by FT_Stroker_ConicTo().
static FT_Error ft_stroke_border_cubicto | ( | FT_StrokeBorder | border, | |
FT_Vector * | control1, | |||
FT_Vector * | control2, | |||
FT_Vector * | to | |||
) | [static] |
Definition at line 420 of file ftstroke.c.
References border, error, FALSE, FT_ASSERT, ft_stroke_border_grow(), FT_STROKE_TAG_CUBIC, and FT_STROKE_TAG_ON.
Referenced by ft_stroke_border_arcto(), and FT_Stroker_CubicTo().
static void ft_stroke_border_done | ( | FT_StrokeBorder | border | ) | [static] |
Definition at line 565 of file ftstroke.c.
References border, FALSE, and FT_FREE.
Referenced by FT_Stroker_Done().
static void ft_stroke_border_export | ( | FT_StrokeBorder | border, | |
FT_Outline * | outline | |||
) | [static] |
Definition at line 632 of file ftstroke.c.
References border, FT_Outline_::contours, for(), FT_ARRAY_COPY, FT_ASSERT, FT_CURVE_TAG_CONIC, FT_CURVE_TAG_CUBIC, FT_CURVE_TAG_ON, FT_Outline_Check(), FT_STROKE_TAG_CUBIC, FT_STROKE_TAG_END, FT_STROKE_TAG_ON, FT_Outline_::n_contours, FT_Outline_::n_points, FT_Outline_::points, read, short, FT_Outline_::tags, and write.
Referenced by FT_Stroker_ExportBorder().
static FT_Error ft_stroke_border_get_counts | ( | FT_StrokeBorder | border, | |
FT_UInt * | anum_points, | |||
FT_UInt * | anum_contours | |||
) | [static] |
Definition at line 581 of file ftstroke.c.
References border, error, FT_STROKE_TAG_BEGIN, FT_STROKE_TAG_END, and TRUE.
Referenced by FT_Stroker_GetBorderCounts(), and FT_Stroker_GetCounts().
static FT_Error ft_stroke_border_grow | ( | FT_StrokeBorder | border, | |
FT_UInt | new_points | |||
) | [static] |
Definition at line 259 of file ftstroke.c.
References border, error, and FT_RENEW_ARRAY.
Referenced by ft_stroke_border_conicto(), ft_stroke_border_cubicto(), ft_stroke_border_lineto(), and ft_stroker_add_reverse_left().
static void ft_stroke_border_init | ( | FT_StrokeBorder | border, | |
FT_Memory | memory | |||
) | [static] |
Definition at line 541 of file ftstroke.c.
References border, FALSE, and NULL.
Referenced by FT_Stroker_New().
static FT_Error ft_stroke_border_lineto | ( | FT_StrokeBorder | border, | |
FT_Vector * | to, | |||
FT_Bool | movable | |||
) | [static] |
Definition at line 355 of file ftstroke.c.
References border, error, FT_ASSERT, ft_stroke_border_grow(), and FT_STROKE_TAG_ON.
Referenced by ft_stroke_border_moveto(), ft_stroker_cap(), ft_stroker_inside(), FT_Stroker_LineTo(), and ft_stroker_outside().
static FT_Error ft_stroke_border_moveto | ( | FT_StrokeBorder | border, | |
FT_Vector * | to | |||
) | [static] |
Definition at line 526 of file ftstroke.c.
References border, FALSE, ft_stroke_border_close(), and ft_stroke_border_lineto().
Referenced by ft_stroker_subpath_start().
static void ft_stroke_border_reset | ( | FT_StrokeBorder | border | ) | [static] |
static FT_Error ft_stroker_add_reverse_left | ( | FT_Stroker | stroker, | |
FT_Bool | open | |||
) | [static] |
Definition at line 1426 of file ftstroke.c.
References error, FALSE, FT_ASSERT, ft_stroke_border_grow(), FT_STROKE_TAG_BEGIN, FT_STROKE_TAG_BEGIN_END, FT_STROKE_TAG_END, FT_StrokeBorderRec_::movable, FT_StrokeBorderRec_::num_points, FT_StrokeBorderRec_::points, FT_StrokeBorderRec_::start, and FT_StrokeBorderRec_::tags.
Referenced by FT_Stroker_EndSubPath().
static FT_Error ft_stroker_arcto | ( | FT_Stroker | stroker, | |
FT_Int | side | |||
) | [static] |
Definition at line 794 of file ftstroke.c.
References border, error, FALSE, FT_Angle, FT_Angle_Diff(), FT_ANGLE_PI, FT_SIDE_TO_ROTATE, ft_stroke_border_arcto(), rotate, and total.
Referenced by ft_stroker_cap(), and ft_stroker_outside().
FT_Stroker_BeginSubPath | ( | FT_Stroker | stroker, | |
FT_Vector * | to, | |||
FT_Bool | open | |||
) |
Definition at line 1406 of file ftstroke.c.
References TRUE.
Referenced by FT_Stroker_ParseOutline().
static FT_Error ft_stroker_cap | ( | FT_Stroker | stroker, | |
FT_Angle | angle, | |||
FT_Int | side | |||
) | [static] |
Definition at line 821 of file ftstroke.c.
References border, error, FALSE, FT_Angle, FT_ANGLE_PI, FT_SIDE_TO_ROTATE, ft_stroke_border_lineto(), ft_stroker_arcto(), FT_STROKER_LINECAP_BUTT, FT_STROKER_LINECAP_ROUND, FT_STROKER_LINECAP_SQUARE, FT_Vector_From_Polar(), rotate, FT_Vector_::x, and FT_Vector_::y.
Referenced by FT_Stroker_EndSubPath().
FT_Stroker_ConicTo | ( | FT_Stroker | stroker, | |
FT_Vector * | control, | |||
FT_Vector * | to | |||
) |
Definition at line 1198 of file ftstroke.c.
References error, FALSE, FT_Angle, FT_Angle_Diff(), FT_Bool, ft_conic_is_small_enough(), ft_conic_split(), FT_Cos(), FT_DivFix(), FT_SIDE_TO_ROTATE, ft_stroke_border_conicto(), ft_stroker_process_corner(), ft_stroker_subpath_start(), FT_Vector_From_Polar(), length, phi, rotate, theta, TRUE, FT_Vector_::x, and FT_Vector_::y.
Referenced by FT_Stroker_ParseOutline().
FT_Stroker_CubicTo | ( | FT_Stroker | stroker, | |
FT_Vector * | control1, | |||
FT_Vector * | control2, | |||
FT_Vector * | to | |||
) |
Definition at line 1296 of file ftstroke.c.
References error, FALSE, FT_Angle, FT_Bool, FT_Cos(), ft_cubic_is_small_enough(), ft_cubic_split(), FT_DivFix(), ft_pos_abs(), FT_SIDE_TO_ROTATE, ft_stroke_border_cubicto(), ft_stroker_process_corner(), ft_stroker_subpath_start(), FT_Vector_From_Polar(), RootCsg::length2(), rotate, TRUE, FT_Vector_::x, and FT_Vector_::y.
Referenced by FT_Stroker_ParseOutline().
FT_Stroker_Done | ( | FT_Stroker | stroker | ) |
FT_Stroker_EndSubPath | ( | FT_Stroker | stroker | ) |
Definition at line 1492 of file ftstroke.c.
References error, FALSE, FT_Angle, FT_Angle_Diff(), FT_ANGLE_PI, ft_stroke_border_close(), ft_stroker_add_reverse_left(), ft_stroker_cap(), ft_stroker_inside(), FT_Stroker_LineTo(), ft_stroker_outside(), and TRUE.
Referenced by FT_Stroker_ParseOutline().
FT_Stroker_Export | ( | FT_Stroker | stroker, | |
FT_Outline * | outline | |||
) |
Definition at line 1658 of file ftstroke.c.
References FT_STROKER_BORDER_LEFT, FT_STROKER_BORDER_RIGHT, and FT_Stroker_ExportBorder().
Referenced by FT_Glyph_Stroke().
FT_Stroker_ExportBorder | ( | FT_Stroker | stroker, | |
FT_StrokerBorder | border, | |||
FT_Outline * | outline | |||
) |
Definition at line 1639 of file ftstroke.c.
References ft_stroke_border_export(), FT_STROKER_BORDER_LEFT, FT_STROKER_BORDER_RIGHT, and FT_StrokeBorderRec_::valid.
Referenced by FT_Glyph_StrokeBorder(), and FT_Stroker_Export().
FT_Stroker_GetBorderCounts | ( | FT_Stroker | stroker, | |
FT_StrokerBorder | border, | |||
FT_UInt * | anum_points, | |||
FT_UInt * | anum_contours | |||
) |
Definition at line 1576 of file ftstroke.c.
References error, and ft_stroke_border_get_counts().
Referenced by FT_Glyph_StrokeBorder().
FT_Stroker_GetCounts | ( | FT_Stroker | stroker, | |
FT_UInt * | anum_points, | |||
FT_UInt * | anum_contours | |||
) |
Definition at line 1607 of file ftstroke.c.
References error, and ft_stroke_border_get_counts().
Referenced by FT_Glyph_Stroke().
static FT_Error ft_stroker_inside | ( | FT_Stroker | stroker, | |
FT_Int | side | |||
) | [static] |
Definition at line 895 of file ftstroke.c.
References border, error, FALSE, FT_Angle, FT_Angle_Diff(), FT_ANGLE_PI, FT_Cos(), FT_DivFix(), FT_MulFix(), FT_SIDE_TO_ROTATE, ft_stroke_border_lineto(), FT_Vector_From_Polar(), length, phi, rotate, sigma, theta, FT_Vector_::x, x10000L, and FT_Vector_::y.
Referenced by FT_Stroker_EndSubPath(), and ft_stroker_process_corner().
FT_Stroker_LineTo | ( | FT_Stroker | stroker, | |
FT_Vector * | to | |||
) |
Definition at line 1135 of file ftstroke.c.
References border, error, FT_Angle, FT_ANGLE_PI2, FT_Atan2(), ft_stroke_border_lineto(), ft_stroker_process_corner(), ft_stroker_subpath_start(), FT_Vector_From_Polar(), TRUE, POINT::x, FT_Vector_::x, POINT::y, and FT_Vector_::y.
Referenced by FT_Stroker_EndSubPath(), and FT_Stroker_ParseOutline().
FT_Stroker_New | ( | FT_Library | library, | |
FT_Stroker * | astroker | |||
) |
Definition at line 717 of file ftstroke.c.
References error, FT_NEW, ft_stroke_border_init(), and FT_StrokerRec_::library.
static FT_Error ft_stroker_outside | ( | FT_Stroker | stroker, | |
FT_Int | side | |||
) | [static] |
Definition at line 945 of file ftstroke.c.
References border, error, FALSE, FT_Angle, FT_Angle_Diff(), FT_ANGLE_PI, FT_Bool, FT_BOOL, FT_Cos(), FT_DivFix(), FT_MulFix(), ft_pos_abs(), FT_SIDE_TO_ROTATE, FT_Sin(), ft_stroke_border_lineto(), ft_stroker_arcto(), FT_STROKER_LINEJOIN_MITER, FT_STROKER_LINEJOIN_ROUND, FT_Vector_From_Polar(), length, phi, rotate, sigma, theta, TRUE, FT_Vector_::x, x10000L, and FT_Vector_::y.
Referenced by FT_Stroker_EndSubPath(), and ft_stroker_process_corner().
FT_Stroker_ParseOutline | ( | FT_Stroker | stroker, | |
FT_Outline * | outline, | |||
FT_Bool | opened | |||
) |
Definition at line 1673 of file ftstroke.c.
References error, FT_CURVE_TAG, FT_CURVE_TAG_CONIC, FT_CURVE_TAG_CUBIC, FT_CURVE_TAG_ON, FT_Stroker_BeginSubPath(), FT_Stroker_ConicTo(), FT_Stroker_CubicTo(), FT_Stroker_EndSubPath(), FT_Stroker_LineTo(), FT_Stroker_Rewind(), n, POINT::x, FT_Vector_::x, POINT::y, and FT_Vector_::y.
Referenced by FT_Glyph_Stroke(), and FT_Glyph_StrokeBorder().
static FT_Error ft_stroker_process_corner | ( | FT_Stroker | stroker | ) | [static] |
Definition at line 1061 of file ftstroke.c.
References error, FT_Angle, FT_Angle_Diff(), ft_stroker_inside(), and ft_stroker_outside().
Referenced by FT_Stroker_ConicTo(), FT_Stroker_CubicTo(), and FT_Stroker_LineTo().
FT_Stroker_Rewind | ( | FT_Stroker | stroker | ) |
Definition at line 763 of file ftstroke.c.
References ft_stroke_border_reset().
Referenced by FT_Stroker_ParseOutline(), and FT_Stroker_Set().
FT_Stroker_Set | ( | FT_Stroker | stroker, | |
FT_Fixed | radius, | |||
FT_Stroker_LineCap | line_cap, | |||
FT_Stroker_LineJoin | line_join, | |||
FT_Fixed | miter_limit | |||
) |
static FT_Error ft_stroker_subpath_start | ( | FT_Stroker | stroker, | |
FT_Angle | start_angle | |||
) | [static] |
Definition at line 1097 of file ftstroke.c.
References border, error, FALSE, FT_ANGLE_PI2, ft_stroke_border_moveto(), FT_Vector_From_Polar(), POINT::x, FT_Vector_::x, POINT::y, and FT_Vector_::y.
Referenced by FT_Stroker_ConicTo(), FT_Stroker_CubicTo(), and FT_Stroker_LineTo().