xref: /aosp_15_r20/external/harfbuzz_ng/src/hb-draw.h (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1*2d1272b8SAndroid Build Coastguard Worker /*
2*2d1272b8SAndroid Build Coastguard Worker  * Copyright © 2019-2020  Ebrahim Byagowi
3*2d1272b8SAndroid Build Coastguard Worker  *
4*2d1272b8SAndroid Build Coastguard Worker  *  This is part of HarfBuzz, a text shaping library.
5*2d1272b8SAndroid Build Coastguard Worker  *
6*2d1272b8SAndroid Build Coastguard Worker  * Permission is hereby granted, without written agreement and without
7*2d1272b8SAndroid Build Coastguard Worker  * license or royalty fees, to use, copy, modify, and distribute this
8*2d1272b8SAndroid Build Coastguard Worker  * software and its documentation for any purpose, provided that the
9*2d1272b8SAndroid Build Coastguard Worker  * above copyright notice and the following two paragraphs appear in
10*2d1272b8SAndroid Build Coastguard Worker  * all copies of this software.
11*2d1272b8SAndroid Build Coastguard Worker  *
12*2d1272b8SAndroid Build Coastguard Worker  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13*2d1272b8SAndroid Build Coastguard Worker  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14*2d1272b8SAndroid Build Coastguard Worker  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15*2d1272b8SAndroid Build Coastguard Worker  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16*2d1272b8SAndroid Build Coastguard Worker  * DAMAGE.
17*2d1272b8SAndroid Build Coastguard Worker  *
18*2d1272b8SAndroid Build Coastguard Worker  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19*2d1272b8SAndroid Build Coastguard Worker  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20*2d1272b8SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21*2d1272b8SAndroid Build Coastguard Worker  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22*2d1272b8SAndroid Build Coastguard Worker  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23*2d1272b8SAndroid Build Coastguard Worker  */
24*2d1272b8SAndroid Build Coastguard Worker 
25*2d1272b8SAndroid Build Coastguard Worker #if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
26*2d1272b8SAndroid Build Coastguard Worker #error "Include <hb.h> instead."
27*2d1272b8SAndroid Build Coastguard Worker #endif
28*2d1272b8SAndroid Build Coastguard Worker 
29*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_DRAW_H
30*2d1272b8SAndroid Build Coastguard Worker #define HB_DRAW_H
31*2d1272b8SAndroid Build Coastguard Worker 
32*2d1272b8SAndroid Build Coastguard Worker #include "hb.h"
33*2d1272b8SAndroid Build Coastguard Worker 
34*2d1272b8SAndroid Build Coastguard Worker HB_BEGIN_DECLS
35*2d1272b8SAndroid Build Coastguard Worker 
36*2d1272b8SAndroid Build Coastguard Worker 
37*2d1272b8SAndroid Build Coastguard Worker /**
38*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_state_t
39*2d1272b8SAndroid Build Coastguard Worker  * @path_open: Whether there is an open path
40*2d1272b8SAndroid Build Coastguard Worker  * @path_start_x: X component of the start of current path
41*2d1272b8SAndroid Build Coastguard Worker  * @path_start_y: Y component of the start of current path
42*2d1272b8SAndroid Build Coastguard Worker  * @current_x: X component of current point
43*2d1272b8SAndroid Build Coastguard Worker  * @current_y: Y component of current point
44*2d1272b8SAndroid Build Coastguard Worker  *
45*2d1272b8SAndroid Build Coastguard Worker  * Current drawing state.
46*2d1272b8SAndroid Build Coastguard Worker  *
47*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
48*2d1272b8SAndroid Build Coastguard Worker  **/
49*2d1272b8SAndroid Build Coastguard Worker typedef struct hb_draw_state_t {
50*2d1272b8SAndroid Build Coastguard Worker   hb_bool_t path_open;
51*2d1272b8SAndroid Build Coastguard Worker 
52*2d1272b8SAndroid Build Coastguard Worker   float path_start_x;
53*2d1272b8SAndroid Build Coastguard Worker   float path_start_y;
54*2d1272b8SAndroid Build Coastguard Worker 
55*2d1272b8SAndroid Build Coastguard Worker   float current_x;
56*2d1272b8SAndroid Build Coastguard Worker   float current_y;
57*2d1272b8SAndroid Build Coastguard Worker 
58*2d1272b8SAndroid Build Coastguard Worker   /*< private >*/
59*2d1272b8SAndroid Build Coastguard Worker   hb_var_num_t   reserved1;
60*2d1272b8SAndroid Build Coastguard Worker   hb_var_num_t   reserved2;
61*2d1272b8SAndroid Build Coastguard Worker   hb_var_num_t   reserved3;
62*2d1272b8SAndroid Build Coastguard Worker   hb_var_num_t   reserved4;
63*2d1272b8SAndroid Build Coastguard Worker   hb_var_num_t   reserved5;
64*2d1272b8SAndroid Build Coastguard Worker   hb_var_num_t   reserved6;
65*2d1272b8SAndroid Build Coastguard Worker   hb_var_num_t   reserved7;
66*2d1272b8SAndroid Build Coastguard Worker } hb_draw_state_t;
67*2d1272b8SAndroid Build Coastguard Worker 
68*2d1272b8SAndroid Build Coastguard Worker /**
69*2d1272b8SAndroid Build Coastguard Worker  * HB_DRAW_STATE_DEFAULT:
70*2d1272b8SAndroid Build Coastguard Worker  *
71*2d1272b8SAndroid Build Coastguard Worker  * The default #hb_draw_state_t at the start of glyph drawing.
72*2d1272b8SAndroid Build Coastguard Worker  */
73*2d1272b8SAndroid Build Coastguard Worker #define HB_DRAW_STATE_DEFAULT {0, 0.f, 0.f, 0.f, 0.f, {0.}, {0.}, {0.}, {0.}, {0.}, {0.}, {0.}}
74*2d1272b8SAndroid Build Coastguard Worker 
75*2d1272b8SAndroid Build Coastguard Worker 
76*2d1272b8SAndroid Build Coastguard Worker /**
77*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_funcs_t:
78*2d1272b8SAndroid Build Coastguard Worker  *
79*2d1272b8SAndroid Build Coastguard Worker  * Glyph draw callbacks.
80*2d1272b8SAndroid Build Coastguard Worker  *
81*2d1272b8SAndroid Build Coastguard Worker  * #hb_draw_move_to_func_t, #hb_draw_line_to_func_t and
82*2d1272b8SAndroid Build Coastguard Worker  * #hb_draw_cubic_to_func_t calls are necessary to be defined but we translate
83*2d1272b8SAndroid Build Coastguard Worker  * #hb_draw_quadratic_to_func_t calls to #hb_draw_cubic_to_func_t if the
84*2d1272b8SAndroid Build Coastguard Worker  * callback isn't defined.
85*2d1272b8SAndroid Build Coastguard Worker  *
86*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
87*2d1272b8SAndroid Build Coastguard Worker  **/
88*2d1272b8SAndroid Build Coastguard Worker 
89*2d1272b8SAndroid Build Coastguard Worker typedef struct hb_draw_funcs_t hb_draw_funcs_t;
90*2d1272b8SAndroid Build Coastguard Worker 
91*2d1272b8SAndroid Build Coastguard Worker 
92*2d1272b8SAndroid Build Coastguard Worker /**
93*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_move_to_func_t:
94*2d1272b8SAndroid Build Coastguard Worker  * @dfuncs: draw functions object
95*2d1272b8SAndroid Build Coastguard Worker  * @draw_data: The data accompanying the draw functions in hb_font_draw_glyph()
96*2d1272b8SAndroid Build Coastguard Worker  * @st: current draw state
97*2d1272b8SAndroid Build Coastguard Worker  * @to_x: X component of target point
98*2d1272b8SAndroid Build Coastguard Worker  * @to_y: Y component of target point
99*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed to hb_draw_funcs_set_move_to_func()
100*2d1272b8SAndroid Build Coastguard Worker  *
101*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_draw_funcs_t to perform a "move-to" draw
102*2d1272b8SAndroid Build Coastguard Worker  * operation.
103*2d1272b8SAndroid Build Coastguard Worker  *
104*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
105*2d1272b8SAndroid Build Coastguard Worker  *
106*2d1272b8SAndroid Build Coastguard Worker  **/
107*2d1272b8SAndroid Build Coastguard Worker typedef void (*hb_draw_move_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data,
108*2d1272b8SAndroid Build Coastguard Worker 					hb_draw_state_t *st,
109*2d1272b8SAndroid Build Coastguard Worker 					float to_x, float to_y,
110*2d1272b8SAndroid Build Coastguard Worker 					void *user_data);
111*2d1272b8SAndroid Build Coastguard Worker 
112*2d1272b8SAndroid Build Coastguard Worker /**
113*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_line_to_func_t:
114*2d1272b8SAndroid Build Coastguard Worker  * @dfuncs: draw functions object
115*2d1272b8SAndroid Build Coastguard Worker  * @draw_data: The data accompanying the draw functions in hb_font_draw_glyph()
116*2d1272b8SAndroid Build Coastguard Worker  * @st: current draw state
117*2d1272b8SAndroid Build Coastguard Worker  * @to_x: X component of target point
118*2d1272b8SAndroid Build Coastguard Worker  * @to_y: Y component of target point
119*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed to hb_draw_funcs_set_line_to_func()
120*2d1272b8SAndroid Build Coastguard Worker  *
121*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_draw_funcs_t to perform a "line-to" draw
122*2d1272b8SAndroid Build Coastguard Worker  * operation.
123*2d1272b8SAndroid Build Coastguard Worker  *
124*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
125*2d1272b8SAndroid Build Coastguard Worker  *
126*2d1272b8SAndroid Build Coastguard Worker  **/
127*2d1272b8SAndroid Build Coastguard Worker typedef void (*hb_draw_line_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data,
128*2d1272b8SAndroid Build Coastguard Worker 					hb_draw_state_t *st,
129*2d1272b8SAndroid Build Coastguard Worker 					float to_x, float to_y,
130*2d1272b8SAndroid Build Coastguard Worker 					void *user_data);
131*2d1272b8SAndroid Build Coastguard Worker 
132*2d1272b8SAndroid Build Coastguard Worker /**
133*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_quadratic_to_func_t:
134*2d1272b8SAndroid Build Coastguard Worker  * @dfuncs: draw functions object
135*2d1272b8SAndroid Build Coastguard Worker  * @draw_data: The data accompanying the draw functions in hb_font_draw_glyph()
136*2d1272b8SAndroid Build Coastguard Worker  * @st: current draw state
137*2d1272b8SAndroid Build Coastguard Worker  * @control_x: X component of control point
138*2d1272b8SAndroid Build Coastguard Worker  * @control_y: Y component of control point
139*2d1272b8SAndroid Build Coastguard Worker  * @to_x: X component of target point
140*2d1272b8SAndroid Build Coastguard Worker  * @to_y: Y component of target point
141*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed to hb_draw_funcs_set_quadratic_to_func()
142*2d1272b8SAndroid Build Coastguard Worker  *
143*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_draw_funcs_t to perform a "quadratic-to" draw
144*2d1272b8SAndroid Build Coastguard Worker  * operation.
145*2d1272b8SAndroid Build Coastguard Worker  *
146*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
147*2d1272b8SAndroid Build Coastguard Worker  *
148*2d1272b8SAndroid Build Coastguard Worker  **/
149*2d1272b8SAndroid Build Coastguard Worker typedef void (*hb_draw_quadratic_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data,
150*2d1272b8SAndroid Build Coastguard Worker 					     hb_draw_state_t *st,
151*2d1272b8SAndroid Build Coastguard Worker 					     float control_x, float control_y,
152*2d1272b8SAndroid Build Coastguard Worker 					     float to_x, float to_y,
153*2d1272b8SAndroid Build Coastguard Worker 					     void *user_data);
154*2d1272b8SAndroid Build Coastguard Worker 
155*2d1272b8SAndroid Build Coastguard Worker /**
156*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_cubic_to_func_t:
157*2d1272b8SAndroid Build Coastguard Worker  * @dfuncs: draw functions object
158*2d1272b8SAndroid Build Coastguard Worker  * @draw_data: The data accompanying the draw functions in hb_font_draw_glyph()
159*2d1272b8SAndroid Build Coastguard Worker  * @st: current draw state
160*2d1272b8SAndroid Build Coastguard Worker  * @control1_x: X component of first control point
161*2d1272b8SAndroid Build Coastguard Worker  * @control1_y: Y component of first control point
162*2d1272b8SAndroid Build Coastguard Worker  * @control2_x: X component of second control point
163*2d1272b8SAndroid Build Coastguard Worker  * @control2_y: Y component of second control point
164*2d1272b8SAndroid Build Coastguard Worker  * @to_x: X component of target point
165*2d1272b8SAndroid Build Coastguard Worker  * @to_y: Y component of target point
166*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed to hb_draw_funcs_set_cubic_to_func()
167*2d1272b8SAndroid Build Coastguard Worker  *
168*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_draw_funcs_t to perform a "cubic-to" draw
169*2d1272b8SAndroid Build Coastguard Worker  * operation.
170*2d1272b8SAndroid Build Coastguard Worker  *
171*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
172*2d1272b8SAndroid Build Coastguard Worker  *
173*2d1272b8SAndroid Build Coastguard Worker  **/
174*2d1272b8SAndroid Build Coastguard Worker typedef void (*hb_draw_cubic_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data,
175*2d1272b8SAndroid Build Coastguard Worker 					 hb_draw_state_t *st,
176*2d1272b8SAndroid Build Coastguard Worker 					 float control1_x, float control1_y,
177*2d1272b8SAndroid Build Coastguard Worker 					 float control2_x, float control2_y,
178*2d1272b8SAndroid Build Coastguard Worker 					 float to_x, float to_y,
179*2d1272b8SAndroid Build Coastguard Worker 					 void *user_data);
180*2d1272b8SAndroid Build Coastguard Worker 
181*2d1272b8SAndroid Build Coastguard Worker /**
182*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_close_path_func_t:
183*2d1272b8SAndroid Build Coastguard Worker  * @dfuncs: draw functions object
184*2d1272b8SAndroid Build Coastguard Worker  * @draw_data: The data accompanying the draw functions in hb_font_draw_glyph()
185*2d1272b8SAndroid Build Coastguard Worker  * @st: current draw state
186*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data pointer passed to hb_draw_funcs_set_close_path_func()
187*2d1272b8SAndroid Build Coastguard Worker  *
188*2d1272b8SAndroid Build Coastguard Worker  * A virtual method for the #hb_draw_funcs_t to perform a "close-path" draw
189*2d1272b8SAndroid Build Coastguard Worker  * operation.
190*2d1272b8SAndroid Build Coastguard Worker  *
191*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
192*2d1272b8SAndroid Build Coastguard Worker  *
193*2d1272b8SAndroid Build Coastguard Worker  **/
194*2d1272b8SAndroid Build Coastguard Worker typedef void (*hb_draw_close_path_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data,
195*2d1272b8SAndroid Build Coastguard Worker 					   hb_draw_state_t *st,
196*2d1272b8SAndroid Build Coastguard Worker 					   void *user_data);
197*2d1272b8SAndroid Build Coastguard Worker 
198*2d1272b8SAndroid Build Coastguard Worker /**
199*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_funcs_set_move_to_func:
200*2d1272b8SAndroid Build Coastguard Worker  * @dfuncs: draw functions object
201*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): move-to callback
202*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
203*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
204*2d1272b8SAndroid Build Coastguard Worker  *
205*2d1272b8SAndroid Build Coastguard Worker  * Sets move-to callback to the draw functions object.
206*2d1272b8SAndroid Build Coastguard Worker  *
207*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
208*2d1272b8SAndroid Build Coastguard Worker  **/
209*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
210*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_set_move_to_func (hb_draw_funcs_t        *dfuncs,
211*2d1272b8SAndroid Build Coastguard Worker 				hb_draw_move_to_func_t  func,
212*2d1272b8SAndroid Build Coastguard Worker 				void *user_data, hb_destroy_func_t destroy);
213*2d1272b8SAndroid Build Coastguard Worker 
214*2d1272b8SAndroid Build Coastguard Worker /**
215*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_funcs_set_line_to_func:
216*2d1272b8SAndroid Build Coastguard Worker  * @dfuncs: draw functions object
217*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): line-to callback
218*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
219*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
220*2d1272b8SAndroid Build Coastguard Worker  *
221*2d1272b8SAndroid Build Coastguard Worker  * Sets line-to callback to the draw functions object.
222*2d1272b8SAndroid Build Coastguard Worker  *
223*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
224*2d1272b8SAndroid Build Coastguard Worker  **/
225*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
226*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_set_line_to_func (hb_draw_funcs_t        *dfuncs,
227*2d1272b8SAndroid Build Coastguard Worker 				hb_draw_line_to_func_t  func,
228*2d1272b8SAndroid Build Coastguard Worker 				void *user_data, hb_destroy_func_t destroy);
229*2d1272b8SAndroid Build Coastguard Worker 
230*2d1272b8SAndroid Build Coastguard Worker /**
231*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_funcs_set_quadratic_to_func:
232*2d1272b8SAndroid Build Coastguard Worker  * @dfuncs: draw functions object
233*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): quadratic-to callback
234*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
235*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
236*2d1272b8SAndroid Build Coastguard Worker  *
237*2d1272b8SAndroid Build Coastguard Worker  * Sets quadratic-to callback to the draw functions object.
238*2d1272b8SAndroid Build Coastguard Worker  *
239*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
240*2d1272b8SAndroid Build Coastguard Worker  **/
241*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
242*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t             *dfuncs,
243*2d1272b8SAndroid Build Coastguard Worker 				     hb_draw_quadratic_to_func_t  func,
244*2d1272b8SAndroid Build Coastguard Worker 				     void *user_data, hb_destroy_func_t destroy);
245*2d1272b8SAndroid Build Coastguard Worker 
246*2d1272b8SAndroid Build Coastguard Worker /**
247*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_funcs_set_cubic_to_func:
248*2d1272b8SAndroid Build Coastguard Worker  * @dfuncs: draw functions
249*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): cubic-to callback
250*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
251*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
252*2d1272b8SAndroid Build Coastguard Worker  *
253*2d1272b8SAndroid Build Coastguard Worker  * Sets cubic-to callback to the draw functions object.
254*2d1272b8SAndroid Build Coastguard Worker  *
255*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
256*2d1272b8SAndroid Build Coastguard Worker  **/
257*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
258*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t         *dfuncs,
259*2d1272b8SAndroid Build Coastguard Worker 				 hb_draw_cubic_to_func_t  func,
260*2d1272b8SAndroid Build Coastguard Worker 				 void *user_data, hb_destroy_func_t destroy);
261*2d1272b8SAndroid Build Coastguard Worker 
262*2d1272b8SAndroid Build Coastguard Worker /**
263*2d1272b8SAndroid Build Coastguard Worker  * hb_draw_funcs_set_close_path_func:
264*2d1272b8SAndroid Build Coastguard Worker  * @dfuncs: draw functions object
265*2d1272b8SAndroid Build Coastguard Worker  * @func: (closure user_data) (destroy destroy) (scope notified): close-path callback
266*2d1272b8SAndroid Build Coastguard Worker  * @user_data: Data to pass to @func
267*2d1272b8SAndroid Build Coastguard Worker  * @destroy: (nullable): The function to call when @user_data is not needed anymore
268*2d1272b8SAndroid Build Coastguard Worker  *
269*2d1272b8SAndroid Build Coastguard Worker  * Sets close-path callback to the draw functions object.
270*2d1272b8SAndroid Build Coastguard Worker  *
271*2d1272b8SAndroid Build Coastguard Worker  * Since: 4.0.0
272*2d1272b8SAndroid Build Coastguard Worker  **/
273*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
274*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_set_close_path_func (hb_draw_funcs_t           *dfuncs,
275*2d1272b8SAndroid Build Coastguard Worker 				   hb_draw_close_path_func_t  func,
276*2d1272b8SAndroid Build Coastguard Worker 				   void *user_data, hb_destroy_func_t destroy);
277*2d1272b8SAndroid Build Coastguard Worker 
278*2d1272b8SAndroid Build Coastguard Worker 
279*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_draw_funcs_t *
280*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_create (void);
281*2d1272b8SAndroid Build Coastguard Worker 
282*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_draw_funcs_t *
283*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_get_empty (void);
284*2d1272b8SAndroid Build Coastguard Worker 
285*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_draw_funcs_t *
286*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_reference (hb_draw_funcs_t *dfuncs);
287*2d1272b8SAndroid Build Coastguard Worker 
288*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
289*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_destroy (hb_draw_funcs_t *dfuncs);
290*2d1272b8SAndroid Build Coastguard Worker 
291*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
292*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_set_user_data (hb_draw_funcs_t *dfuncs,
293*2d1272b8SAndroid Build Coastguard Worker 			     hb_user_data_key_t *key,
294*2d1272b8SAndroid Build Coastguard Worker 			     void *              data,
295*2d1272b8SAndroid Build Coastguard Worker 			     hb_destroy_func_t   destroy,
296*2d1272b8SAndroid Build Coastguard Worker 			     hb_bool_t           replace);
297*2d1272b8SAndroid Build Coastguard Worker 
298*2d1272b8SAndroid Build Coastguard Worker 
299*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void *
300*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_get_user_data (const hb_draw_funcs_t *dfuncs,
301*2d1272b8SAndroid Build Coastguard Worker 			     hb_user_data_key_t       *key);
302*2d1272b8SAndroid Build Coastguard Worker 
303*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
304*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_make_immutable (hb_draw_funcs_t *dfuncs);
305*2d1272b8SAndroid Build Coastguard Worker 
306*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_bool_t
307*2d1272b8SAndroid Build Coastguard Worker hb_draw_funcs_is_immutable (hb_draw_funcs_t *dfuncs);
308*2d1272b8SAndroid Build Coastguard Worker 
309*2d1272b8SAndroid Build Coastguard Worker 
310*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
311*2d1272b8SAndroid Build Coastguard Worker hb_draw_move_to (hb_draw_funcs_t *dfuncs, void *draw_data,
312*2d1272b8SAndroid Build Coastguard Worker 		 hb_draw_state_t *st,
313*2d1272b8SAndroid Build Coastguard Worker 		 float to_x, float to_y);
314*2d1272b8SAndroid Build Coastguard Worker 
315*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
316*2d1272b8SAndroid Build Coastguard Worker hb_draw_line_to (hb_draw_funcs_t *dfuncs, void *draw_data,
317*2d1272b8SAndroid Build Coastguard Worker 		 hb_draw_state_t *st,
318*2d1272b8SAndroid Build Coastguard Worker 		 float to_x, float to_y);
319*2d1272b8SAndroid Build Coastguard Worker 
320*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
321*2d1272b8SAndroid Build Coastguard Worker hb_draw_quadratic_to (hb_draw_funcs_t *dfuncs, void *draw_data,
322*2d1272b8SAndroid Build Coastguard Worker 		      hb_draw_state_t *st,
323*2d1272b8SAndroid Build Coastguard Worker 		      float control_x, float control_y,
324*2d1272b8SAndroid Build Coastguard Worker 		      float to_x, float to_y);
325*2d1272b8SAndroid Build Coastguard Worker 
326*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
327*2d1272b8SAndroid Build Coastguard Worker hb_draw_cubic_to (hb_draw_funcs_t *dfuncs, void *draw_data,
328*2d1272b8SAndroid Build Coastguard Worker 		  hb_draw_state_t *st,
329*2d1272b8SAndroid Build Coastguard Worker 		  float control1_x, float control1_y,
330*2d1272b8SAndroid Build Coastguard Worker 		  float control2_x, float control2_y,
331*2d1272b8SAndroid Build Coastguard Worker 		  float to_x, float to_y);
332*2d1272b8SAndroid Build Coastguard Worker 
333*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
334*2d1272b8SAndroid Build Coastguard Worker hb_draw_close_path (hb_draw_funcs_t *dfuncs, void *draw_data,
335*2d1272b8SAndroid Build Coastguard Worker 		    hb_draw_state_t *st);
336*2d1272b8SAndroid Build Coastguard Worker 
337*2d1272b8SAndroid Build Coastguard Worker 
338*2d1272b8SAndroid Build Coastguard Worker HB_END_DECLS
339*2d1272b8SAndroid Build Coastguard Worker 
340*2d1272b8SAndroid Build Coastguard Worker #endif /* HB_DRAW_H */
341