156bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hoskencdef extern from "fontconfig/fontconfig.h" : 256bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken ctypedef struct FcPattern : 356bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken pass 456bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken ctypedef struct FcConfig : 556bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken pass 656bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken cdef enum FcResult '_FcResult' : 756bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken FcResultMatch = 0, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId, 856bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken FcResultOutOfMemory 956bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken 1056bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken ctypedef char FcChar8 1156bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken FcPattern *FcNameParse(FcChar8 *name) 1256bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken FcPattern *FcFontMatch(FcConfig *config, FcPattern *match, FcResult *res) 1356bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken FcResult FcPatternGetInteger(FcPattern *pattern, char *typeid, int index, int *res) 1456bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken FcResult FcPatternGetString(FcPattern *pattern, char *typeid, int index, FcChar8 **res) 1556bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken void FcPatternPrint(FcPattern *pattern) 1656bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken void FcPatternDestroy(FcPattern *pattern) 1756bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken 1856bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken FcConfig *FcConfigGetCurrent() 1956bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken 2056bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hoskencdef class fcPattern : 2156bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken cdef FcPattern *_pattern 2256bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken 2356bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken def __init__(self, char *name) : 2456bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken cdef FcPattern *temp 2556bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken cdef FcResult res 2656bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken 2756bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken temp = FcNameParse(<FcChar8 *>name) 2856bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken self._pattern = FcFontMatch(FcConfigGetCurrent(), temp, &res) 2956bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken if res != FcResultMatch : 3056bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken print "Failed to match" + str(res) 3156bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken self._pattern = <FcPattern *>0 3256bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken 3356bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken def __destroy__(self) : 3456bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken FcPatternDestroy(self._pattern) 3556bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken 3656bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken def getInteger(self, char *typeid, int index) : 3756bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken cdef int res 3856bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken if self._pattern == <FcPattern *>0 or FcPatternGetInteger(self._pattern, typeid, index, &res) != FcResultMatch : return None 3956bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken return res 4056bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken 4156bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken def getString(self, char *typeid, int index) : 4256bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken cdef FcChar8 *res 4356bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken if self._pattern == <FcPattern *>0 or FcPatternGetString(self._pattern, typeid, index, &res) != FcResultMatch : return None 4456bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken return <char *>res 4556bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken 4656bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken def debugPrint(self) : 4756bef5680cc76a67d16ca14ac69f0dda1a691968Martin Hosken FcPatternPrint(self._pattern) 48