jpayne@69: /* jpayne@69: * Copyright © 2019-2020 Ebrahim Byagowi jpayne@69: * jpayne@69: * This is part of HarfBuzz, a text shaping library. jpayne@69: * jpayne@69: * Permission is hereby granted, without written agreement and without jpayne@69: * license or royalty fees, to use, copy, modify, and distribute this jpayne@69: * software and its documentation for any purpose, provided that the jpayne@69: * above copyright notice and the following two paragraphs appear in jpayne@69: * all copies of this software. jpayne@69: * jpayne@69: * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR jpayne@69: * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES jpayne@69: * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN jpayne@69: * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH jpayne@69: * DAMAGE. jpayne@69: * jpayne@69: * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, jpayne@69: * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND jpayne@69: * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS jpayne@69: * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO jpayne@69: * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. jpayne@69: */ jpayne@69: jpayne@69: #ifndef HB_H_IN jpayne@69: #error "Include instead." jpayne@69: #endif jpayne@69: jpayne@69: #ifndef HB_DRAW_H jpayne@69: #define HB_DRAW_H jpayne@69: jpayne@69: #include "hb.h" jpayne@69: jpayne@69: HB_BEGIN_DECLS jpayne@69: jpayne@69: #ifdef HB_EXPERIMENTAL_API jpayne@69: typedef void (*hb_draw_move_to_func_t) (hb_position_t to_x, hb_position_t to_y, void *user_data); jpayne@69: typedef void (*hb_draw_line_to_func_t) (hb_position_t to_x, hb_position_t to_y, void *user_data); jpayne@69: typedef void (*hb_draw_quadratic_to_func_t) (hb_position_t control_x, hb_position_t control_y, jpayne@69: hb_position_t to_x, hb_position_t to_y, jpayne@69: void *user_data); jpayne@69: typedef void (*hb_draw_cubic_to_func_t) (hb_position_t control1_x, hb_position_t control1_y, jpayne@69: hb_position_t control2_x, hb_position_t control2_y, jpayne@69: hb_position_t to_x, hb_position_t to_y, jpayne@69: void *user_data); jpayne@69: typedef void (*hb_draw_close_path_func_t) (void *user_data); jpayne@69: jpayne@69: /** jpayne@69: * hb_draw_funcs_t: jpayne@69: * jpayne@69: * Glyph draw callbacks. jpayne@69: * jpayne@69: * _move_to, _line_to and _cubic_to calls are nessecary to be defined but we jpayne@69: * translate _quadratic_to calls to _cubic_to if the callback isn't defined. jpayne@69: * jpayne@69: * Since: EXPERIMENTAL jpayne@69: **/ jpayne@69: typedef struct hb_draw_funcs_t hb_draw_funcs_t; jpayne@69: jpayne@69: HB_EXTERN void jpayne@69: hb_draw_funcs_set_move_to_func (hb_draw_funcs_t *funcs, jpayne@69: hb_draw_move_to_func_t move_to); jpayne@69: jpayne@69: HB_EXTERN void jpayne@69: hb_draw_funcs_set_line_to_func (hb_draw_funcs_t *funcs, jpayne@69: hb_draw_line_to_func_t line_to); jpayne@69: jpayne@69: HB_EXTERN void jpayne@69: hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t *funcs, jpayne@69: hb_draw_quadratic_to_func_t quadratic_to); jpayne@69: jpayne@69: HB_EXTERN void jpayne@69: hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t *funcs, jpayne@69: hb_draw_cubic_to_func_t cubic_to); jpayne@69: jpayne@69: HB_EXTERN void jpayne@69: hb_draw_funcs_set_close_path_func (hb_draw_funcs_t *funcs, jpayne@69: hb_draw_close_path_func_t close_path); jpayne@69: jpayne@69: HB_EXTERN hb_draw_funcs_t * jpayne@69: hb_draw_funcs_create (void); jpayne@69: jpayne@69: HB_EXTERN hb_draw_funcs_t * jpayne@69: hb_draw_funcs_reference (hb_draw_funcs_t *funcs); jpayne@69: jpayne@69: HB_EXTERN void jpayne@69: hb_draw_funcs_destroy (hb_draw_funcs_t *funcs); jpayne@69: jpayne@69: HB_EXTERN void jpayne@69: hb_draw_funcs_make_immutable (hb_draw_funcs_t *funcs); jpayne@69: jpayne@69: HB_EXTERN hb_bool_t jpayne@69: hb_draw_funcs_is_immutable (hb_draw_funcs_t *funcs); jpayne@69: #endif jpayne@69: jpayne@69: HB_END_DECLS jpayne@69: jpayne@69: #endif /* HB_DRAW_H */