1a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod/*
26bd9b479b8b2befbb0847282e93beade197c8038Behdad Esfahbod * Copyright © 2012  Google, Inc.
3a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod *
4a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod *  This is part of HarfBuzz, a text shaping library.
5a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod *
6a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * Permission is hereby granted, without written agreement and without
7a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * license or royalty fees, to use, copy, modify, and distribute this
8a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * software and its documentation for any purpose, provided that the
9a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * above copyright notice and the following two paragraphs appear in
10a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * all copies of this software.
11a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod *
12a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * DAMAGE.
17a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod *
18a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod *
246bd9b479b8b2befbb0847282e93beade197c8038Behdad Esfahbod * Google Author(s): Behdad Esfahbod
25a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod */
26a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod
27027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod#ifndef HB_SHAPE_PLAN_PRIVATE_HH
28027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod#define HB_SHAPE_PLAN_PRIVATE_HH
29d1c9eb458c843215da8df84b596bfae51fee135bBehdad Esfahbod
306bd9b479b8b2befbb0847282e93beade197c8038Behdad Esfahbod#include "hb-private.hh"
31f30641038ba96e83950729b1bd9d86d2e98e46c5Behdad Esfahbod#include "hb-object-private.hh"
32027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod#include "hb-shaper-private.hh"
33acdba3f90b232fc12fcb200dca2584481b339118Behdad Esfahbod
34a5a72e004bb7123445c2c3a94352d358fc80d904Behdad Esfahbod
35027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbodstruct hb_shape_plan_t
36027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod{
37027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod  hb_object_header_t header;
38027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod  ASSERT_POD ();
39acdba3f90b232fc12fcb200dca2584481b339118Behdad Esfahbod
40e9eb9503e97044222f843daacfa47e26e51312b7Behdad Esfahbod  hb_bool_t default_shaper_list;
41f47b9219546edcfdeb3991ee27f6d9ba455c3e08Behdad Esfahbod  hb_face_t *face_unsafe; /* We don't carry a reference to face. */
425b95c148cc485f79fd7018bc4520b4cb5f728a18Behdad Esfahbod  hb_segment_properties_t props;
435b95c148cc485f79fd7018bc4520b4cb5f728a18Behdad Esfahbod
44c5b668fb9239c912d2448280a7176e331ebc9181Behdad Esfahbod  hb_shape_func_t *shaper_func;
45f9edd5d56bd219625f5b16b23eac53b4c4a8b194Behdad Esfahbod  const char *shaper_name;
46027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod
47ca8d96c8ba33ce581684cbc07936a3696b6c83d9Jonathan Kew  hb_feature_t *user_features;
48ca8d96c8ba33ce581684cbc07936a3696b6c83d9Jonathan Kew  unsigned int num_user_features;
49ca8d96c8ba33ce581684cbc07936a3696b6c83d9Jonathan Kew
50027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod  struct hb_shaper_data_t shaper_data;
51027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod};
52027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod
535b95c148cc485f79fd7018bc4520b4cb5f728a18Behdad Esfahbod#define HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS \
545b95c148cc485f79fd7018bc4520b4cb5f728a18Behdad Esfahbod	, const hb_feature_t            *user_features \
555b95c148cc485f79fd7018bc4520b4cb5f728a18Behdad Esfahbod	, unsigned int                   num_user_features
56027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod#define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_PROTOTYPE(shaper, shape_plan);
57027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod#include "hb-shaper-list.hh"
58027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod#undef HB_SHAPER_IMPLEMENT
595b95c148cc485f79fd7018bc4520b4cb5f728a18Behdad Esfahbod#undef HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS
60027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod
61027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod
62027857d0412477fb4427dcb8a8c45287c272e143Behdad Esfahbod#endif /* HB_SHAPE_PLAN_PRIVATE_HH */
63