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 }