1 
2 //          Copyright Michael D. Parker 2018.
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.bind.freetype,
10        bindbc.freetype.bind.fttypes;
11 
12 enum {
13     FT_VALIDATE_feat_INDEX = 0,
14     FT_VALIDATE_mort_INDEX = 1,
15     FT_VALIDATE_morx_INDEX = 2,
16     FT_VALIDATE_bsln_INDEX = 3,
17     FT_VALIDATE_just_INDEX = 4,
18     FT_VALIDATE_kern_INDEX = 5,
19     FT_VALIDATE_opbd_INDEX = 6,
20     FT_VALIDATE_trak_INDEX = 7,
21     FT_VALIDATE_prop_INDEX = 8,
22     FT_VALIDATE_lcar_INDEX = 9,
23     FT_VALIDATE_GX_LAST_INDEX = FT_VALIDATE_lcar_INDEX,
24     FT_VALIDATE_GX_LENGTH = FT_VALIDATE_GX_LAST_INDEX + 1,
25 
26     FT_VALIDATE_GX_START = 0x4000,
27     FT_VALIDATE_feat = FT_VALIDATE_GX_START << FT_VALIDATE_feat_INDEX,
28     FT_VALIDATE_mort = FT_VALIDATE_GX_START << FT_VALIDATE_mort_INDEX,
29     FT_VALIDATE_morx = FT_VALIDATE_GX_START << FT_VALIDATE_morx_INDEX,
30     FT_VALIDATE_bsln = FT_VALIDATE_GX_START << FT_VALIDATE_bsln_INDEX,
31     FT_VALIDATE_just = FT_VALIDATE_GX_START << FT_VALIDATE_just_INDEX,
32     FT_VALIDATE_kern = FT_VALIDATE_GX_START << FT_VALIDATE_kern_INDEX,
33     FT_VALIDATE_opbd = FT_VALIDATE_GX_START << FT_VALIDATE_opbd_INDEX,
34     FT_VALIDATE_trak = FT_VALIDATE_GX_START << FT_VALIDATE_trak_INDEX,
35     FT_VALIDATE_prop = FT_VALIDATE_GX_START << FT_VALIDATE_prop_INDEX,
36     FT_VALIDATE_lcar = FT_VALIDATE_GX_START << FT_VALIDATE_lcar_INDEX,
37 
38     FT_VALIDATE_GX = (FT_VALIDATE_feat |
39                        FT_VALIDATE_mort |
40                        FT_VALIDATE_morx |
41                        FT_VALIDATE_bsln |
42                        FT_VALIDATE_just |
43                        FT_VALIDATE_kern |
44                        FT_VALIDATE_opbd |
45                        FT_VALIDATE_trak |
46                        FT_VALIDATE_prop |
47                        FT_VALIDATE_lcar),
48 
49     FT_VALIDATE_MS = FT_VALIDATE_GX_START << 0,
50     FT_VALIDATE_APPLE = FT_VALIDATE_GX_START << 1,
51     FT_VALIDATE_CKERN = FT_VALIDATE_MS | FT_VALIDATE_APPLE,
52 }
53 
54 version(BindFT_Static) {
55 	extern(C) @nogc nothrow {
56         FT_Error FT_TrueTypeGX_Validate(FT_Face,FT_UInt,FT_Bytes,FT_UInt);
57         void FT_TrueTypeGX_Free(FT_Face,FT_Bytes);
58         FT_Error FT_ClassicKern_Validate(FT_Face,FT_UInt,FT_Bytes*);
59         void FT_ClassicKern_Free(FT_Face,FT_Bytes);
60     }
61 }
62 else {
63     extern(C) @nogc nothrow {
64         alias pFT_TrueTypeGX_Validate = FT_Error function(FT_Face,FT_UInt,FT_Bytes,FT_UInt);
65         alias pFT_TrueTypeGX_Free = void function(FT_Face,FT_Bytes);
66         alias pFT_ClassicKern_Validate = FT_Error function(FT_Face,FT_UInt,FT_Bytes*);
67         alias pFT_ClassicKern_Free = void function(FT_Face,FT_Bytes);
68     }
69 
70     __gshared {
71         pFT_TrueTypeGX_Validate FT_TrueTypeGX_Validate;
72         pFT_TrueTypeGX_Free FT_TrueTypeGX_Free;
73         pFT_ClassicKern_Validate FT_ClassicKern_Validate;
74         pFT_ClassicKern_Free FT_ClassicKern_Free;
75     }
76 }