diff options
Diffstat (limited to '')
-rw-r--r-- | src/lib/freetype/ftstroke.inc | 711 |
1 files changed, 0 insertions, 711 deletions
diff --git a/src/lib/freetype/ftstroke.inc b/src/lib/freetype/ftstroke.inc deleted file mode 100644 index bf8a00ae..00000000 --- a/src/lib/freetype/ftstroke.inc +++ /dev/null @@ -1,711 +0,0 @@ -{***************************************************************************} -{* *} -{* ftstroke.h *} -{* *} -{* FreeType path stroker (specification). *} -{* *} -{* Copyright 2002, 2003, 2004, 2005, 2006 by *} -{* David Turner, Robert Wilhelm, and Werner Lemberg. *} -{* *} -{* This file is part of the FreeType project, and may only be used, *} -{* modified, and distributed under the terms of the FreeType project *} -{* license, LICENSE.TXT. By continuing to use, modify, or distribute *} -{* this file you indicate that you have read the license and *} -{* understand and accept it fully. *} -{* *} -{***************************************************************************} -(***************************************************************************) -(* Pascal port by the UltraStar Deluxe Team *) -(***************************************************************************) - - {************************************************************************ - * - * @section: - * glyph_stroker - * - * @title: - * Glyph Stroker - * - * @abstract: - * Generating bordered and stroked glyphs. - * - * @description: - * This component generates stroked outlines of a given vectorial - * glyph. It also allows you to retrieve the `outside' and/or the - * `inside' borders of the stroke. - * - * This can be useful to generate `bordered' glyph, i.e., glyphs - * displayed with a coloured (and anti-aliased) border around their - * shape. - *} - -{$IFDEF TYPE_DECL} - - {************************************************************** - * - * @type: - * FT_Stroker - * - * @description: - * Opaque handler to a path stroker object. - *} - FT_Stroker = Pointer; - - - {************************************************************** - * - * @enum: - * FT_Stroker_LineJoin - * - * @description: - * These values determine how two joining lines are rendered - * in a stroker. - * - * @values: - * FT_STROKER_LINEJOIN_ROUND :: - * Used to render rounded line joins. Circular arcs are used - * to join two lines smoothly. - * - * FT_STROKER_LINEJOIN_BEVEL :: - * Used to render beveled line joins; i.e., the two joining lines - * are extended until they intersect. - * - * FT_STROKER_LINEJOIN_MITER :: - * Same as beveled rendering, except that an additional line - * break is added if the angle between the two joining lines - * is too closed (this is useful to avoid unpleasant spikes - * in beveled rendering). - *} - FT_Stroker_LineJoin = cint; -{$ELSE TYPE_DECL} -const - FT_STROKER_LINEJOIN_ROUND = 0; - FT_STROKER_LINEJOIN_BEVEL = 1; - FT_STROKER_LINEJOIN_MITER = 2; - -{$ENDIF TYPE_DECL} -{$IFDEF TYPE_DECL} - - {************************************************************** - * - * @enum: - * FT_Stroker_LineCap - * - * @description: - * These values determine how the end of opened sub-paths are - * rendered in a stroke. - * - * @values: - * FT_STROKER_LINECAP_BUTT :: - * The end of lines is rendered as a full stop on the last - * point itself. - * - * FT_STROKER_LINECAP_ROUND :: - * The end of lines is rendered as a half-circle around the - * last point. - * - * FT_STROKER_LINECAP_SQUARE :: - * The end of lines is rendered as a square around the - * last point. - *} - FT_Stroker_LineCap = cint; -{$ELSE TYPE_DECL} -const - FT_STROKER_LINECAP_BUTT = 0; - FT_STROKER_LINECAP_ROUND = 1; - FT_STROKER_LINECAP_SQUARE = 2; - -{$ENDIF TYPE_DECL} -{$IFDEF TYPE_DECL} - - {************************************************************** - * - * @enum: - * FT_StrokerBorder - * - * @description: - * These values are used to select a given stroke border - * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. - * - * @values: - * FT_STROKER_BORDER_LEFT :: - * Select the left border, relative to the drawing direction. - * - * FT_STROKER_BORDER_RIGHT :: - * Select the right border, relative to the drawing direction. - * - * @note: - * Applications are generally interested in the `inside' and `outside' - * borders. However, there is no direct mapping between these and the - * `left' and `right' ones, since this really depends on the glyph's - * drawing orientation, which varies between font formats. - * - * You can however use @FT_Outline_GetInsideBorder and - * @FT_Outline_GetOutsideBorder to get these. - *} - FT_StrokerBorder = cint; -{$ELSE TYPE_DECL} -const - FT_STROKER_BORDER_LEFT = 0; - FT_STROKER_BORDER_RIGHT = 1; - - - {************************************************************** - * - * @function: - * FT_Outline_GetInsideBorder - * - * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `inside' borders of a given outline. - * - * @input: - * outline :: - * The source outline handle. - * - * @return: - * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid - * outlines. - *} - function FT_Outline_GetInsideBorder( outline: PFT_Outline ): FT_StrokerBorder; - cdecl; external ft_lib name 'FT_Outline_GetInsideBorder'; - - - {************************************************************** - * - * @function: - * FT_Outline_GetOutsideBorder - * - * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `outside' borders of a given outline. - * - * @input: - * outline :: - * The source outline handle. - * - * @return: - * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid - * outlines. - *} - function FT_Outline_GetOutsideBorder( outline: PFT_Outline ): FT_StrokerBorder; - cdecl; external ft_lib name 'FT_Outline_GetOutsideBorder'; - - - {************************************************************** - * - * @function: - * FT_Stroker_New - * - * @description: - * Create a new stroker object. - * - * @input: - * library :: - * FreeType library handle. - * - * @output: - * astroker :: - * A new stroker object handle. NULL in case of error. - * - * @return: - * FreeType error code. 0 means success. - *} - function FT_Stroker_New( - library_: FT_Library; - out astroker: FT_Stroker ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_New'; - - - {************************************************************** - * - * @function: - * FT_Stroker_Set - * - * @description: - * Reset a stroker object's attributes. - * - * @input: - * stroker :: - * The target stroker handle. - * - * radius :: - * The border radius. - * - * line_cap :: - * The line cap style. - * - * line_join :: - * The line join style. - * - * miter_limit :: - * The miter limit for the FT_STROKER_LINEJOIN_MITER style, - * expressed as 16.16 fixed point value. - * - * @note: - * The radius is expressed in the same units that the outline - * coordinates. - *} - procedure FT_Stroker_Set( - stroker: FT_Stroker; - radius: FT_Fixed; - line_cap: FT_Stroker_LineCap; - line_join: FT_Stroker_LineJoin; - miter_limit: FT_Fixed ); - cdecl; external ft_lib name 'FT_Stroker_Set'; - - - {************************************************************** - * - * @function: - * FT_Stroker_Rewind - * - * @description: - * Reset a stroker object without changing its attributes. - * You should call this function before beginning a new - * series of calls to @FT_Stroker_BeginSubPath or - * @FT_Stroker_EndSubPath. - * - * @input: - * stroker :: - * The target stroker handle. - *} - procedure FT_Stroker_Rewind( stroker: FT_Stroker ); - cdecl; external ft_lib name 'FT_Stroker_Rewind'; - - - {************************************************************** - * - * @function: - * FT_Stroker_ParseOutline - * - * @description: - * A convenience function used to parse a whole outline with - * the stroker. The resulting outline(s) can be retrieved - * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. - * - * @input: - * stroker :: - * The target stroker handle. - * - * outline :: - * The source outline. - * - * opened :: - * A boolean. If 1, the outline is treated as an open path instead - * of a closed one. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * If `opened' is 0 (the default), the outline is treated as a closed - * path, and the stroker will generate two distinct `border' outlines. - * - * If `opened' is 1, the outline is processed as an open path, and the - * stroker will generate a single `stroke' outline. - * - * This function calls @FT_Stroker_Rewind automatically. - *} - function FT_Stroker_ParseOutline( - stroker: FT_Stroker; - outline: PFT_Outline; - opened: FT_Bool): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_ParseOutline'; - - - {************************************************************** - * - * @function: - * FT_Stroker_BeginSubPath - * - * @description: - * Start a new sub-path in the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * to :: - * A pointer to the start vector. - * - * open :: - * A boolean. If 1, the sub-path is treated as an open one. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function is useful when you need to stroke a path that is - * not stored as an @FT_Outline object. - *} - function FT_Stroker_BeginSubPath( - stroker: FT_Stroker; - to_: PFT_Vector; - open: FT_Bool ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_BeginSubPath'; - - - {************************************************************** - * - * @function: - * FT_Stroker_EndSubPath - * - * @description: - * Close the current sub-path in the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function after @FT_Stroker_BeginSubPath. - * If the subpath was not `opened', this function will `draw' a - * single line segment to the start position when needed. - *} - function FT_Stroker_EndSubPath( stroker: FT_Stroker ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_EndSubPath'; - - - {************************************************************** - * - * @function: - * FT_Stroker_LineTo - * - * @description: - * `Draw' a single line segment in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - *} - function FT_Stroker_LineTo( - stroker: FT_Stroker; - to_: PFT_Vector ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_LineTo'; - - - {************************************************************** - * - * @function: - * FT_Stroker_ConicTo - * - * @description: - * `Draw' a single quadratic Bézier in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * control :: - * A pointer to a Bézier control point. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - *} - function FT_Stroker_ConicTo( - stroker: FT_Stroker; - control: PFT_Vector; - to_: PFT_Vector ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_ConicTo'; - - - {************************************************************** - * - * @function: - * FT_Stroker_CubicTo - * - * @description: - * `Draw' a single cubic Bézier in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * control1 :: - * A pointer to the first Bézier control point. - * - * control2 :: - * A pointer to second Bézier control point. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - *} - function FT_Stroker_CubicTo( - stroker: FT_Stroker; - control1: PFT_Vector; - control2: PFT_Vector; - to_: PFT_Vector ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_CubicTo'; - - - {************************************************************** - * - * @function: - * FT_Stroker_GetBorderCounts - * - * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It will return the number of points and - * contours necessary to export one of the `border' or `stroke' - * outlines generated by the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * border :: - * The border index. - * - * @output: - * anum_points :: - * The number of points. - * - * anum_contours :: - * The number of contours. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right'. - * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. - * - * Use the function @FT_Stroker_GetCounts instead if you want to - * retrieve the counts associated to both borders. - *} - function FT_Stroker_GetBorderCounts( - stroker: FT_Stroker; - border: FT_StrokerBorder; - out anum_points: FT_UInt; - out anum_contours: FT_UInt ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_GetBorderCounts'; - - - {************************************************************** - * - * @function: - * FT_Stroker_ExportBorder - * - * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export the corresponding border to your own @FT_Outline - * structure. - * - * Note that this function will append the border points and - * contours to your outline, but will not try to resize its - * arrays. - * - * @input: - * stroker :: - * The target stroker handle. - * - * border :: - * The border index. - * - * outline :: - * The target outline handle. - * - * @note: - * Always call this function after @FT_Stroker_GetBorderCounts to - * get sure that there is enough room in your @FT_Outline object to - * receive all new data. - * - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right' - * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. - * - * Use the function @FT_Stroker_Export instead if you want to - * retrieve all borders at once. - *} - procedure FT_Stroker_ExportBorder( - stroker: FT_Stroker; - border: FT_StrokerBorder; - outline: PFT_Outline ); - cdecl; external ft_lib name 'FT_Stroker_ExportBorder'; - - - {************************************************************** - * - * @function: - * FT_Stroker_GetCounts - * - * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It returns the number of points and - * contours necessary to export all points/borders from the stroked - * outline/path. - * - * @input: - * stroker :: - * The target stroker handle. - * - * @output: - * anum_points :: - * The number of points. - * - * anum_contours :: - * The number of contours. - * - * @return: - * FreeType error code. 0 means success. - *} - function FT_Stroker_GetCounts( - stroker: FT_Stroker; - out anum_points: FT_UInt; - out anum_contours: FT_UInt ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_GetCounts'; - - - {************************************************************** - * - * @function: - * FT_Stroker_Export - * - * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export the all borders to your own @FT_Outline structure. - * - * Note that this function will append the border points and - * contours to your outline, but will not try to resize its - * arrays. - * - * @input: - * stroker :: - * The target stroker handle. - * - * outline :: - * The target outline handle. - *} - procedure FT_Stroker_Export( - stroker: FT_Stroker; - outline: PFT_Outline ); - cdecl; external ft_lib name 'FT_Stroker_Export'; - - - {************************************************************** - * - * @function: - * FT_Stroker_Done - * - * @description: - * Destroy a stroker object. - * - * @input: - * stroker :: - * A stroker handle. Can be NULL. - *} - procedure FT_Stroker_Done( stroker: FT_Stroker ); - cdecl; external ft_lib name 'FT_Stroker_Done'; - - - {************************************************************** - * - * @function: - * FT_Glyph_Stroke - * - * @description: - * Stroke a given outline glyph object with a given stroker. - * - * @inout: - * pglyph :: - * Source glyph handle on input, new glyph handle on output. - * - * @input: - * stroker :: - * A stroker handle. - * - * destroy :: - * A Boolean. If 1, the source glyph object is destroyed - * on success. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The source glyph is untouched in case of error. - *} - function FT_Glyph_Stroke( - var glyph: FT_Glyph; - stroker: FT_Stroker; - destroy: FT_Bool ): FT_Error; - cdecl; external ft_lib name 'FT_Glyph_Stroke'; - - - {************************************************************** - * - * @function: - * FT_Glyph_StrokeBorder - * - * @description: - * Stroke a given outline glyph object with a given stroker, but - * only return either its inside or outside border. - * - * @inout: - * pglyph :: - * Source glyph handle on input, new glyph handle on output. - * - * @input: - * stroker :: - * A stroker handle. - * - * inside :: - * A Boolean. If 1, return the inside border, otherwise - * the outside border. - * - * destroy :: - * A Boolean. If 1, the source glyph object is destroyed - * on success. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The source glyph is untouched in case of error. - *} - function FT_Glyph_StrokeBorder( - var glyph: FT_Glyph; - stroker: FT_Stroker; - inside: FT_Bool; - destroy: FT_Bool ): FT_Error; - cdecl; external ft_lib name 'FT_Glyph_StrokeBorder'; - -{$ENDIF TYPE_DECL} - |