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