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