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);
}
static
PyMethodDef winfonts_methods[] = {
static char winfonts_doc[] = "Windows font API";
static PyMethodDef winfonts_methods[] = {
{"enum_font_families", enum_font_families, METH_VARARGS,
"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)."
@ -239,14 +240,32 @@ PyMethodDef winfonts_methods[] = {
};
CALIBRE_MODINIT_FUNC
initwinfonts(void) {
#if PY_MAJOR_VERSION >= 3
#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;
m = Py_InitModule3(
"winfonts", winfonts_methods,
"Windows font API"
);
if (m == NULL) return;
m = INITMODULE;
if (m == NULL) {
INITERROR;
}
PyModule_AddIntMacro(m, FW_DONTCARE);
PyModule_AddIntMacro(m, FW_THIN);
@ -263,4 +282,8 @@ initwinfonts(void) {
PyModule_AddIntMacro(m, FW_ULTRABOLD);
PyModule_AddIntMacro(m, FW_HEAVY);
PyModule_AddIntMacro(m, FW_BLACK);
#if PY_MAJOR_VERSION >= 3
return m;
#endif
}