Bug 1874684 - Part 28: Return DateDuration from DifferenceISODateTime. r=mgaudet
[gecko.git] / gfx / cairo / add-cairo_scaled_font_get_hint_metrics
blob4c48c46d91da31c9812b58597d8d8b120acac3d8
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
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
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);
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);
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      }
124      _cairo_font_options_init_copy (options, &scaled_font->options);
126  slim_hidden_def (cairo_scaled_font_get_font_options);
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)
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;
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);
155  cairo_public void
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);
163  /* Toy fonts */
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);