hb-ot-shape-complex-private.hh revision 62879eebd9965179af8602ba29ac0a64a739b757
149baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod/* 249baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * Copyright (C) 2010 Google, Inc. 349baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * 449baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * This is part of HarfBuzz, a text shaping library. 549baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * 649baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * Permission is hereby granted, without written agreement and without 749baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * license or royalty fees, to use, copy, modify, and distribute this 849baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * software and its documentation for any purpose, provided that the 949baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * above copyright notice and the following two paragraphs appear in 1049baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * all copies of this software. 1149baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * 1249baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 1349baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 1449baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 1549baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 1649baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * DAMAGE. 1749baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * 1849baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 1949baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 2049baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 2149baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 2249baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 2349baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * 2449baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * Google Author(s): Behdad Esfahbod 2549baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod */ 2649baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 2749baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod#ifndef HB_OT_SHAPE_COMPLEX_PRIVATE_HH 2849baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod#define HB_OT_SHAPE_COMPLEX_PRIVATE_HH 2949baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 3049baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod#include "hb-private.h" 3149baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 3213403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod#include "hb-ot-shape-private.hh" 3349baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 3449baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad EsfahbodHB_BEGIN_DECLS 3549baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 3649baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 3749baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbodstatic inline hb_ot_complex_shaper_t 3849baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbodhb_ot_shape_complex_categorize (const hb_segment_properties_t *props) 3949baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod{ 4062879eebd9965179af8602ba29ac0a64a739b757Behdad Esfahbod switch ((int) props->script) 4162879eebd9965179af8602ba29ac0a64a739b757Behdad Esfahbod { 4249baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod case HB_SCRIPT_ARABIC: 4349baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod case HB_SCRIPT_NKO: 4449baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod case HB_SCRIPT_SYRIAC: 45b0e7378fa9a4fc6fc74d9b3c27d927602eaacc5bBehdad Esfahbod case HB_SCRIPT_MANDAIC: 46d86a5b3c5752abcc791724035ba4115958e6b5e2Behdad Esfahbod case HB_SCRIPT_MONGOLIAN: 4749baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod return hb_ot_complex_shaper_arabic; 4849baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 4949baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod default: 5049baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod return hb_ot_complex_shaper_none; 5149baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod } 5249baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod} 5349baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 5449baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 5549baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 5649baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod/* 5749baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * collect_features() 5849baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod * 5913403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod * Called during shape_plan(). 6013403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod * 6113403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod * Shapers should use plan->map to add their features. 6249baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod */ 6349baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 6449baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad EsfahbodHB_INTERNAL void _hb_ot_shape_complex_collect_features_arabic (hb_ot_shape_plan_t *plan, const hb_segment_properties_t *props); 6549baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 6649baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbodstatic inline void 6749baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbodhb_ot_shape_complex_collect_features (hb_ot_shape_plan_t *plan, 6849baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod const hb_segment_properties_t *props) 6949baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod{ 7049baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod switch (plan->shaper) { 7149baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod case hb_ot_complex_shaper_arabic: _hb_ot_shape_complex_collect_features_arabic (plan, props); return; 7249baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod case hb_ot_complex_shaper_none: default: return; 7349baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod } 7449baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod} 7549baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 7649baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 7713403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod/* setup_masks() 7813403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod * 7913403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod * Called during shape_execute(). 8013403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod * 8113403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod * Shapers should use c->plan.map to get feature masks and set on buffer. 8213403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod */ 8313403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod 8413403bc67a01e0d4908fb964093fd02ddd11c580Behdad EsfahbodHB_INTERNAL void _hb_ot_shape_complex_setup_masks_arabic (hb_ot_shape_context_t *c); 8513403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod 8613403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbodstatic inline void 8713403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbodhb_ot_shape_complex_setup_masks (hb_ot_shape_context_t *c) 8813403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod{ 8913403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod switch (c->plan->shaper) { 9013403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod case hb_ot_complex_shaper_arabic: _hb_ot_shape_complex_setup_masks_arabic (c); return; 9113403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod case hb_ot_complex_shaper_none: default: return; 9213403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod } 9313403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod} 9413403bc67a01e0d4908fb964093fd02ddd11c580Behdad Esfahbod 9549baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 9649baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad EsfahbodHB_END_DECLS 9749baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod 9849baa1f69efb0e3c62e45bd59dd88459a84bf390Behdad Esfahbod#endif /* HB_OT_SHAPE_COMPLEX_PRIVATE_HH */ 99