git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added new perturbation, various bugfixes, and postscript output
[swftools.git]
/
lib
/
devices
/
render.c
diff --git
a/lib/devices/render.c
b/lib/devices/render.c
index
88e33ae
..
0170621
100644
(file)
--- a/
lib/devices/render.c
+++ b/
lib/devices/render.c
@@
-438,6
+438,7
@@
void fill(gfxdevice_t*dev, fillinfo_t*fill)
void fill_solid(gfxdevice_t*dev, gfxcolor_t* color)
{
fillinfo_t info;
void fill_solid(gfxdevice_t*dev, gfxcolor_t* color)
{
fillinfo_t info;
+ memset(&info, 0, sizeof(info));
info.type = filltype_solid;
info.color = color;
fill(dev, &info);
info.type = filltype_solid;
info.color = color;
fill(dev, &info);
@@
-476,12
+477,13
@@
void newclip(struct _gfxdevice*dev)
memset(c->data, 0, sizeof(U32)*i->bitwidth*i->height2);
}
memset(c->data, 0, sizeof(U32)*i->bitwidth*i->height2);
}
-void endclip(struct _gfxdevice*dev)
+void endclip(struct _gfxdevice*dev, char removelast)
{
internal_t*i = (internal_t*)dev->internal;
{
internal_t*i = (internal_t*)dev->internal;
-
- if(!i->clipbuf) {
- fprintf(stderr, "endclip without any active clip buffers");
+
+ /* test for at least one cliplevel (the one we created ourselves) */
+ if(!i->clipbuf || (!i->clipbuf->next && !removelast)) {
+ fprintf(stderr, "endclip without any active clip buffers\n");
return;
}
return;
}
@@
-566,7
+568,7
@@
static void draw_line(gfxdevice_t*dev, gfxline_t*line)
xx=x1;
yy=y1;
xx=x1;
yy=y1;
- parts = (int)(sqrt(c)/3);
+ parts = (int)(sqrt(c));
if(!parts) parts = 1;
for(t=1;t<=parts;t++) {
if(!parts) parts = 1;
for(t=1;t<=parts;t++) {
@@
-588,6
+590,7
@@
void render_startclip(struct _gfxdevice*dev, gfxline_t*line)
{
internal_t*i = (internal_t*)dev->internal;
fillinfo_t info;
{
internal_t*i = (internal_t*)dev->internal;
fillinfo_t info;
+ memset(&info, 0, sizeof(info));
newclip(dev);
info.type = filltype_clip;
draw_line(dev, line);
newclip(dev);
info.type = filltype_clip;
draw_line(dev, line);
@@
-597,7
+600,7
@@
void render_startclip(struct _gfxdevice*dev, gfxline_t*line)
void render_endclip(struct _gfxdevice*dev)
{
internal_t*i = (internal_t*)dev->internal;
void render_endclip(struct _gfxdevice*dev)
{
internal_t*i = (internal_t*)dev->internal;
- endclip(dev);
+ endclip(dev, 0);
}
void render_fill(struct _gfxdevice*dev, gfxline_t*line, gfxcolor_t*color)
}
void render_fill(struct _gfxdevice*dev, gfxline_t*line, gfxcolor_t*color)
@@
-619,6
+622,7
@@
void render_fillbitmap(struct _gfxdevice*dev, gfxline_t*line, gfximage_t*img, gf
draw_line(dev, line);
fillinfo_t info;
draw_line(dev, line);
fillinfo_t info;
+ memset(&info, 0, sizeof(info));
info.type = filltype_bitmap;
info.image = img;
info.matrix = &m2;
info.type = filltype_bitmap;
info.image = img;
info.matrix = &m2;
@@
-730,6
+734,7
@@
void*render_result_get(gfxresult_t*r, const char*name)
i = i->next;
if(!i)
return 0;
i = i->next;
if(!i)
return 0;
+ pagenr--;
}
return gfximage_asXPM(&i->img, 64);
} else if(!strncmp(name,"page",4)) {
}
return gfximage_asXPM(&i->img, 64);
} else if(!strncmp(name,"page",4)) {
@@
-740,6
+745,7
@@
void*render_result_get(gfxresult_t*r, const char*name)
i = i->next;
if(!i)
return 0;
i = i->next;
if(!i)
return 0;
+ pagenr--;
}
return &i->img;
}
}
return &i->img;
}
@@
-752,10
+758,15
@@
void render_result_destroy(gfxresult_t*r)
while(i) {
internal_result_t*next = i->next;
free(i->img.data);i->img.data = 0;
while(i) {
internal_result_t*next = i->next;
free(i->img.data);i->img.data = 0;
- free(i);
+
+ /* FIXME memleak
+ the following rfx_free causes a segfault on WIN32 machines,
+ if executed */
+ //rfx_free(i);
+
i = next;
}
i = next;
}
- free(r);
+ rfx_free(r);
}
gfxresult_t* render_finish(struct _gfxdevice*dev)
}
gfxresult_t* render_finish(struct _gfxdevice*dev)
@@
-874,10
+885,10
@@
void render_endpage(struct _gfxdevice*dev)
exit(1);
}
exit(1);
}
- endclip(dev);
+ endclip(dev, 1);
while(i->clipbuf) {
fprintf(stderr, "Warning: unclosed clip while processing endpage()\n");
while(i->clipbuf) {
fprintf(stderr, "Warning: unclosed clip while processing endpage()\n");
- endclip(dev);
+ endclip(dev, 1);
}
internal_result_t*ir= (internal_result_t*)rfx_calloc(sizeof(internal_result_t));
}
internal_result_t*ir= (internal_result_t*)rfx_calloc(sizeof(internal_result_t));