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