fixed problem of strokes disappearing if they appear before a zero fill
[swftools.git] / lib / devices / render.c
index 88e33ae..cf6c056 100644 (file)
@@ -438,6 +438,7 @@ void fill(gfxdevice_t*dev, fillinfo_t*fill)
 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);
@@ -566,7 +567,7 @@ static void draw_line(gfxdevice_t*dev, gfxline_t*line)
             xx=x1;
            yy=y1;
 
-            parts = (int)(sqrt(c)/3);
+            parts = (int)(sqrt(c));
             if(!parts) parts = 1;
 
             for(t=1;t<=parts;t++) {
@@ -588,6 +589,7 @@ void render_startclip(struct _gfxdevice*dev, gfxline_t*line)
 {
     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);
@@ -619,6 +621,7 @@ void render_fillbitmap(struct _gfxdevice*dev, gfxline_t*line, gfximage_t*img, gf
     draw_line(dev, line);
 
     fillinfo_t info;
+    memset(&info, 0, sizeof(info));
     info.type = filltype_bitmap;
     info.image = img;
     info.matrix = &m2;
@@ -730,6 +733,7 @@ void*render_result_get(gfxresult_t*r, const char*name)
            i = i->next;
            if(!i)
                return 0;
+            pagenr--;
        }
        return gfximage_asXPM(&i->img, 64);
     } else if(!strncmp(name,"page",4)) {
@@ -740,6 +744,7 @@ void*render_result_get(gfxresult_t*r, const char*name)
            i = i->next;
            if(!i)
                return 0;
+            pagenr--;
        }
        return &i->img;
     }
@@ -752,10 +757,15 @@ void render_result_destroy(gfxresult_t*r)
     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;
     }
-    free(r);
+    rfx_free(r);
 }
 
 gfxresult_t* render_finish(struct _gfxdevice*dev)