| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright © 2007,2008,2009 Red Hat, Inc. | 2 * Copyright © 2007,2008,2009 Red Hat, Inc. |
| 3 * Copyright © 2011,2012 Google, Inc. | 3 * Copyright © 2011,2012 Google, Inc. |
| 4 * | 4 * |
| 5 * This is part of HarfBuzz, a text shaping library. | 5 * This is part of HarfBuzz, a text shaping library. |
| 6 * | 6 * |
| 7 * Permission is hereby granted, without written agreement and without | 7 * Permission is hereby granted, without written agreement and without |
| 8 * license or royalty fees, to use, copy, modify, and distribute this | 8 * license or royalty fees, to use, copy, modify, and distribute this |
| 9 * software and its documentation for any purpose, provided that the | 9 * software and its documentation for any purpose, provided that the |
| 10 * above copyright notice and the following two paragraphs appear in | 10 * above copyright notice and the following two paragraphs appear in |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 | 88 |
| 89 /* hb_tag_t */ | 89 /* hb_tag_t */ |
| 90 | 90 |
| 91 typedef uint32_t hb_tag_t; | 91 typedef uint32_t hb_tag_t; |
| 92 | 92 |
| 93 #define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint8_t)(c1))<<24)|(((uint8_t)(c2))<<
16)|(((uint8_t)(c3))<<8)|((uint8_t)(c4)))) | 93 #define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint8_t)(c1))<<24)|(((uint8_t)(c2))<<
16)|(((uint8_t)(c3))<<8)|((uint8_t)(c4)))) |
| 94 #define HB_UNTAG(tag) ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_
t)((tag)>>8)), ((uint8_t)(tag)) | 94 #define HB_UNTAG(tag) ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_
t)((tag)>>8)), ((uint8_t)(tag)) |
| 95 | 95 |
| 96 #define HB_TAG_NONE HB_TAG(0,0,0,0) | 96 #define HB_TAG_NONE HB_TAG(0,0,0,0) |
| 97 #define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff) | 97 #define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff) |
| 98 #define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff) |
| 98 | 99 |
| 99 /* len=-1 means str is NUL-terminated. */ | 100 /* len=-1 means str is NUL-terminated. */ |
| 100 hb_tag_t | 101 hb_tag_t |
| 101 hb_tag_from_string (const char *str, int len); | 102 hb_tag_from_string (const char *str, int len); |
| 102 | 103 |
| 103 /* buf should have 4 bytes. */ | 104 /* buf should have 4 bytes. */ |
| 104 void | 105 void |
| 105 hb_tag_to_string (hb_tag_t tag, char *buf); | 106 hb_tag_to_string (hb_tag_t tag, char *buf); |
| 106 | 107 |
| 107 | 108 |
| 108 /* hb_direction_t */ | 109 /* hb_direction_t */ |
| 109 | 110 |
| 110 typedef enum { | 111 typedef enum { |
| 111 HB_DIRECTION_INVALID = 0, | 112 HB_DIRECTION_INVALID = 0, |
| 112 HB_DIRECTION_LTR = 4, | 113 HB_DIRECTION_LTR = 4, |
| 113 HB_DIRECTION_RTL, | 114 HB_DIRECTION_RTL, |
| 114 HB_DIRECTION_TTB, | 115 HB_DIRECTION_TTB, |
| 115 HB_DIRECTION_BTT | 116 HB_DIRECTION_BTT |
| 116 } hb_direction_t; | 117 } hb_direction_t; |
| 117 | 118 |
| 118 /* len=-1 means str is NUL-terminated */ | 119 /* len=-1 means str is NUL-terminated */ |
| 119 hb_direction_t | 120 hb_direction_t |
| 120 hb_direction_from_string (const char *str, int len); | 121 hb_direction_from_string (const char *str, int len); |
| 121 | 122 |
| 122 const char * | 123 const char * |
| 123 hb_direction_to_string (hb_direction_t direction); | 124 hb_direction_to_string (hb_direction_t direction); |
| 124 | 125 |
| 126 #define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4) |
| 127 /* Direction must be valid for the following */ |
| 125 #define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4) | 128 #define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4) |
| 126 #define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6) | 129 #define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6) |
| 127 #define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4) | 130 #define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4) |
| 128 #define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5) | 131 #define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5) |
| 129 #define HB_DIRECTION_IS_VALID(dir)» ((((unsigned int) (dir)) & ~3U) == 4) | 132 #define HB_DIRECTION_REVERSE(dir)» ((hb_direction_t) (((unsigned int) (dir)
) ^ 1)) |
| 130 #define HB_DIRECTION_REVERSE(dir)» ((hb_direction_t) (((unsigned int) (dir)
) ^ 1)) /* Direction must be valid */ | |
| 131 | 133 |
| 132 | 134 |
| 133 /* hb_language_t */ | 135 /* hb_language_t */ |
| 134 | 136 |
| 135 typedef const struct hb_language_impl_t *hb_language_t; | 137 typedef const struct hb_language_impl_t *hb_language_t; |
| 136 | 138 |
| 137 /* len=-1 means str is NUL-terminated */ | 139 /* len=-1 means str is NUL-terminated */ |
| 138 hb_language_t | 140 hb_language_t |
| 139 hb_language_from_string (const char *str, int len); | 141 hb_language_from_string (const char *str, int len); |
| 140 | 142 |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 /*7.0*/ HB_SCRIPT_OLD_PERMIC = HB_TAG ('P','e','r','m'), | 290 /*7.0*/ HB_SCRIPT_OLD_PERMIC = HB_TAG ('P','e','r','m'), |
| 289 /*7.0*/ HB_SCRIPT_PAHAWH_HMONG = HB_TAG ('H','m','n','g'), | 291 /*7.0*/ HB_SCRIPT_PAHAWH_HMONG = HB_TAG ('H','m','n','g'), |
| 290 /*7.0*/ HB_SCRIPT_PALMYRENE = HB_TAG ('P','a','l','m'), | 292 /*7.0*/ HB_SCRIPT_PALMYRENE = HB_TAG ('P','a','l','m'), |
| 291 /*7.0*/ HB_SCRIPT_PAU_CIN_HAU = HB_TAG ('P','a','u','c'), | 293 /*7.0*/ HB_SCRIPT_PAU_CIN_HAU = HB_TAG ('P','a','u','c'), |
| 292 /*7.0*/ HB_SCRIPT_PSALTER_PAHLAVI = HB_TAG ('P','h','l','p'), | 294 /*7.0*/ HB_SCRIPT_PSALTER_PAHLAVI = HB_TAG ('P','h','l','p'), |
| 293 /*7.0*/ HB_SCRIPT_SIDDHAM = HB_TAG ('S','i','d','d'), | 295 /*7.0*/ HB_SCRIPT_SIDDHAM = HB_TAG ('S','i','d','d'), |
| 294 /*7.0*/ HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'), | 296 /*7.0*/ HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'), |
| 295 /*7.0*/ HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'), | 297 /*7.0*/ HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'), |
| 296 | 298 |
| 297 /* No script set. */ | 299 /* No script set. */ |
| 298 /*---*/ HB_SCRIPT_INVALID» » » = HB_TAG_NONE, | 300 HB_SCRIPT_INVALID» » » » = HB_TAG_NONE, |
| 299 | 301 |
| 300 /* Dummy value to ensure any hb_tag_t value can be passed/stored as hb_script_
t | 302 /* Dummy values to ensure any hb_tag_t value can be passed/stored as hb_script
_t |
| 301 * without risking undefined behavior. */ | 303 * without risking undefined behavior. Include both a signed and unsigned max
, |
| 302 /*---*/ _HB_SCRIPT_MAX_VALUE» » » = HB_TAG_MAX | 304 * since technically enums are int, and indeed, hb_script_t ends up being sign
ed. |
| 305 * See this thread for technicalities: |
| 306 * |
| 307 * http://lists.freedesktop.org/archives/harfbuzz/2014-March/004150.html |
| 308 */ |
| 309 _HB_SCRIPT_MAX_VALUE» » » » = HB_TAG_MAX, /*< skip >*/ |
| 310 _HB_SCRIPT_MAX_VALUE_SIGNED» » » = HB_TAG_MAX_SIGNED /*< skip >*/ |
| 303 | 311 |
| 304 } hb_script_t; | 312 } hb_script_t; |
| 305 | 313 |
| 306 | 314 |
| 307 /* Script functions */ | 315 /* Script functions */ |
| 308 | 316 |
| 309 hb_script_t | 317 hb_script_t |
| 310 hb_script_from_iso15924_tag (hb_tag_t tag); | 318 hb_script_from_iso15924_tag (hb_tag_t tag); |
| 311 | 319 |
| 312 /* suger for tag_from_string() then script_from_iso15924_tag */ | 320 /* sugar for tag_from_string() then script_from_iso15924_tag */ |
| 313 /* len=-1 means s is NUL-terminated */ | 321 /* len=-1 means s is NUL-terminated */ |
| 314 hb_script_t | 322 hb_script_t |
| 315 hb_script_from_string (const char *s, int len); | 323 hb_script_from_string (const char *s, int len); |
| 316 | 324 |
| 317 hb_tag_t | 325 hb_tag_t |
| 318 hb_script_to_iso15924_tag (hb_script_t script); | 326 hb_script_to_iso15924_tag (hb_script_t script); |
| 319 | 327 |
| 320 hb_direction_t | 328 hb_direction_t |
| 321 hb_script_get_horizontal_direction (hb_script_t script); | 329 hb_script_get_horizontal_direction (hb_script_t script); |
| 322 | 330 |
| 323 | 331 |
| 324 /* User data */ | 332 /* User data */ |
| 325 | 333 |
| 326 typedef struct hb_user_data_key_t { | 334 typedef struct hb_user_data_key_t { |
| 327 /*< private >*/ | 335 /*< private >*/ |
| 328 char unused; | 336 char unused; |
| 329 } hb_user_data_key_t; | 337 } hb_user_data_key_t; |
| 330 | 338 |
| 331 typedef void (*hb_destroy_func_t) (void *user_data); | 339 typedef void (*hb_destroy_func_t) (void *user_data); |
| 332 | 340 |
| 333 | 341 |
| 334 HB_END_DECLS | 342 HB_END_DECLS |
| 335 | 343 |
| 336 #endif /* HB_COMMON_H */ | 344 #endif /* HB_COMMON_H */ |
| OLD | NEW |