add-cairo_scaled_font_get_hint_metrics (7512B)
1 # HG changeset patch 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 5 6 diff --git a/gfx/cairo/add-cairo_scaled_font_get_hint_metrics b/gfx/cairo/add-cairo_scaled_font_get_hint_metrics 7 new file mode 100644 8 --- /dev/null 9 +++ b/gfx/cairo/add-cairo_scaled_font_get_hint_metrics 10 @@ -0,0 +1,82 @@ 11 +# HG changeset patch 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 15 + 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); 43 + return; 44 + } 45 + 46 + _cairo_font_options_init_copy (options, &scaled_font->options); 47 + } 48 + slim_hidden_def (cairo_scaled_font_get_font_options); 49 ++ 50 ++/** 51 ++ * cairo_scaled_font_get_hint_metrics: 52 ++ * @scaled_font: a #cairo_scaled_font_t 53 ++ * 54 ++ * Mozilla extension since the required malloc/free to use 55 ++ * cairo_scaled_font_get_font_options() above is too slow. 56 ++ **/ 57 ++cairo_public cairo_hint_metrics_t 58 ++cairo_scaled_font_get_hint_metrics (cairo_scaled_font_t *scaled_font) 59 ++{ 60 ++ cairo_font_options_t options; 61 ++ if (scaled_font->status) { 62 ++ _cairo_font_options_init_default (&options); 63 ++ } else { 64 ++ _cairo_font_options_init_copy (&options, &scaled_font->options); 65 ++ } 66 ++ return options.hint_metrics; 67 ++} 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_ 73 + cairo_public void 74 + cairo_scaled_font_get_scale_matrix (cairo_scaled_font_t *scaled_font, 75 + cairo_matrix_t *scale_matrix); 76 + 77 + cairo_public void 78 + cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font, 79 + cairo_font_options_t *options); 80 + 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); 84 ++ 85 ++ 86 + 87 + /* Toy fonts */ 88 + 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); 93 + 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 97 @@ -262,16 +262,17 @@ 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); 121 return; 122 } 123 124 _cairo_font_options_init_copy (options, &scaled_font->options); 125 } 126 slim_hidden_def (cairo_scaled_font_get_font_options); 127 + 128 +/** 129 + * cairo_scaled_font_get_hint_metrics: 130 + * @scaled_font: a #cairo_scaled_font_t 131 + * 132 + * Mozilla extension since the required malloc/free to use 133 + * cairo_scaled_font_get_font_options() above is too slow. 134 + **/ 135 +cairo_public cairo_hint_metrics_t 136 +cairo_scaled_font_get_hint_metrics (cairo_scaled_font_t *scaled_font) 137 +{ 138 + cairo_font_options_t options; 139 + if (scaled_font->status) { 140 + _cairo_font_options_init_default (&options); 141 + } else { 142 + _cairo_font_options_init_copy (&options, &scaled_font->options); 143 + } 144 + return options.hint_metrics; 145 +} 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_ 151 cairo_public void 152 cairo_scaled_font_get_scale_matrix (cairo_scaled_font_t *scaled_font, 153 cairo_matrix_t *scale_matrix); 154 155 cairo_public void 156 cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font, 157 cairo_font_options_t *options); 158 159 +cairo_public cairo_hint_metrics_t 160 +cairo_scaled_font_get_hint_metrics (cairo_scaled_font_t *scaled_font); 161 + 162 163 /* Toy fonts */ 164 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); 169