1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  ftstroke.h                                                             */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    FreeType path stroker (specification).                               */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
7727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  Copyright 2002-2006, 2008, 2009, 2011-2012 by                          */
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  this file you indicate that you have read the license and              */
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  understand and accept it fully.                                        */
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FT_STROKE_H__
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FT_STROKE_H__
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h>
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_OUTLINE_H
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_GLYPH_H
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @section:
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    glyph_stroker
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @title:
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    Glyph Stroker
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @abstract:
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    Generating bordered and stroked glyphs.
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    This component generates stroked outlines of a given vectorial
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    glyph.  It also allows you to retrieve the `outside' and/or the
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    `inside' borders of the stroke.
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    This can be useful to generate `bordered' glyph, i.e., glyphs
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    displayed with a coloured (and anti-aliased) border around their
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    shape.
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**************************************************************
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @type:
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   FT_Stroker
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   Opaque handler to a path stroker object.
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct FT_StrokerRec_*  FT_Stroker;
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @enum:
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_LineJoin
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   These values determine how two joining lines are rendered
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   in a stroker.
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @values:
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_STROKER_LINEJOIN_ROUND ::
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     Used to render rounded line joins.  Circular arcs are used
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     to join two lines smoothly.
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_STROKER_LINEJOIN_BEVEL ::
78aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     Used to render beveled line joins.  The outer corner of
79aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     the joined lines is filled by enclosing the triangular
80aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     region of the corner with a straight line between the
81aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     outer corners of each stroke.
82aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *
83aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *   FT_STROKER_LINEJOIN_MITER_FIXED ::
84aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     Used to render mitered line joins, with fixed bevels if the
85aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     miter limit is exceeded.  The outer edges of the strokes
86aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     for the two segments are extended until they meet at an
87aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     angle.  If the segments meet at too sharp an angle (such
8841371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     that the miter would extend from the intersection of the
8941371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     segments a distance greater than the product of the miter
9041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     limit value and the border radius), then a bevel join (see
9141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     above) is used instead.  This prevents long spikes being
9241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     created.  FT_STROKER_LINEJOIN_MITER_FIXED generates a miter
93aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     line join as used in PostScript and PDF.
94aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *
95aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *   FT_STROKER_LINEJOIN_MITER_VARIABLE ::
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_STROKER_LINEJOIN_MITER ::
97aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     Used to render mitered line joins, with variable bevels if
9841371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     the miter limit is exceeded.  The intersection of the
9941371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     strokes is clipped at a line perpendicular to the bisector
10041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     of the angle between the strokes, at the distance from the
10141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     intersection of the segments equal to the product of the
10241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     miter limit value and the border radius.  This prevents
10341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     long spikes being created.
10441371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     FT_STROKER_LINEJOIN_MITER_VARIABLE generates a mitered line
10541371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     join as used in XPS.  FT_STROKER_LINEJOIN_MITER is an alias
10641371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier   *     for FT_STROKER_LINEJOIN_MITER_VARIABLE, retained for
107aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     backwards compatibility.
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef enum  FT_Stroker_LineJoin_
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
111aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner    FT_STROKER_LINEJOIN_ROUND          = 0,
112aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner    FT_STROKER_LINEJOIN_BEVEL          = 1,
113aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner    FT_STROKER_LINEJOIN_MITER_VARIABLE = 2,
114aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner    FT_STROKER_LINEJOIN_MITER          = FT_STROKER_LINEJOIN_MITER_VARIABLE,
115aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner    FT_STROKER_LINEJOIN_MITER_FIXED    = 3
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_Stroker_LineJoin;
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @enum:
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_LineCap
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   These values determine how the end of opened sub-paths are
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   rendered in a stroke.
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @values:
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_STROKER_LINECAP_BUTT ::
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The end of lines is rendered as a full stop on the last
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     point itself.
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_STROKER_LINECAP_ROUND ::
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The end of lines is rendered as a half-circle around the
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     last point.
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_STROKER_LINECAP_SQUARE ::
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The end of lines is rendered as a square around the
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     last point.
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef enum  FT_Stroker_LineCap_
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_STROKER_LINECAP_BUTT = 0,
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_STROKER_LINECAP_ROUND,
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_STROKER_LINECAP_SQUARE
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_Stroker_LineCap;
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @enum:
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_StrokerBorder
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   These values are used to select a given stroke border
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder.
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @values:
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_STROKER_BORDER_LEFT ::
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     Select the left border, relative to the drawing direction.
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_STROKER_BORDER_RIGHT ::
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     Select the right border, relative to the drawing direction.
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Applications are generally interested in the `inside' and `outside'
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   borders.  However, there is no direct mapping between these and the
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `left' and `right' ones, since this really depends on the glyph's
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   drawing orientation, which varies between font formats.
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   You can however use @FT_Outline_GetInsideBorder and
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   @FT_Outline_GetOutsideBorder to get these.
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef enum  FT_StrokerBorder_
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_STROKER_BORDER_LEFT = 0,
179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_STROKER_BORDER_RIGHT
180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_StrokerBorder;
182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Outline_GetInsideBorder
188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Retrieve the @FT_StrokerBorder value corresponding to the
191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `inside' borders of a given outline.
192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outline ::
195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The source outline handle.
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
1980a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   The border index.  @FT_STROKER_BORDER_RIGHT for empty or invalid
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outlines.
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_StrokerBorder )
202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Outline_GetInsideBorder( FT_Outline*  outline );
203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Outline_GetOutsideBorder
209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Retrieve the @FT_StrokerBorder value corresponding to the
212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `outside' borders of a given outline.
213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outline ::
216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The source outline handle.
217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The border index.  @FT_STROKER_BORDER_LEFT for empty or invalid
220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outlines.
221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_StrokerBorder )
223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Outline_GetOutsideBorder( FT_Outline*  outline );
224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_New
230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Create a new stroker object.
233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   library ::
236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     FreeType library handle.
237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @output:
239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   astroker ::
240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A new stroker object handle.  NULL in case of error.
241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
2430a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    FreeType error code.  0~means success.
244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_New( FT_Library   library,
247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                  FT_Stroker  *astroker );
248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_Set
254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Reset a stroker object's attributes.
257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   radius ::
263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The border radius.
264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   line_cap ::
266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The line cap style.
267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   line_join ::
269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The line join style.
270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   miter_limit ::
272aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     The miter limit for the FT_STROKER_LINEJOIN_MITER_FIXED and
273aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner   *     FT_STROKER_LINEJOIN_MITER_VARIABLE line join styles,
274727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *     expressed as 16.16 fixed-point value.
275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
2770a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   The radius is expressed in the same units as the outline
278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   coordinates.
279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_Set( FT_Stroker           stroker,
282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                  FT_Fixed             radius,
283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                  FT_Stroker_LineCap   line_cap,
284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                  FT_Stroker_LineJoin  line_join,
285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                  FT_Fixed             miter_limit );
286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_Rewind
292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Reset a stroker object without changing its attributes.
295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   You should call this function before beginning a new
296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   series of calls to @FT_Stroker_BeginSubPath or
297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   @FT_Stroker_EndSubPath.
298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_Rewind( FT_Stroker  stroker );
305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_ParseOutline
311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A convenience function used to parse a whole outline with
314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   the stroker.  The resulting outline(s) can be retrieved
315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export.
316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outline ::
322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The source outline.
323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   opened ::
3250a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *     A boolean.  If~1, the outline is treated as an open path instead
326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     of a closed one.
327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
3290a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   FreeType error code.  0~means success.
330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
3320a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   If `opened' is~0 (the default), the outline is treated as a closed
3330a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   path, and the stroker generates two distinct `border' outlines.
334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
3350a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   If `opened' is~1, the outline is processed as an open path, and the
3360a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   stroker generates a single `stroke' outline.
337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   This function calls @FT_Stroker_Rewind automatically.
339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_ParseOutline( FT_Stroker   stroker,
342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           FT_Outline*  outline,
343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           FT_Bool      opened );
344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_BeginSubPath
350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Start a new sub-path in the stroker.
353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   to ::
359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer to the start vector.
360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   open ::
3620a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *     A boolean.  If~1, the sub-path is treated as an open one.
363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
3650a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   FreeType error code.  0~means success.
366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   This function is useful when you need to stroke a path that is
369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   not stored as an @FT_Outline object.
370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_BeginSubPath( FT_Stroker  stroker,
373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           FT_Vector*  to,
374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           FT_Bool     open );
375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_EndSubPath
381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Close the current sub-path in the stroker.
384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
3900a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   FreeType error code.  0~means success.
391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   You should call this function after @FT_Stroker_BeginSubPath.
3940a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   If the subpath was not `opened', this function `draws' a
395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   single line segment to the start position when needed.
396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_EndSubPath( FT_Stroker  stroker );
399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_LineTo
405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `Draw' a single line segment in the stroker's current sub-path,
408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   from the last position.
409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   to ::
415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer to the destination point.
416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
4180a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   FreeType error code.  0~means success.
419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   You should call this function between @FT_Stroker_BeginSubPath and
422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   @FT_Stroker_EndSubPath.
423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_LineTo( FT_Stroker  stroker,
426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                     FT_Vector*  to );
427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_ConicTo
433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `Draw' a single quadratic Bézier in the stroker's current sub-path,
436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   from the last position.
437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   control ::
443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer to a Bézier control point.
444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   to ::
446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer to the destination point.
447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
4490a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   FreeType error code.  0~means success.
450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   You should call this function between @FT_Stroker_BeginSubPath and
453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   @FT_Stroker_EndSubPath.
454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_ConicTo( FT_Stroker  stroker,
457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_Vector*  control,
458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_Vector*  to );
459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_CubicTo
465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   `Draw' a single cubic Bézier in the stroker's current sub-path,
468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   from the last position.
469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   control1 ::
475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer to the first Bézier control point.
476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   control2 ::
478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer to second Bézier control point.
479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   to ::
481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer to the destination point.
482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
4840a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   FreeType error code.  0~means success.
485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   You should call this function between @FT_Stroker_BeginSubPath and
488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   @FT_Stroker_EndSubPath.
489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_CubicTo( FT_Stroker  stroker,
492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_Vector*  control1,
493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_Vector*  control2,
494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_Vector*  to );
495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_GetBorderCounts
501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Call this function once you have finished parsing your paths
5040a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   with the stroker.  It returns the number of points and
505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   contours necessary to export one of the `border' or `stroke'
506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outlines generated by the stroker.
507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   border ::
513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The border index.
514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @output:
516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   anum_points ::
517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The number of points.
518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   anum_contours ::
520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The number of contours.
521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
5230a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   FreeType error code.  0~means success.
524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   When an outline, or a sub-path, is `closed', the stroker generates
527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   two independent `border' outlines, named `left' and `right'.
528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   When the outline, or a sub-path, is `opened', the stroker merges
530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   the `border' outlines with caps.  The `left' border receives all
531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   points, while the `right' border becomes empty.
532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Use the function @FT_Stroker_GetCounts instead if you want to
534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   retrieve the counts associated to both borders.
535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_GetBorderCounts( FT_Stroker        stroker,
538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                              FT_StrokerBorder  border,
539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                              FT_UInt          *anum_points,
540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                              FT_UInt          *anum_contours );
541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_ExportBorder
547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Call this function after @FT_Stroker_GetBorderCounts to
550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   export the corresponding border to your own @FT_Outline
551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   structure.
552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
5530a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   Note that this function appends the border points and
5540a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   contours to your outline, but does not try to resize its
555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   arrays.
556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   border ::
562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The border index.
563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outline ::
565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target outline handle.
566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Always call this function after @FT_Stroker_GetBorderCounts to
569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   get sure that there is enough room in your @FT_Outline object to
570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   receive all new data.
571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   When an outline, or a sub-path, is `closed', the stroker generates
573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   two independent `border' outlines, named `left' and `right'
574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   When the outline, or a sub-path, is `opened', the stroker merges
576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   the `border' outlines with caps. The `left' border receives all
577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   points, while the `right' border becomes empty.
578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Use the function @FT_Stroker_Export instead if you want to
580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   retrieve all borders at once.
581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_ExportBorder( FT_Stroker        stroker,
584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           FT_StrokerBorder  border,
585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           FT_Outline*       outline );
586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_GetCounts
592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
594049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Call this function once you have finished parsing your paths
595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   with the stroker.  It returns the number of points and
596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   contours necessary to export all points/borders from the stroked
597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outline/path.
598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @output:
604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   anum_points ::
605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The number of points.
606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   anum_contours ::
608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The number of contours.
609049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
610049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
6110a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   FreeType error code.  0~means success.
612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_GetCounts( FT_Stroker  stroker,
615049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                        FT_UInt    *anum_points,
616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                        FT_UInt    *anum_contours );
617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_Export
623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Call this function after @FT_Stroker_GetBorderCounts to
626295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner   *   export all borders to your own @FT_Outline structure.
627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
6280a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   Note that this function appends the border points and
6290a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   contours to your outline, but does not try to resize its
630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   arrays.
631049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target stroker handle.
635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   outline ::
637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The target outline handle.
638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_Export( FT_Stroker   stroker,
641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                     FT_Outline*  outline );
642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
644049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stroker_Done
648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
649049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Destroy a stroker object.
651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
652049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A stroker handle.  Can be NULL.
655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
656049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
657049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Stroker_Done( FT_Stroker  stroker );
658049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
660049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Glyph_Stroke
664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
666049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Stroke a given outline glyph object with a given stroker.
667049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
668049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @inout:
669049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   pglyph ::
670049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     Source glyph handle on input, new glyph handle on output.
671049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
672049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
673049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
674049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A stroker handle.
675049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   destroy ::
6770a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *     A Boolean.  If~1, the source glyph object is destroyed
678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     on success.
679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
6810a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    FreeType error code.  0~means success.
682049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
683049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
684049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The source glyph is untouched in case of error.
685727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
686727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *   Adding stroke may yield a significantly wider and taller glyph
687727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *   depending on how large of a radius was used to stroke the glyph.  You
688727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *   may need to manually adjust horizontal and vertical advance amounts
689727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *   to account for this added size.
690049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
691049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
692049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Glyph_Stroke( FT_Glyph    *pglyph,
693049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                   FT_Stroker   stroker,
694049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                   FT_Bool      destroy );
695049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
696049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
697049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**************************************************************
698049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
699049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @function:
700049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Glyph_StrokeBorder
701049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
702049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
703049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   Stroke a given outline glyph object with a given stroker, but
704049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   only return either its inside or outside border.
705049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
706049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @inout:
707049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   pglyph ::
708049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     Source glyph handle on input, new glyph handle on output.
709049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
710049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
711049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stroker ::
712049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A stroker handle.
713049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
714049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   inside ::
7150a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *     A Boolean.  If~1, return the inside border, otherwise
716049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     the outside border.
717049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
718049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   destroy ::
7190a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *     A Boolean.  If~1, the source glyph object is destroyed
720049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     on success.
721049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
722049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
7230a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *    FreeType error code.  0~means success.
724049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
725049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
726049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The source glyph is untouched in case of error.
727727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *
728727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *   Adding stroke may yield a significantly wider and taller glyph
729727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *   depending on how large of a radius was used to stroke the glyph.  You
730727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *   may need to manually adjust horizontal and vertical advance amounts
731727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease   *   to account for this added size.
732049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
733049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
734049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Glyph_StrokeBorder( FT_Glyph    *pglyph,
735049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_Stroker   stroker,
736049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_Bool      inside,
737049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                         FT_Bool      destroy );
738049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
739049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */
740049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
741049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
742049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
743049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FT_STROKE_H__ */
744049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
745049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
746049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
747049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
748049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
749049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Local Variables: */
750049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* coding: utf-8    */
751049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* End:             */
752