| cdef extern from "fontconfig/fontconfig.h" : |
| ctypedef struct FcPattern : |
| pass |
| ctypedef struct FcConfig : |
| pass |
| cdef enum FcResult '_FcResult' : |
| FcResultMatch = 0, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId, |
| FcResultOutOfMemory |
| |
| ctypedef char FcChar8 |
| FcPattern *FcNameParse(FcChar8 *name) |
| FcPattern *FcFontMatch(FcConfig *config, FcPattern *match, FcResult *res) |
| FcResult FcPatternGetInteger(FcPattern *pattern, char *typeid, int index, int *res) |
| FcResult FcPatternGetString(FcPattern *pattern, char *typeid, int index, FcChar8 **res) |
| void FcPatternPrint(FcPattern *pattern) |
| void FcPatternDestroy(FcPattern *pattern) |
| |
| FcConfig *FcConfigGetCurrent() |
| |
| cdef class fcPattern : |
| cdef FcPattern *_pattern |
| |
| def __init__(self, char *name) : |
| cdef FcPattern *temp |
| cdef FcResult res |
| |
| temp = FcNameParse(<FcChar8 *>name) |
| self._pattern = FcFontMatch(FcConfigGetCurrent(), temp, &res) |
| if res != FcResultMatch : |
| print "Failed to match" + str(res) |
| self._pattern = <FcPattern *>0 |
| |
| def __destroy__(self) : |
| FcPatternDestroy(self._pattern) |
| |
| def getInteger(self, char *typeid, int index) : |
| cdef int res |
| if self._pattern == <FcPattern *>0 or FcPatternGetInteger(self._pattern, typeid, index, &res) != FcResultMatch : return None |
| return res |
| |
| def getString(self, char *typeid, int index) : |
| cdef FcChar8 *res |
| if self._pattern == <FcPattern *>0 or FcPatternGetString(self._pattern, typeid, index, &res) != FcResultMatch : return None |
| return <char *>res |
| |
| def debugPrint(self) : |
| FcPatternPrint(self._pattern) |