//          Copyright 2019 - 2021 Michael D. Parker
// Distributed under the Boost Software License, Version 1.0.
//    (See accompanying file LICENSE_1_0.txt or copy at
//          http://www.boost.org/LICENSE_1_0.txt)

module bindbc.freetype.bind.ftbdf;

version(linux) {
    import bindbc.freetype.config;
    import bindbc.freetype.bind.freetype,
           bindbc.freetype.bind.fttypes;

    alias BDF_PropertyType = int;
    enum {
        BDF_PROPERTY_TYPE_NONE = 0,
        BDF_PROPERTY_TYPE_ATOM = 1,
        BDF_PROPERTY_TYPE_INTEGER = 2,
        BDF_PROPERTY_TYPE_CARDINAL = 3
    }

    alias BDF_Property = BDF_PropertyRec*;

    struct BDF_PropertyRec {
        BDF_PropertyType type;
        union u {
         char* atom;
         FT_Int32 integer;
         FT_UInt32 cardinal;
        }
    }

    static if(staticBinding) {
        extern(C) @nogc nothrow {
            FT_Error FT_Get_BDF_Charset_ID(FT_Face face, const(char)** acharset_encoding, const(char)** acharset_registry);
            FT_Error FT_Get_BDF_Property(FT_Face face, const(char)* prop_name, BDF_PropertyRec* aproperty);
        }
    }
    else {
        extern(C) @nogc nothrow {
            alias pFT_Get_BDF_Charset_ID = FT_Error function(FT_Face face, const(char)** acharset_encoding, const(char)** acharset_registry);
            alias pFT_Get_BDF_Property = FT_Error function(FT_Face face, const(char)* prop_name, BDF_PropertyRec* aproperty);
        }

        __gshared {
            pFT_Get_BDF_Charset_ID FT_Get_BDF_Charset_ID;
            pFT_Get_BDF_Property FT_Get_BDF_Property;
        }
    }
}