| 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 |