fixed a few bugs in remove_font_transforms filter
[swftools.git] / lib / devices / file.c
index 3b83c29..553e642 100644 (file)
 
 #include <stdlib.h>
 #include <stdio.h>
+#ifndef WIN32
 #include <unistd.h>
+#endif
+#include <string.h>
 #include <memory.h>
 #include "../gfxdevice.h"
 
@@ -33,7 +36,7 @@ int file_setparameter(struct _gfxdevice*dev, const char*key, const char*value)
 {
     internal_t*i = (internal_t*)dev->internal;
     fprintf(i->fi, "setparameter %s=%s\n", key, value);
-    return 0;
+    return 1;
 }
 
 void file_startpage(struct _gfxdevice*dev, int width, int height)
@@ -56,6 +59,20 @@ static void dumpline(FILE*fi, gfxline_t*line)
     }
 }
 
+static void dumpmatrix (FILE*fi, gfxmatrix_t*matrix)
+{
+    fprintf(fi, "| %5.2f %5.2f %5.2f\n", matrix->m00, matrix->m10, matrix->tx);
+    fprintf(fi, "| %5.2f %5.2f %5.2f\n", matrix->m01, matrix->m11, matrix->ty);
+}
+
+static void dumpgradient (FILE*fi, gfxgradient_t*gradient)
+{
+    while(gradient) {
+        fprintf(fi, "pos %f: %02x%02x%02x%02x\n", gradient->pos, gradient->color.r, gradient->color.g, gradient->color.b, gradient->color.a);
+       gradient = gradient->next;
+    }
+}
+
 void file_startclip(struct _gfxdevice*dev, gfxline_t*line)
 {
     internal_t*i = (internal_t*)dev->internal;
@@ -92,6 +109,7 @@ void file_fillbitmap(struct _gfxdevice*dev, gfxline_t*line, gfximage_t*img, gfxm
 {
     internal_t*i = (internal_t*)dev->internal;
     fprintf(i->fi, "fillbitmap\n");
+    dumpmatrix(i->fi, matrix);
     dumpline(i->fi, line);
 }
 
@@ -99,12 +117,15 @@ void file_fillgradient(struct _gfxdevice*dev, gfxline_t*line, gfxgradient_t*grad
 {
     internal_t*i = (internal_t*)dev->internal;
     fprintf(i->fi, "fillgradient\n");
+    dumpmatrix(i->fi, matrix);
+    dumpgradient(i->fi, gradient);
     dumpline(i->fi, line);
 }
 
 void file_addfont(struct _gfxdevice*dev, gfxfont_t*font)
 {
     internal_t*i = (internal_t*)dev->internal;
+    fprintf(i->fi, "addfont %s\n", font->id);
 }
 
 void file_drawchar(struct _gfxdevice*dev, gfxfont_t*font, int glyph, gfxcolor_t*color, gfxmatrix_t*matrix)
@@ -112,7 +133,7 @@ void file_drawchar(struct _gfxdevice*dev, gfxfont_t*font, int glyph, gfxcolor_t*
     internal_t*i = (internal_t*)dev->internal;
 }
 
-void file_drawlink(struct _gfxdevice*dev, gfxline_t*line, char*action)
+void file_drawlink(struct _gfxdevice*dev, gfxline_t*line, const char*action)
 {
     internal_t*i = (internal_t*)dev->internal;
     fprintf(i->fi, "drawlink %s\n", action);
@@ -138,7 +159,7 @@ void fileresult_destroy(struct _gfxresult*gfx)
     free(i->filename);i->filename = 0;
 }
 
-int fileresult_save(struct _gfxresult*gfx, char*filename)
+int fileresult_save(struct _gfxresult*gfx, const char*filename)
 {
     gfxresult_internal_t*i = (gfxresult_internal_t*)gfx->internal;
     FILE*fi,*fo;
@@ -168,7 +189,7 @@ int fileresult_save(struct _gfxresult*gfx, char*filename)
     return 0;
 }
 
-void* fileresult_get(struct _gfxresult*gfx, char*name)
+void* fileresult_get(struct _gfxresult*gfx, const char*name)
 {
     return 0; 
 }
@@ -199,7 +220,7 @@ gfxresult_t* file_finish(struct _gfxdevice*dev)
 
 void gfxdevice_file_init(gfxdevice_t*dev, char*filename)
 {
-    internal_t*i = malloc(sizeof(internal_t));
+    internal_t*i = (internal_t*)malloc(sizeof(internal_t));
     memset(dev, 0, sizeof(gfxdevice_t));
 
     dev->name = "file";