1*2d1272b8SAndroid Build Coastguard Worker /* 2*2d1272b8SAndroid Build Coastguard Worker * Copyright © 2007,2008,2009 Red Hat, Inc. 3*2d1272b8SAndroid Build Coastguard Worker * Copyright © 2012,2013 Google, Inc. 4*2d1272b8SAndroid Build Coastguard Worker * 5*2d1272b8SAndroid Build Coastguard Worker * This is part of HarfBuzz, a text shaping library. 6*2d1272b8SAndroid Build Coastguard Worker * 7*2d1272b8SAndroid Build Coastguard Worker * Permission is hereby granted, without written agreement and without 8*2d1272b8SAndroid Build Coastguard Worker * license or royalty fees, to use, copy, modify, and distribute this 9*2d1272b8SAndroid Build Coastguard Worker * software and its documentation for any purpose, provided that the 10*2d1272b8SAndroid Build Coastguard Worker * above copyright notice and the following two paragraphs appear in 11*2d1272b8SAndroid Build Coastguard Worker * all copies of this software. 12*2d1272b8SAndroid Build Coastguard Worker * 13*2d1272b8SAndroid Build Coastguard Worker * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 14*2d1272b8SAndroid Build Coastguard Worker * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 15*2d1272b8SAndroid Build Coastguard Worker * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 16*2d1272b8SAndroid Build Coastguard Worker * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 17*2d1272b8SAndroid Build Coastguard Worker * DAMAGE. 18*2d1272b8SAndroid Build Coastguard Worker * 19*2d1272b8SAndroid Build Coastguard Worker * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 20*2d1272b8SAndroid Build Coastguard Worker * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 21*2d1272b8SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 22*2d1272b8SAndroid Build Coastguard Worker * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 23*2d1272b8SAndroid Build Coastguard Worker * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 24*2d1272b8SAndroid Build Coastguard Worker * 25*2d1272b8SAndroid Build Coastguard Worker * Red Hat Author(s): Behdad Esfahbod 26*2d1272b8SAndroid Build Coastguard Worker * Google Author(s): Behdad Esfahbod 27*2d1272b8SAndroid Build Coastguard Worker */ 28*2d1272b8SAndroid Build Coastguard Worker 29*2d1272b8SAndroid Build Coastguard Worker #ifndef HB_OT_FACE_HH 30*2d1272b8SAndroid Build Coastguard Worker #define HB_OT_FACE_HH 31*2d1272b8SAndroid Build Coastguard Worker 32*2d1272b8SAndroid Build Coastguard Worker #include "hb.hh" 33*2d1272b8SAndroid Build Coastguard Worker 34*2d1272b8SAndroid Build Coastguard Worker #include "hb-machinery.hh" 35*2d1272b8SAndroid Build Coastguard Worker 36*2d1272b8SAndroid Build Coastguard Worker 37*2d1272b8SAndroid Build Coastguard Worker /* 38*2d1272b8SAndroid Build Coastguard Worker * hb_ot_face_t 39*2d1272b8SAndroid Build Coastguard Worker */ 40*2d1272b8SAndroid Build Coastguard Worker 41*2d1272b8SAndroid Build Coastguard Worker /* Declare tables. */ 42*2d1272b8SAndroid Build Coastguard Worker #define HB_OT_TABLE(Namespace, Type) namespace Namespace { struct Type; } 43*2d1272b8SAndroid Build Coastguard Worker #define HB_OT_ACCELERATOR(Namespace, Type) HB_OT_TABLE (Namespace, Type##_accelerator_t) 44*2d1272b8SAndroid Build Coastguard Worker #include "hb-ot-face-table-list.hh" 45*2d1272b8SAndroid Build Coastguard Worker #undef HB_OT_ACCELERATOR 46*2d1272b8SAndroid Build Coastguard Worker #undef HB_OT_TABLE 47*2d1272b8SAndroid Build Coastguard Worker 48*2d1272b8SAndroid Build Coastguard Worker struct hb_ot_face_t 49*2d1272b8SAndroid Build Coastguard Worker { 50*2d1272b8SAndroid Build Coastguard Worker HB_INTERNAL void init0 (hb_face_t *face); 51*2d1272b8SAndroid Build Coastguard Worker HB_INTERNAL void fini (); 52*2d1272b8SAndroid Build Coastguard Worker 53*2d1272b8SAndroid Build Coastguard Worker #define HB_OT_TABLE_ORDER(Namespace, Type) \ 54*2d1272b8SAndroid Build Coastguard Worker HB_PASTE (ORDER_, HB_PASTE (Namespace, HB_PASTE (_, Type))) 55*2d1272b8SAndroid Build Coastguard Worker enum order_t 56*2d1272b8SAndroid Build Coastguard Worker { 57*2d1272b8SAndroid Build Coastguard Worker ORDER_ZERO, 58*2d1272b8SAndroid Build Coastguard Worker #define HB_OT_TABLE(Namespace, Type) HB_OT_TABLE_ORDER (Namespace, Type), 59*2d1272b8SAndroid Build Coastguard Worker #include "hb-ot-face-table-list.hh" 60*2d1272b8SAndroid Build Coastguard Worker #undef HB_OT_TABLE 61*2d1272b8SAndroid Build Coastguard Worker }; 62*2d1272b8SAndroid Build Coastguard Worker 63*2d1272b8SAndroid Build Coastguard Worker hb_face_t *face; /* MUST be JUST before the lazy loaders. */ 64*2d1272b8SAndroid Build Coastguard Worker #define HB_OT_TABLE(Namespace, Type) \ 65*2d1272b8SAndroid Build Coastguard Worker hb_table_lazy_loader_t<Namespace::Type, HB_OT_TABLE_ORDER (Namespace, Type)> Type; 66*2d1272b8SAndroid Build Coastguard Worker #define HB_OT_CORE_TABLE(Namespace, Type) \ 67*2d1272b8SAndroid Build Coastguard Worker hb_table_lazy_loader_t<Namespace::Type, HB_OT_TABLE_ORDER (Namespace, Type), true> Type; 68*2d1272b8SAndroid Build Coastguard Worker #define HB_OT_ACCELERATOR(Namespace, Type) \ 69*2d1272b8SAndroid Build Coastguard Worker hb_face_lazy_loader_t<Namespace::Type##_accelerator_t, HB_OT_TABLE_ORDER (Namespace, Type)> Type; 70*2d1272b8SAndroid Build Coastguard Worker #include "hb-ot-face-table-list.hh" 71*2d1272b8SAndroid Build Coastguard Worker #undef HB_OT_ACCELERATOR 72*2d1272b8SAndroid Build Coastguard Worker #undef HB_OT_CORE_TABLE 73*2d1272b8SAndroid Build Coastguard Worker #undef HB_OT_TABLE 74*2d1272b8SAndroid Build Coastguard Worker }; 75*2d1272b8SAndroid Build Coastguard Worker 76*2d1272b8SAndroid Build Coastguard Worker 77*2d1272b8SAndroid Build Coastguard Worker #endif /* HB_OT_FACE_HH */ 78