1 2 // Copyright 2019 - 2021 Michael D. Parker 3 // Distributed under the Boost Software License, Version 1.0. 4 // (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt) 6 7 module bindbc.freetype.bind.ftgxval; 8 9 import bindbc.freetype.config; 10 import bindbc.freetype.bind.freetype, 11 bindbc.freetype.bind.fttypes; 12 13 enum { 14 FT_VALIDATE_feat_INDEX = 0, 15 FT_VALIDATE_mort_INDEX = 1, 16 FT_VALIDATE_morx_INDEX = 2, 17 FT_VALIDATE_bsln_INDEX = 3, 18 FT_VALIDATE_just_INDEX = 4, 19 FT_VALIDATE_kern_INDEX = 5, 20 FT_VALIDATE_opbd_INDEX = 6, 21 FT_VALIDATE_trak_INDEX = 7, 22 FT_VALIDATE_prop_INDEX = 8, 23 FT_VALIDATE_lcar_INDEX = 9, 24 FT_VALIDATE_GX_LAST_INDEX = FT_VALIDATE_lcar_INDEX, 25 FT_VALIDATE_GX_LENGTH = FT_VALIDATE_GX_LAST_INDEX + 1, 26 27 FT_VALIDATE_GX_START = 0x4000, 28 FT_VALIDATE_feat = FT_VALIDATE_GX_START << FT_VALIDATE_feat_INDEX, 29 FT_VALIDATE_mort = FT_VALIDATE_GX_START << FT_VALIDATE_mort_INDEX, 30 FT_VALIDATE_morx = FT_VALIDATE_GX_START << FT_VALIDATE_morx_INDEX, 31 FT_VALIDATE_bsln = FT_VALIDATE_GX_START << FT_VALIDATE_bsln_INDEX, 32 FT_VALIDATE_just = FT_VALIDATE_GX_START << FT_VALIDATE_just_INDEX, 33 FT_VALIDATE_kern = FT_VALIDATE_GX_START << FT_VALIDATE_kern_INDEX, 34 FT_VALIDATE_opbd = FT_VALIDATE_GX_START << FT_VALIDATE_opbd_INDEX, 35 FT_VALIDATE_trak = FT_VALIDATE_GX_START << FT_VALIDATE_trak_INDEX, 36 FT_VALIDATE_prop = FT_VALIDATE_GX_START << FT_VALIDATE_prop_INDEX, 37 FT_VALIDATE_lcar = FT_VALIDATE_GX_START << FT_VALIDATE_lcar_INDEX, 38 39 FT_VALIDATE_GX = (FT_VALIDATE_feat | 40 FT_VALIDATE_mort | 41 FT_VALIDATE_morx | 42 FT_VALIDATE_bsln | 43 FT_VALIDATE_just | 44 FT_VALIDATE_kern | 45 FT_VALIDATE_opbd | 46 FT_VALIDATE_trak | 47 FT_VALIDATE_prop | 48 FT_VALIDATE_lcar), 49 50 FT_VALIDATE_MS = FT_VALIDATE_GX_START << 0, 51 FT_VALIDATE_APPLE = FT_VALIDATE_GX_START << 1, 52 FT_VALIDATE_CKERN = FT_VALIDATE_MS | FT_VALIDATE_APPLE, 53 } 54 55 static if(staticBinding) { 56 extern(C) @nogc nothrow { 57 FT_Error FT_TrueTypeGX_Validate(FT_Face face, FT_UInt validation_flags, FT_Bytes* tables, FT_UInt table_length); 58 void FT_TrueTypeGX_Free(FT_Face face, FT_Bytes table); 59 FT_Error FT_ClassicKern_Validate(FT_Face face, FT_UInt validation_flags, FT_Bytes* ckern_table); 60 void FT_ClassicKern_Free(FT_Face face, FT_Bytes table); 61 } 62 } 63 else { 64 extern(C) @nogc nothrow { 65 alias pFT_TrueTypeGX_Validate = FT_Error function(FT_Face face, FT_UInt validation_flags, FT_Bytes* tables, FT_UInt table_length); 66 alias pFT_TrueTypeGX_Free = void function(FT_Face face, FT_Bytes table); 67 alias pFT_ClassicKern_Validate = FT_Error function(FT_Face face, FT_UInt validation_flags, FT_Bytes* ckern_table); 68 alias pFT_ClassicKern_Free = void function(FT_Face face, FT_Bytes table); 69 } 70 71 __gshared { 72 pFT_TrueTypeGX_Validate FT_TrueTypeGX_Validate; 73 pFT_TrueTypeGX_Free FT_TrueTypeGX_Free; 74 pFT_ClassicKern_Validate FT_ClassicKern_Validate; 75 pFT_ClassicKern_Free FT_ClassicKern_Free; 76 } 77 }