synchronized with downstream git
[swftools.git] / src / gfx2gfx.c
index 0a2d4d2..67951a1 100644 (file)
 #include "../../swftools/lib/gfxsource.h"
 #include "../../swftools/lib/gfxdevice.h"
 #include "../../swftools/lib/gfxpoly.h"
+#include "../../swftools/lib/devices/pdf.h"
 #include "../../swftools/lib/devices/swf.h"
 #include "../../swftools/lib/devices/text.h"
 #include "../../swftools/lib/devices/render.h"
+#include "../../swftools/lib/devices/file.h"
 #include "../../swftools/lib/devices/bbox.h"
+#ifdef HAVE_LRF
 #include "../../swftools/lib/devices/lrf.h"
+#endif
 #include "../../swftools/lib/devices/ocr.h"
 #include "../../swftools/lib/devices/rescale.h"
 #include "../../swftools/lib/devices/record.h"
@@ -49,7 +53,7 @@ static char * outputname = 0;
 static int loglevel = 3;
 static char * pagerange = 0;
 static char * filename = 0;
-static const char * format = "ocr";
+static const char * format = 0;
 
 int args_callback_option(char*name,char*val) {
     if (!strcmp(name, "o"))
@@ -200,8 +204,16 @@ int main(int argn, char *argv[])
         exit(1);
     }
 
+    if(!format) {
+       char*x = strrchr(outputname, '.');
+       if(x) 
+           format = x+1;
+    }
+
+
     gfxresult_t*result = 0;
-    if(!strcmp(format, "lrf")) {
+#ifdef HAVE_LRF
+    if(!strcasecmp(format, "lrf")) {
         gfxdevice_t lrf;
         gfxdevice_lrf_init(&lrf);
 
@@ -234,17 +246,27 @@ int main(int argn, char *argv[])
             }
         }
         result = out->finish(out);
-    } else {
+    } else 
+#endif
+    {
         gfxdevice_t _out,*out=&_out;
-        if(!strcmp(format, "ocr")) {
+        if(!strcasecmp(format, "ocr")) {
             gfxdevice_ocr_init(out);
-        } if(!strcmp(format, "swf")) {
+        } else if(!strcasecmp(format, "swf")) {
             gfxdevice_swf_init(out);
-        } if(!strcmp(format, "img")) {
+        } else if(!strcasecmp(format, "img") || !strcasecmp(format, "png")) {
             gfxdevice_render_init(out);
-        } if(!strcmp(format, "txt")) {
+           out->setparameter(out, "antialize", "4");
+        } else if(!strcasecmp(format, "txt")) {
             gfxdevice_text_init(out);
-        }
+        } else if(!strcasecmp(format, "log")) {
+            gfxdevice_file_init(out, "/tmp/device.log");
+        } else if(!strcasecmp(format, "pdf")) {
+            gfxdevice_pdf_init(out);
+        } else {
+           msg("<error> Invalid output format: %s", format);
+           exit(1);
+       }
 
         int pagenr;
         for(pagenr = 1; pagenr <= doc->num_pages; pagenr++)