git.asbjorn.biz
/
swftools.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
bb864e1
)
python/gfx.c: fixed bug in stroke passing
author
Matthias Kramm
<kramm@quiss.org>
Mon, 16 Mar 2009 15:50:24 +0000
(16:50 +0100)
committer
Matthias Kramm
<kramm@quiss.org>
Mon, 16 Mar 2009 15:50:24 +0000
(16:50 +0100)
lib/python/gfx.c
patch
|
blob
|
history
diff --git
a/lib/python/gfx.c
b/lib/python/gfx.c
index
bb5ac9e
..
cbb4eb0
100644
(file)
--- a/
lib/python/gfx.c
+++ b/
lib/python/gfx.c
@@
-431,12
+431,12
@@
static PyObject* f_createOpenGL(PyObject* parent, PyObject* args, PyObject* kwar
}
#endif
}
#endif
-static PyObject*callback_python(char*function, gfxdevice_t*dev, const char*format, ...)
+static char callback_python(char*function, gfxdevice_t*dev, const char*format, ...)
{
OutputObject*self = (OutputObject*)dev->internal;
if(!PyObject_HasAttrString(self->pyobj, function))
{
OutputObject*self = (OutputObject*)dev->internal;
if(!PyObject_HasAttrString(self->pyobj, function))
- return PY_NONE;
+ return 0;
va_list ap;
va_start(ap, format);
va_list ap;
va_start(ap, format);
@@
-451,6
+451,9
@@
static PyObject*callback_python(char*function, gfxdevice_t*dev, const char*forma
} else if(p=='i') {
int i = va_arg(ap, int);
PyTuple_SetItem(tuple, pos, PyInt_FromLong(i));
} else if(p=='i') {
int i = va_arg(ap, int);
PyTuple_SetItem(tuple, pos, PyInt_FromLong(i));
+ } else if(p=='d') {
+ int i = va_arg(ap, double);
+ PyTuple_SetItem(tuple, pos, PyFloat_FromDouble(i));
} else if(p=='c') {
void* ptr = va_arg(ap, void*);
gfxcolor_t*col = (gfxcolor_t*)ptr;
} else if(p=='c') {
void* ptr = va_arg(ap, void*);
gfxcolor_t*col = (gfxcolor_t*)ptr;
@@
-511,10
+514,10
@@
static PyObject*callback_python(char*function, gfxdevice_t*dev, const char*forma
if(!result) {
PyErr_Print();
PyErr_Clear();
if(!result) {
PyErr_Print();
PyErr_Clear();
- return 0;
+ return 1;
} else {
Py_DECREF(result);
} else {
Py_DECREF(result);
- return 0;
+ return 1;
}
}
}
}
@@
-551,7
+554,7
@@
static void my_stroke(gfxdevice_t*dev, gfxline_t*line, gfxcoord_t width, gfxcolo
joint = "round";
else if(joint_style == gfx_joinBevel)
joint = "bevel";
joint = "round";
else if(joint_style == gfx_joinBevel)
joint = "bevel";
- callback_python("stroke", dev, "licssi", line, width, color, cap, joint, miterLimit);
+ callback_python("stroke", dev, "ldcssi", line, width, color, cap, joint, miterLimit);
}
static void my_fill(gfxdevice_t*dev, gfxline_t*line, gfxcolor_t*color)
{
}
static void my_fill(gfxdevice_t*dev, gfxline_t*line, gfxcolor_t*color)
{
@@
-569,9
+572,19
@@
static void my_addfont(gfxdevice_t*dev, gfxfont_t*font)
{
callback_python("addfont", dev, "f", font);
}
{
callback_python("addfont", dev, "f", font);
}
-static void my_drawchar(gfxdevice_t*dev, gfxfont_t*font, int glyph, gfxcolor_t*color, gfxmatrix_t*matrix)
+static void my_drawchar(gfxdevice_t*dev, gfxfont_t*font, int glyphnr, gfxcolor_t*color, gfxmatrix_t*matrix)
{
{
- callback_python("drawchar", dev, "ficm", font, glyph, color, matrix);
+ if(!callback_python("drawchar", dev, "ficm", font, glyphnr, color, matrix))
+ {
+ if(!font)
+ return;
+ gfxglyph_t*glyph = &font->glyphs[glyphnr];
+ gfxline_t*line2 = gfxline_clone(glyph->line);
+ gfxline_transform(line2, matrix);
+ my_fill(dev, line2, color);
+ gfxline_free(line2);
+ return;
+ }
}
static void my_drawlink(gfxdevice_t*dev, gfxline_t*line, const char*action)
{
}
static void my_drawlink(gfxdevice_t*dev, gfxline_t*line, const char*action)
{