| /* |
| * Copyright (C) 1998-2004 David Turner and Werner Lemberg |
| * Copyright (C) 2006 Behdad Esfahbod |
| * |
| * This is part of HarfBuzz, an OpenType Layout engine library. |
| * |
| * Permission is hereby granted, without written agreement and without |
| * license or royalty fees, to use, copy, modify, and distribute this |
| * software and its documentation for any purpose, provided that the |
| * above copyright notice and the following two paragraphs appear in |
| * all copies of this software. |
| * |
| * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR |
| * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES |
| * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN |
| * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH |
| * DAMAGE. |
| * |
| * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
| * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
| * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS |
| * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO |
| * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
| */ |
| |
| #ifndef HARFBUZZ_GDEF_PRIVATE_H |
| #define HARFBUZZ_GDEF_PRIVATE_H |
| |
| #include "harfbuzz-impl.h" |
| #include "harfbuzz-stream-private.h" |
| #include "harfbuzz-buffer-private.h" |
| #include "harfbuzz-gdef.h" |
| |
| HB_BEGIN_HEADER |
| |
| |
| #ifdef HB_USE_PACKED_STRUCTS |
| #pragma pack(push, 1) |
| #endif |
| |
| /* Attachment related structures */ |
| |
| struct HB_AttachPoint_ |
| { |
| HB_UShort* PointIndex; /* array of contour points */ |
| HB_UShort PointCount; /* size of the PointIndex array */ |
| }; |
| |
| /* Ligature Caret related structures */ |
| |
| struct HB_CaretValueFormat1_ |
| { |
| HB_Short Coordinate; /* x or y value (in design units) */ |
| }; |
| |
| typedef struct HB_CaretValueFormat1_ HB_CaretValueFormat1; |
| |
| |
| struct HB_CaretValueFormat2_ |
| { |
| HB_UShort CaretValuePoint; /* contour point index on glyph */ |
| }; |
| |
| typedef struct HB_CaretValueFormat2_ HB_CaretValueFormat2; |
| |
| |
| struct HB_CaretValueFormat3_ |
| { |
| HB_Device* Device; /* Device table for x or y value */ |
| HB_Short Coordinate; /* x or y value (in design units) */ |
| }; |
| |
| typedef struct HB_CaretValueFormat3_ HB_CaretValueFormat3; |
| |
| |
| #ifdef HB_SUPPORT_MULTIPLE_MASTER |
| struct HB_CaretValueFormat4_ |
| { |
| HB_UShort IdCaretValue; /* metric ID */ |
| }; |
| |
| typedef struct HB_CaretValueFormat4_ HB_CaretValueFormat4; |
| #endif |
| |
| |
| struct HB_CaretValue_ |
| { |
| union |
| { |
| HB_CaretValueFormat1 cvf1; |
| HB_CaretValueFormat2 cvf2; |
| HB_CaretValueFormat3 cvf3; |
| #ifdef HB_SUPPORT_MULTIPLE_MASTER |
| HB_CaretValueFormat4 cvf4; |
| #endif |
| } cvf; |
| |
| HB_Byte CaretValueFormat; /* 1, 2, 3, or 4 */ |
| }; |
| |
| typedef struct HB_CaretValue_ HB_CaretValue; |
| |
| |
| struct HB_LigGlyph_ |
| { |
| HB_CaretValue* CaretValue; /* array of caret values */ |
| HB_UShort CaretCount; /* number of caret values */ |
| HB_Bool loaded; |
| }; |
| |
| |
| HB_INTERNAL HB_Error |
| _HB_GDEF_Add_Glyph_Property( HB_GDEFHeader* gdef, |
| HB_UShort glyphID, |
| HB_UShort property ); |
| |
| HB_INTERNAL HB_Error |
| _HB_GDEF_Check_Property( HB_GDEFHeader* gdef, |
| HB_GlyphItem item, |
| HB_UShort flags, |
| HB_UShort* property ); |
| |
| HB_INTERNAL HB_Error |
| _HB_GDEF_LoadMarkAttachClassDef_From_LookupFlags( HB_GDEFHeader* gdef, |
| HB_Stream input, |
| HB_Lookup* lo, |
| HB_UShort num_lookups ); |
| |
| #ifdef HB_USE_PACKED_STRUCTS |
| #pragma pack(pop) |
| #endif |
| |
| HB_END_HEADER |
| |
| #endif /* HARFBUZZ_GDEF_PRIVATE_H */ |