2 # User Mats Palmgren <mats@mozilla.com>
3 # Parent f3483af8ecf997453064201c49c48a682c7f3c29
4 Bug 1377257 part 1 - Add cairo_scaled_font_get_hint_metrics to avoid malloc/free that is required to use cairo_scaled_font_get_font_options. r=jfkthame
6 diff --git a/gfx/cairo/add-cairo_scaled_font_get_hint_metrics b/gfx/cairo/add-cairo_scaled_font_get_hint_metrics
9 +++ b/gfx/cairo/add-cairo_scaled_font_get_hint_metrics
12 +# User Mats Palmgren <mats@mozilla.com>
13 +# Parent f3483af8ecf997453064201c49c48a682c7f3c29
14 +Bug 1377257 part 1 - Add cairo_scaled_font_get_hint_metrics to avoid malloc/free that is required to use cairo_scaled_font_get_font_options. r=jfkthame
16 +diff --git a/gfx/cairo/cairo/src/cairo-rename.h b/gfx/cairo/cairo/src/cairo-rename.h
17 +--- a/gfx/cairo/cairo/src/cairo-rename.h
18 ++++ b/gfx/cairo/cairo/src/cairo-rename.h
19 +@@ -262,16 +262,17 @@
20 + #define cairo_scale _moz_cairo_scale
21 + #define cairo_scaled_font_create _moz_cairo_scaled_font_create
22 + #define cairo_scaled_font_destroy _moz_cairo_scaled_font_destroy
23 + #define cairo_scaled_font_extents _moz_cairo_scaled_font_extents
24 + #define cairo_scaled_font_get_ctm _moz_cairo_scaled_font_get_ctm
25 + #define cairo_scaled_font_get_font_face _moz_cairo_scaled_font_get_font_face
26 + #define cairo_scaled_font_get_font_matrix _moz_cairo_scaled_font_get_font_matrix
27 + #define cairo_scaled_font_get_font_options _moz_cairo_scaled_font_get_font_options
28 ++#define cairo_scaled_font_get_hint_metrics _moz_cairo_scaled_font_get_hint_metrics
29 + #define cairo_scaled_font_get_reference_count _moz_cairo_scaled_font_get_reference_count
30 + #define cairo_scaled_font_get_scale_matrix _moz_cairo_scaled_font_get_scale_matrix
31 + #define cairo_scaled_font_get_type _moz_cairo_scaled_font_get_type
32 + #define cairo_scaled_font_get_user_data _moz_cairo_scaled_font_get_user_data
33 + #define cairo_scaled_font_glyph_extents _moz_cairo_scaled_font_glyph_extents
34 + #define cairo_scaled_font_reference _moz_cairo_scaled_font_reference
35 + #define cairo_scaled_font_set_user_data _moz_cairo_scaled_font_set_user_data
36 + #define cairo_scaled_font_status _moz_cairo_scaled_font_status
37 +diff --git a/gfx/cairo/cairo/src/cairo-scaled-font.c b/gfx/cairo/cairo/src/cairo-scaled-font.c
38 +--- a/gfx/cairo/cairo/src/cairo-scaled-font.c
39 ++++ b/gfx/cairo/cairo/src/cairo-scaled-font.c
40 +@@ -2983,8 +2983,28 @@ cairo_scaled_font_get_font_options (cair
41 + if (scaled_font->status) {
42 + _cairo_font_options_init_default (options);
46 + _cairo_font_options_init_copy (options, &scaled_font->options);
48 + slim_hidden_def (cairo_scaled_font_get_font_options);
51 ++ * cairo_scaled_font_get_hint_metrics:
52 ++ * @scaled_font: a #cairo_scaled_font_t
54 ++ * Mozilla extension since the required malloc/free to use
55 ++ * cairo_scaled_font_get_font_options() above is too slow.
57 ++cairo_public cairo_hint_metrics_t
58 ++cairo_scaled_font_get_hint_metrics (cairo_scaled_font_t *scaled_font)
60 ++ cairo_font_options_t options;
61 ++ if (scaled_font->status) {
62 ++ _cairo_font_options_init_default (&options);
64 ++ _cairo_font_options_init_copy (&options, &scaled_font->options);
66 ++ return options.hint_metrics;
68 ++slim_hidden_def (cairo_scaled_font_get_hint_metrics);
69 +diff --git a/gfx/cairo/cairo/src/cairo.h b/gfx/cairo/cairo/src/cairo.h
70 +--- a/gfx/cairo/cairo/src/cairo.h
71 ++++ b/gfx/cairo/cairo/src/cairo.h
72 +@@ -1493,16 +1493,21 @@ cairo_scaled_font_get_ctm (cairo_scaled_
74 + cairo_scaled_font_get_scale_matrix (cairo_scaled_font_t *scaled_font,
75 + cairo_matrix_t *scale_matrix);
78 + cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font,
79 + cairo_font_options_t *options);
81 ++/* mozilla extension, see https://bugzilla.mozilla.org/show_bug.cgi?id=1377257 */
82 ++cairo_public cairo_hint_metrics_t
83 ++cairo_scaled_font_get_hint_metrics (cairo_scaled_font_t *scaled_font);
89 + cairo_public cairo_font_face_t *
90 + cairo_toy_font_face_create (const char *family,
91 + cairo_font_slant_t slant,
92 + cairo_font_weight_t weight);
94 diff --git a/gfx/cairo/cairo/src/cairo-rename.h b/gfx/cairo/cairo/src/cairo-rename.h
95 --- a/gfx/cairo/cairo/src/cairo-rename.h
96 +++ b/gfx/cairo/cairo/src/cairo-rename.h
98 #define cairo_scale _moz_cairo_scale
99 #define cairo_scaled_font_create _moz_cairo_scaled_font_create
100 #define cairo_scaled_font_destroy _moz_cairo_scaled_font_destroy
101 #define cairo_scaled_font_extents _moz_cairo_scaled_font_extents
102 #define cairo_scaled_font_get_ctm _moz_cairo_scaled_font_get_ctm
103 #define cairo_scaled_font_get_font_face _moz_cairo_scaled_font_get_font_face
104 #define cairo_scaled_font_get_font_matrix _moz_cairo_scaled_font_get_font_matrix
105 #define cairo_scaled_font_get_font_options _moz_cairo_scaled_font_get_font_options
106 +#define cairo_scaled_font_get_hint_metrics _moz_cairo_scaled_font_get_hint_metrics
107 #define cairo_scaled_font_get_reference_count _moz_cairo_scaled_font_get_reference_count
108 #define cairo_scaled_font_get_scale_matrix _moz_cairo_scaled_font_get_scale_matrix
109 #define cairo_scaled_font_get_type _moz_cairo_scaled_font_get_type
110 #define cairo_scaled_font_get_user_data _moz_cairo_scaled_font_get_user_data
111 #define cairo_scaled_font_glyph_extents _moz_cairo_scaled_font_glyph_extents
112 #define cairo_scaled_font_reference _moz_cairo_scaled_font_reference
113 #define cairo_scaled_font_set_user_data _moz_cairo_scaled_font_set_user_data
114 #define cairo_scaled_font_status _moz_cairo_scaled_font_status
115 diff --git a/gfx/cairo/cairo/src/cairo-scaled-font.c b/gfx/cairo/cairo/src/cairo-scaled-font.c
116 --- a/gfx/cairo/cairo/src/cairo-scaled-font.c
117 +++ b/gfx/cairo/cairo/src/cairo-scaled-font.c
118 @@ -2983,8 +2983,28 @@ cairo_scaled_font_get_font_options (cair
119 if (scaled_font->status) {
120 _cairo_font_options_init_default (options);
124 _cairo_font_options_init_copy (options, &scaled_font->options);
126 slim_hidden_def (cairo_scaled_font_get_font_options);
129 + * cairo_scaled_font_get_hint_metrics:
130 + * @scaled_font: a #cairo_scaled_font_t
132 + * Mozilla extension since the required malloc/free to use
133 + * cairo_scaled_font_get_font_options() above is too slow.
135 +cairo_public cairo_hint_metrics_t
136 +cairo_scaled_font_get_hint_metrics (cairo_scaled_font_t *scaled_font)
138 + cairo_font_options_t options;
139 + if (scaled_font->status) {
140 + _cairo_font_options_init_default (&options);
142 + _cairo_font_options_init_copy (&options, &scaled_font->options);
144 + return options.hint_metrics;
146 +slim_hidden_def (cairo_scaled_font_get_hint_metrics);
147 diff --git a/gfx/cairo/cairo/src/cairo.h b/gfx/cairo/cairo/src/cairo.h
148 --- a/gfx/cairo/cairo/src/cairo.h
149 +++ b/gfx/cairo/cairo/src/cairo.h
150 @@ -1493,16 +1493,19 @@ cairo_scaled_font_get_ctm (cairo_scaled_
152 cairo_scaled_font_get_scale_matrix (cairo_scaled_font_t *scaled_font,
153 cairo_matrix_t *scale_matrix);
156 cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font,
157 cairo_font_options_t *options);
159 +cairo_public cairo_hint_metrics_t
160 +cairo_scaled_font_get_hint_metrics (cairo_scaled_font_t *scaled_font);
165 cairo_public cairo_font_face_t *
166 cairo_toy_font_face_create (const char *family,
167 cairo_font_slant_t slant,
168 cairo_font_weight_t weight);