xref: /aosp_15_r20/external/harfbuzz_ng/src/hb-cairo.h (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1*2d1272b8SAndroid Build Coastguard Worker /*
2*2d1272b8SAndroid Build Coastguard Worker  * Copyright © 2022 Red Hat, Inc.
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  * Red Hat Author(s): Matthias Clasen
25*2d1272b8SAndroid Build Coastguard Worker  */
26*2d1272b8SAndroid Build Coastguard Worker 
27*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_CAIRO_H
28*2d1272b8SAndroid Build Coastguard Worker #define HB_CAIRO_H
29*2d1272b8SAndroid Build Coastguard Worker 
30*2d1272b8SAndroid Build Coastguard Worker #include "hb.h"
31*2d1272b8SAndroid Build Coastguard Worker 
32*2d1272b8SAndroid Build Coastguard Worker #include <cairo.h>
33*2d1272b8SAndroid Build Coastguard Worker 
34*2d1272b8SAndroid Build Coastguard Worker HB_BEGIN_DECLS
35*2d1272b8SAndroid Build Coastguard Worker 
36*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN cairo_font_face_t *
37*2d1272b8SAndroid Build Coastguard Worker hb_cairo_font_face_create_for_font (hb_font_t *font);
38*2d1272b8SAndroid Build Coastguard Worker 
39*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_font_t *
40*2d1272b8SAndroid Build Coastguard Worker hb_cairo_font_face_get_font (cairo_font_face_t *font_face);
41*2d1272b8SAndroid Build Coastguard Worker 
42*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN cairo_font_face_t *
43*2d1272b8SAndroid Build Coastguard Worker hb_cairo_font_face_create_for_face (hb_face_t *face);
44*2d1272b8SAndroid Build Coastguard Worker 
45*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_face_t *
46*2d1272b8SAndroid Build Coastguard Worker hb_cairo_font_face_get_face (cairo_font_face_t *font_face);
47*2d1272b8SAndroid Build Coastguard Worker 
48*2d1272b8SAndroid Build Coastguard Worker /**
49*2d1272b8SAndroid Build Coastguard Worker  * hb_cairo_font_init_func_t:
50*2d1272b8SAndroid Build Coastguard Worker  * @font: The #hb_font_t being created
51*2d1272b8SAndroid Build Coastguard Worker  * @scaled_font: The respective #cairo_scaled_font_t
52*2d1272b8SAndroid Build Coastguard Worker  * @user_data: User data accompanying this method
53*2d1272b8SAndroid Build Coastguard Worker  *
54*2d1272b8SAndroid Build Coastguard Worker  * The type of a virtual method to be called when a cairo
55*2d1272b8SAndroid Build Coastguard Worker  * face created using hb_cairo_font_face_create_for_face()
56*2d1272b8SAndroid Build Coastguard Worker  * creates an #hb_font_t for a #cairo_scaled_font_t.
57*2d1272b8SAndroid Build Coastguard Worker  *
58*2d1272b8SAndroid Build Coastguard Worker  * Return value: the #hb_font_t value to use; in most cases same as @font
59*2d1272b8SAndroid Build Coastguard Worker  *
60*2d1272b8SAndroid Build Coastguard Worker  * Since: 7.0.0
61*2d1272b8SAndroid Build Coastguard Worker  */
62*2d1272b8SAndroid Build Coastguard Worker typedef hb_font_t * (*hb_cairo_font_init_func_t) (hb_font_t *font,
63*2d1272b8SAndroid Build Coastguard Worker 						  cairo_scaled_font_t *scaled_font,
64*2d1272b8SAndroid Build Coastguard Worker 						  void *user_data);
65*2d1272b8SAndroid Build Coastguard Worker 
66*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
67*2d1272b8SAndroid Build Coastguard Worker hb_cairo_font_face_set_font_init_func (cairo_font_face_t *font_face,
68*2d1272b8SAndroid Build Coastguard Worker 				       hb_cairo_font_init_func_t func,
69*2d1272b8SAndroid Build Coastguard Worker 				       void *user_data,
70*2d1272b8SAndroid Build Coastguard Worker 				       hb_destroy_func_t destroy);
71*2d1272b8SAndroid Build Coastguard Worker 
72*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN hb_font_t *
73*2d1272b8SAndroid Build Coastguard Worker hb_cairo_scaled_font_get_font (cairo_scaled_font_t *scaled_font);
74*2d1272b8SAndroid Build Coastguard Worker 
75*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
76*2d1272b8SAndroid Build Coastguard Worker hb_cairo_font_face_set_scale_factor (cairo_font_face_t *font_face,
77*2d1272b8SAndroid Build Coastguard Worker 				     unsigned int scale_factor);
78*2d1272b8SAndroid Build Coastguard Worker 
79*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN unsigned int
80*2d1272b8SAndroid Build Coastguard Worker hb_cairo_font_face_get_scale_factor (cairo_font_face_t *font_face);
81*2d1272b8SAndroid Build Coastguard Worker 
82*2d1272b8SAndroid Build Coastguard Worker HB_EXTERN void
83*2d1272b8SAndroid Build Coastguard Worker hb_cairo_glyphs_from_buffer (hb_buffer_t *buffer,
84*2d1272b8SAndroid Build Coastguard Worker 			     hb_bool_t utf8_clusters,
85*2d1272b8SAndroid Build Coastguard Worker 			     double x_scale_factor,
86*2d1272b8SAndroid Build Coastguard Worker 			     double y_scale_factor,
87*2d1272b8SAndroid Build Coastguard Worker 			     double x,
88*2d1272b8SAndroid Build Coastguard Worker 			     double y,
89*2d1272b8SAndroid Build Coastguard Worker 			     const char *utf8,
90*2d1272b8SAndroid Build Coastguard Worker 			     int utf8_len,
91*2d1272b8SAndroid Build Coastguard Worker 			     cairo_glyph_t **glyphs,
92*2d1272b8SAndroid Build Coastguard Worker 			     unsigned int *num_glyphs,
93*2d1272b8SAndroid Build Coastguard Worker 			     cairo_text_cluster_t **clusters,
94*2d1272b8SAndroid Build Coastguard Worker 			     unsigned int *num_clusters,
95*2d1272b8SAndroid Build Coastguard Worker 			     cairo_text_cluster_flags_t *cluster_flags);
96*2d1272b8SAndroid Build Coastguard Worker 
97*2d1272b8SAndroid Build Coastguard Worker HB_END_DECLS
98*2d1272b8SAndroid Build Coastguard Worker 
99*2d1272b8SAndroid Build Coastguard Worker #endif /* HB_CAIRO_H */
100