hb-ot-shape-private.hh revision 208f70f0553d73d2908b21b9552298029482a8b9
18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright © 2010 Google, Inc. 304949598a23f501be6eec21697465fd46a28840aDmitry Shmidt * 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * This is part of HarfBuzz, a text shaping library. 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * Permission is hereby granted, without written agreement and without 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * license or royalty fees, to use, copy, modify, and distribute this 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * software and its documentation for any purpose, provided that the 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * above copyright notice and the following two paragraphs appear in 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * all copies of this software. 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 1561d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * DAMAGE. 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Google Author(s): Behdad Esfahbod 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef HB_OT_SHAPE_PRIVATE_HH 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HB_OT_SHAPE_PRIVATE_HH 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "hb-private.hh" 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "hb-ot-map-private.hh" 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "hb-ot-shape-complex-private.hh" 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct hb_ot_shape_plan_t 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt hb_ot_map_t map; 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const hb_ot_complex_shaper_t *shaper; 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtinline void 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt_hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode) 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt info->unicode_props0() = ((unsigned int) unicode->general_category (info->codepoint)) | 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt (unicode->is_zero_width (info->codepoint) ? 0x80 : 0); 48f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt info->unicode_props1() = unicode->modified_combining_class (info->codepoint); 49f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt} 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtinline hb_unicode_general_category_t 528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt_hb_glyph_info_get_general_category (const hb_glyph_info_t *info) 5361d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt{ 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return (hb_unicode_general_category_t) (info->unicode_props0() & 0x7F); 55a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt} 56a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 57cce06667447b5aec83452adb0c15100ada531095Dmitry Shmidtinline unsigned int 58cce06667447b5aec83452adb0c15100ada531095Dmitry Shmidt_hb_glyph_info_get_modified_combining_class (const hb_glyph_info_t *info) 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return info->unicode_props1(); 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtinline hb_bool_t 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt_hb_glyph_info_is_zero_width (const hb_glyph_info_t *info) 658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt return !!(info->unicode_props0() & 0x80); 678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* HB_OT_SHAPE_PRIVATE_HH */ 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt