OLD | NEW |
1 /* | 1 /* |
2 * Copyright © 2012,2013 Google, Inc. | 2 * Copyright © 2012,2013 Google, Inc. |
3 * | 3 * |
4 * This is part of HarfBuzz, a text shaping library. | 4 * This is part of HarfBuzz, a text shaping library. |
5 * | 5 * |
6 * Permission is hereby granted, without written agreement and without | 6 * Permission is hereby granted, without written agreement and without |
7 * license or royalty fees, to use, copy, modify, and distribute this | 7 * license or royalty fees, to use, copy, modify, and distribute this |
8 * software and its documentation for any purpose, provided that the | 8 * software and its documentation for any purpose, provided that the |
9 * above copyright notice and the following two paragraphs appear in | 9 * above copyright notice and the following two paragraphs appear in |
10 * all copies of this software. | 10 * all copies of this software. |
(...skipping 22 matching lines...) Expand all Loading... |
33 NULL | 33 NULL |
34 }; | 34 }; |
35 | 35 |
36 /** | 36 /** |
37 * hb_buffer_serialize_list_formats: | 37 * hb_buffer_serialize_list_formats: |
38 * | 38 * |
39 * | 39 * |
40 * | 40 * |
41 * Return value: (transfer none): | 41 * Return value: (transfer none): |
42 * | 42 * |
43 * Since: 1.0 | 43 * Since: 0.9.2 |
44 **/ | 44 **/ |
45 const char ** | 45 const char ** |
46 hb_buffer_serialize_list_formats (void) | 46 hb_buffer_serialize_list_formats (void) |
47 { | 47 { |
48 return serialize_formats; | 48 return serialize_formats; |
49 } | 49 } |
50 | 50 |
51 /** | 51 /** |
52 * hb_buffer_serialize_format_from_string: | 52 * hb_buffer_serialize_format_from_string: |
53 * @str: | 53 * @str: |
54 * @len: | 54 * @len: |
55 * | 55 * |
56 * | 56 * |
57 * | 57 * |
58 * Return value: | 58 * Return value: |
59 * | 59 * |
60 * Since: 1.0 | 60 * Since: 0.9.2 |
61 **/ | 61 **/ |
62 hb_buffer_serialize_format_t | 62 hb_buffer_serialize_format_t |
63 hb_buffer_serialize_format_from_string (const char *str, int len) | 63 hb_buffer_serialize_format_from_string (const char *str, int len) |
64 { | 64 { |
65 /* Upper-case it. */ | 65 /* Upper-case it. */ |
66 return (hb_buffer_serialize_format_t) (hb_tag_from_string (str, len) & ~0x2020
2020u); | 66 return (hb_buffer_serialize_format_t) (hb_tag_from_string (str, len) & ~0x2020
2020u); |
67 } | 67 } |
68 | 68 |
69 /** | 69 /** |
70 * hb_buffer_serialize_format_to_string: | 70 * hb_buffer_serialize_format_to_string: |
71 * @format: | 71 * @format: |
72 * | 72 * |
73 * | 73 * |
74 * | 74 * |
75 * Return value: | 75 * Return value: |
76 * | 76 * |
77 * Since: 1.0 | 77 * Since: 0.9.2 |
78 **/ | 78 **/ |
79 const char * | 79 const char * |
80 hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format) | 80 hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format) |
81 { | 81 { |
82 switch (format) | 82 switch (format) |
83 { | 83 { |
84 case HB_BUFFER_SERIALIZE_FORMAT_TEXT: return serialize_formats[0]; | 84 case HB_BUFFER_SERIALIZE_FORMAT_TEXT: return serialize_formats[0]; |
85 case HB_BUFFER_SERIALIZE_FORMAT_JSON: return serialize_formats[1]; | 85 case HB_BUFFER_SERIALIZE_FORMAT_JSON: return serialize_formats[1]; |
86 default: | 86 default: |
87 case HB_BUFFER_SERIALIZE_FORMAT_INVALID: return NULL; | 87 case HB_BUFFER_SERIALIZE_FORMAT_INVALID: return NULL; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 } | 138 } |
139 | 139 |
140 if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS)) | 140 if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS)) |
141 { | 141 { |
142 p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"dx\":%d,\"dy\":%d", | 142 p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"dx\":%d,\"dy\":%d", |
143 pos[i].x_offset, pos[i].y_offset); | 143 pos[i].x_offset, pos[i].y_offset); |
144 p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"ax\":%d,\"ay\":%d", | 144 p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"ax\":%d,\"ay\":%d", |
145 pos[i].x_advance, pos[i].y_advance); | 145 pos[i].x_advance, pos[i].y_advance); |
146 } | 146 } |
147 | 147 |
| 148 if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS) |
| 149 { |
| 150 hb_glyph_extents_t extents; |
| 151 hb_font_get_glyph_extents(font, info[i].codepoint, &extents); |
| 152 p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"xb\":%d,\"yb\":%
d", |
| 153 extents.x_bearing, extents.y_bearing)); |
| 154 p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"w\":%d,\"h\":%d"
, |
| 155 extents.width, extents.height)); |
| 156 } |
| 157 |
148 *p++ = '}'; | 158 *p++ = '}'; |
149 | 159 |
150 unsigned int l = p - b; | 160 unsigned int l = p - b; |
151 if (buf_size > l) | 161 if (buf_size > l) |
152 { | 162 { |
153 memcpy (buf, b, l); | 163 memcpy (buf, b, l); |
154 buf += l; | 164 buf += l; |
155 buf_size -= l; | 165 buf_size -= l; |
156 *buf_consumed += l; | 166 *buf_consumed += l; |
157 *buf = '\0'; | 167 *buf = '\0'; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 { | 213 { |
204 if (pos[i].x_offset || pos[i].y_offset) | 214 if (pos[i].x_offset || pos[i].y_offset) |
205 p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "@%d,%d", pos[i].x
_offset, pos[i].y_offset)); | 215 p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "@%d,%d", pos[i].x
_offset, pos[i].y_offset)); |
206 | 216 |
207 *p++ = '+'; | 217 *p++ = '+'; |
208 p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%d", pos[i].x_advan
ce)); | 218 p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%d", pos[i].x_advan
ce)); |
209 if (pos[i].y_advance) | 219 if (pos[i].y_advance) |
210 p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_ad
vance)); | 220 p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_ad
vance)); |
211 } | 221 } |
212 | 222 |
| 223 if (flags & HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS) |
| 224 { |
| 225 hb_glyph_extents_t extents; |
| 226 hb_font_get_glyph_extents(font, info[i].codepoint, &extents); |
| 227 p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "<%d,%d,%d,%d>", ext
ents.x_bearing, extents.y_bearing, extents.width, extents.height)); |
| 228 } |
| 229 |
213 unsigned int l = p - b; | 230 unsigned int l = p - b; |
214 if (buf_size > l) | 231 if (buf_size > l) |
215 { | 232 { |
216 memcpy (buf, b, l); | 233 memcpy (buf, b, l); |
217 buf += l; | 234 buf += l; |
218 buf_size -= l; | 235 buf_size -= l; |
219 *buf_consumed += l; | 236 *buf_consumed += l; |
220 *buf = '\0'; | 237 *buf = '\0'; |
221 } else | 238 } else |
222 return i - start; | 239 return i - start; |
(...skipping 12 matching lines...) Expand all Loading... |
235 * @buf_size: | 252 * @buf_size: |
236 * @buf_consumed: (out): | 253 * @buf_consumed: (out): |
237 * @font: | 254 * @font: |
238 * @format: | 255 * @format: |
239 * @flags: | 256 * @flags: |
240 * | 257 * |
241 * | 258 * |
242 * | 259 * |
243 * Return value: | 260 * Return value: |
244 * | 261 * |
245 * Since: 1.0 | 262 * Since: 0.9.2 |
246 **/ | 263 **/ |
247 unsigned int | 264 unsigned int |
248 hb_buffer_serialize_glyphs (hb_buffer_t *buffer, | 265 hb_buffer_serialize_glyphs (hb_buffer_t *buffer, |
249 unsigned int start, | 266 unsigned int start, |
250 unsigned int end, | 267 unsigned int end, |
251 char *buf, | 268 char *buf, |
252 unsigned int buf_size, | 269 unsigned int buf_size, |
253 unsigned int *buf_consumed, /* May be NULL */ | 270 unsigned int *buf_consumed, /* May be NULL */ |
254 hb_font_t *font, /* May be NULL */ | 271 hb_font_t *font, /* May be NULL */ |
255 hb_buffer_serialize_format_t format, | 272 hb_buffer_serialize_format_t format, |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 * @buf: (array length=buf_len): | 359 * @buf: (array length=buf_len): |
343 * @buf_len: | 360 * @buf_len: |
344 * @end_ptr: (out): | 361 * @end_ptr: (out): |
345 * @font: | 362 * @font: |
346 * @format: | 363 * @format: |
347 * | 364 * |
348 * | 365 * |
349 * | 366 * |
350 * Return value: | 367 * Return value: |
351 * | 368 * |
352 * Since: 1.0 | 369 * Since: 0.9.2 |
353 **/ | 370 **/ |
354 hb_bool_t | 371 hb_bool_t |
355 hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, | 372 hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, |
356 const char *buf, | 373 const char *buf, |
357 int buf_len, /* -1 means nul-terminated */ | 374 int buf_len, /* -1 means nul-terminated */ |
358 const char **end_ptr, /* May be NULL */ | 375 const char **end_ptr, /* May be NULL */ |
359 hb_font_t *font, /* May be NULL */ | 376 hb_font_t *font, /* May be NULL */ |
360 hb_buffer_serialize_format_t format) | 377 hb_buffer_serialize_format_t format) |
361 { | 378 { |
362 const char *end; | 379 const char *end; |
(...skipping 29 matching lines...) Expand all Loading... |
392 return _hb_buffer_deserialize_glyphs_json (buffer, | 409 return _hb_buffer_deserialize_glyphs_json (buffer, |
393 buf, buf_len, end_ptr, | 410 buf, buf_len, end_ptr, |
394 font); | 411 font); |
395 | 412 |
396 default: | 413 default: |
397 case HB_BUFFER_SERIALIZE_FORMAT_INVALID: | 414 case HB_BUFFER_SERIALIZE_FORMAT_INVALID: |
398 return false; | 415 return false; |
399 | 416 |
400 } | 417 } |
401 } | 418 } |
OLD | NEW |