Port winfonts plugin to build on python2/python3

This commit is contained in:
Eli Schwartz 2019-03-13 00:42:43 -04:00
parent 3acac495d0
commit aa56c26f71

View File

@ -208,8 +208,9 @@ static PyObject* remove_system_font(PyObject *self, PyObject *args) {
return Py_BuildValue("O", ok); return Py_BuildValue("O", ok);
} }
static static char winfonts_doc[] = "Windows font API";
PyMethodDef winfonts_methods[] = {
static PyMethodDef winfonts_methods[] = {
{"enum_font_families", enum_font_families, METH_VARARGS, {"enum_font_families", enum_font_families, METH_VARARGS,
"enum_font_families()\n\n" "enum_font_families()\n\n"
"Enumerate all regular (not italic/bold/etc. variants) font families on the system. Note there will be multiple entries for every family (corresponding to each charset of the font)." "Enumerate all regular (not italic/bold/etc. variants) font families on the system. Note there will be multiple entries for every family (corresponding to each charset of the font)."
@ -239,14 +240,32 @@ PyMethodDef winfonts_methods[] = {
}; };
CALIBRE_MODINIT_FUNC #if PY_MAJOR_VERSION >= 3
initwinfonts(void) { #define INITERROR return NULL
#define INITMODULE PyModule_Create(&winfonts_module)
static struct PyModuleDef winfonts_module = {
/* m_base */ PyModuleDef_HEAD_INIT,
/* m_name */ "winfonts",
/* m_doc */ winfonts_doc,
/* m_size */ -1,
/* m_methods */ winfonts_methods,
/* m_slots */ 0,
/* m_traverse */ 0,
/* m_clear */ 0,
/* m_free */ 0,
};
CALIBRE_MODINIT_FUNC PyInit_winfonts(void) {
#else
#define INITERROR return
#define INITMODULE Py_InitModule3("winfonts", winfonts_methods, winfonts_doc)
CALIBRE_MODINIT_FUNC initwinfonts(void) {
#endif
PyObject *m; PyObject *m;
m = Py_InitModule3( m = INITMODULE;
"winfonts", winfonts_methods, if (m == NULL) {
"Windows font API" INITERROR;
); }
if (m == NULL) return;
PyModule_AddIntMacro(m, FW_DONTCARE); PyModule_AddIntMacro(m, FW_DONTCARE);
PyModule_AddIntMacro(m, FW_THIN); PyModule_AddIntMacro(m, FW_THIN);
@ -263,4 +282,8 @@ initwinfonts(void) {
PyModule_AddIntMacro(m, FW_ULTRABOLD); PyModule_AddIntMacro(m, FW_ULTRABOLD);
PyModule_AddIntMacro(m, FW_HEAVY); PyModule_AddIntMacro(m, FW_HEAVY);
PyModule_AddIntMacro(m, FW_BLACK); PyModule_AddIntMacro(m, FW_BLACK);
#if PY_MAJOR_VERSION >= 3
return m;
#endif
} }