AppPkg/Applications/Python: Add Python 2.7.2 sources since the release of Python 2.7.3 made them unavailable from the python.org web site.
These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution. Signed-off-by: daryl.mcdaniel@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
269
AppPkg/Applications/Python/Python-2.7.2/Modules/fmmodule.c
Normal file
269
AppPkg/Applications/Python/Python-2.7.2/Modules/fmmodule.c
Normal file
@ -0,0 +1,269 @@
|
||||
|
||||
/* Font Manager module */
|
||||
|
||||
#include "Python.h"
|
||||
|
||||
#include <gl.h>
|
||||
#include <device.h>
|
||||
#include <fmclient.h>
|
||||
|
||||
|
||||
/* Font Handle object implementation */
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
fmfonthandle fh_fh;
|
||||
} fhobject;
|
||||
|
||||
static PyTypeObject Fhtype;
|
||||
|
||||
#define is_fhobject(v) ((v)->ob_type == &Fhtype)
|
||||
|
||||
static PyObject *
|
||||
newfhobject(fmfonthandle fh)
|
||||
{
|
||||
fhobject *fhp;
|
||||
if (fh == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"error creating new font handle");
|
||||
return NULL;
|
||||
}
|
||||
fhp = PyObject_New(fhobject, &Fhtype);
|
||||
if (fhp == NULL)
|
||||
return NULL;
|
||||
fhp->fh_fh = fh;
|
||||
return (PyObject *)fhp;
|
||||
}
|
||||
|
||||
/* Font Handle methods */
|
||||
|
||||
static PyObject *
|
||||
fh_scalefont(fhobject *self, PyObject *args)
|
||||
{
|
||||
double size;
|
||||
if (!PyArg_ParseTuple(args, "d", &size))
|
||||
return NULL;
|
||||
return newfhobject(fmscalefont(self->fh_fh, size));
|
||||
}
|
||||
|
||||
/* XXX fmmakefont */
|
||||
|
||||
static PyObject *
|
||||
fh_setfont(fhobject *self)
|
||||
{
|
||||
fmsetfont(self->fh_fh);
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
fh_getfontname(fhobject *self)
|
||||
{
|
||||
char fontname[256];
|
||||
int len;
|
||||
len = fmgetfontname(self->fh_fh, sizeof fontname, fontname);
|
||||
if (len < 0) {
|
||||
PyErr_SetString(PyExc_RuntimeError, "error in fmgetfontname");
|
||||
return NULL;
|
||||
}
|
||||
return PyString_FromStringAndSize(fontname, len);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
fh_getcomment(fhobject *self)
|
||||
{
|
||||
char comment[256];
|
||||
int len;
|
||||
len = fmgetcomment(self->fh_fh, sizeof comment, comment);
|
||||
if (len < 0) {
|
||||
PyErr_SetString(PyExc_RuntimeError, "error in fmgetcomment");
|
||||
return NULL;
|
||||
}
|
||||
return PyString_FromStringAndSize(comment, len);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
fh_getfontinfo(fhobject *self)
|
||||
{
|
||||
fmfontinfo info;
|
||||
if (fmgetfontinfo(self->fh_fh, &info) < 0) {
|
||||
PyErr_SetString(PyExc_RuntimeError, "error in fmgetfontinfo");
|
||||
return NULL;
|
||||
}
|
||||
return Py_BuildValue("(llllllll)",
|
||||
info.printermatched,
|
||||
info.fixed_width,
|
||||
info.xorig,
|
||||
info.yorig,
|
||||
info.xsize,
|
||||
info.ysize,
|
||||
info.height,
|
||||
info.nglyphs);
|
||||
}
|
||||
|
||||
#if 0
|
||||
static PyObject *
|
||||
fh_getwholemetrics(fhobject *self, PyObject *args)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
static PyObject *
|
||||
fh_getstrwidth(fhobject *self, PyObject *args)
|
||||
{
|
||||
char *str;
|
||||
if (!PyArg_ParseTuple(args, "s", &str))
|
||||
return NULL;
|
||||
return PyInt_FromLong(fmgetstrwidth(self->fh_fh, str));
|
||||
}
|
||||
|
||||
static PyMethodDef fh_methods[] = {
|
||||
{"scalefont", (PyCFunction)fh_scalefont, METH_VARARGS},
|
||||
{"setfont", (PyCFunction)fh_setfont, METH_NOARGS},
|
||||
{"getfontname", (PyCFunction)fh_getfontname, METH_NOARGS},
|
||||
{"getcomment", (PyCFunction)fh_getcomment, METH_NOARGS},
|
||||
{"getfontinfo", (PyCFunction)fh_getfontinfo, METH_NOARGS},
|
||||
#if 0
|
||||
{"getwholemetrics", (PyCFunction)fh_getwholemetrics, METH_VARARGS},
|
||||
#endif
|
||||
{"getstrwidth", (PyCFunction)fh_getstrwidth, METH_VARARGS},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
static PyObject *
|
||||
fh_getattr(fhobject *fhp, char *name)
|
||||
{
|
||||
return Py_FindMethod(fh_methods, (PyObject *)fhp, name);
|
||||
}
|
||||
|
||||
static void
|
||||
fh_dealloc(fhobject *fhp)
|
||||
{
|
||||
fmfreefont(fhp->fh_fh);
|
||||
PyObject_Del(fhp);
|
||||
}
|
||||
|
||||
static PyTypeObject Fhtype = {
|
||||
PyObject_HEAD_INIT(&PyType_Type)
|
||||
0, /*ob_size*/
|
||||
"fm.font handle", /*tp_name*/
|
||||
sizeof(fhobject), /*tp_size*/
|
||||
0, /*tp_itemsize*/
|
||||
/* methods */
|
||||
(destructor)fh_dealloc, /*tp_dealloc*/
|
||||
0, /*tp_print*/
|
||||
(getattrfunc)fh_getattr, /*tp_getattr*/
|
||||
0, /*tp_setattr*/
|
||||
0, /*tp_compare*/
|
||||
0, /*tp_repr*/
|
||||
};
|
||||
|
||||
|
||||
/* Font Manager functions */
|
||||
|
||||
static PyObject *
|
||||
fm_init(PyObject *self)
|
||||
{
|
||||
fminit();
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
fm_findfont(PyObject *self, PyObject *args)
|
||||
{
|
||||
char *str;
|
||||
if (!PyArg_ParseTuple(args, "s", &str))
|
||||
return NULL;
|
||||
return newfhobject(fmfindfont(str));
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
fm_prstr(PyObject *self, PyObject *args)
|
||||
{
|
||||
char *str;
|
||||
if (!PyArg_ParseTuple(args, "s", &str))
|
||||
return NULL;
|
||||
fmprstr(str);
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
/* XXX This uses a global variable as temporary! Not re-entrant! */
|
||||
|
||||
static PyObject *fontlist;
|
||||
|
||||
static void
|
||||
clientproc(char *fontname)
|
||||
{
|
||||
int err;
|
||||
PyObject *v;
|
||||
if (fontlist == NULL)
|
||||
return;
|
||||
v = PyString_FromString(fontname);
|
||||
if (v == NULL)
|
||||
err = -1;
|
||||
else {
|
||||
err = PyList_Append(fontlist, v);
|
||||
Py_DECREF(v);
|
||||
}
|
||||
if (err != 0) {
|
||||
Py_DECREF(fontlist);
|
||||
fontlist = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
fm_enumerate(PyObject *self)
|
||||
{
|
||||
PyObject *res;
|
||||
fontlist = PyList_New(0);
|
||||
if (fontlist == NULL)
|
||||
return NULL;
|
||||
fmenumerate(clientproc);
|
||||
res = fontlist;
|
||||
fontlist = NULL;
|
||||
return res;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
fm_setpath(PyObject *self, PyObject *args)
|
||||
{
|
||||
char *str;
|
||||
if (!PyArg_ParseTuple(args, "s", &str))
|
||||
return NULL;
|
||||
fmsetpath(str);
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
fm_fontpath(PyObject *self)
|
||||
{
|
||||
return PyString_FromString(fmfontpath());
|
||||
}
|
||||
|
||||
static PyMethodDef fm_methods[] = {
|
||||
{"init", fm_init, METH_NOARGS},
|
||||
{"findfont", fm_findfont, METH_VARARGS},
|
||||
{"enumerate", fm_enumerate, METH_NOARGS},
|
||||
{"prstr", fm_prstr, METH_VARARGS},
|
||||
{"setpath", fm_setpath, METH_VARARGS},
|
||||
{"fontpath", fm_fontpath, METH_NOARGS},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
||||
void
|
||||
initfm(void)
|
||||
{
|
||||
|
||||
if (PyErr_WarnPy3k("the fm module has been removed in "
|
||||
"Python 3.0", 2) < 0)
|
||||
return;
|
||||
|
||||
Py_InitModule("fm", fm_methods);
|
||||
if (m == NULL)
|
||||
return;
|
||||
fminit();
|
||||
}
|
Reference in New Issue
Block a user