gfxsource now has object-oriented members
[swftools.git] / src / pdf2swf.c
index 4241b55..04c860f 100644 (file)
@@ -28,9 +28,6 @@
 #ifdef HAVE_DIRENT_H
 #include <dirent.h>
 #endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
 #include "../lib/args.h"
 #include "../lib/os.h"
 #include "../lib/rfxswf.h"
@@ -190,31 +187,31 @@ int args_callback_option(char*name,char*val) {
        if(c && *c && c[1])  {
            *c = 0;
            c++;
-           driver->set_parameter(s,c);
+           driver->set_parameter(driver, s,c);
        }
        else
-           driver->set_parameter(s,"1");
+           driver->set_parameter(driver, s,"1");
        return 1;
     }
     else if (!strcmp(name, "S"))
     {
-       driver->set_parameter("drawonlyshapes", "1");
+       driver->set_parameter(driver, "drawonlyshapes", "1");
        return 0;
     }
     else if (!strcmp(name, "i"))
     {
-       driver->set_parameter("ignoredraworder", "1");
+       driver->set_parameter(driver, "ignoredraworder", "1");
        return 0;
     }
     else if (!strcmp(name, "z"))
     {
-       driver->set_parameter("enablezlib", "1");
+       driver->set_parameter(driver, "enablezlib", "1");
        zlib = 1;
        return 0;
     }
     else if (!strcmp(name, "n"))
     {
-       driver->set_parameter("opennewwindow", "1");
+       driver->set_parameter(driver, "opennewwindow", "1");
        return 0;
     }
     else if (!strcmp(name, "I"))
@@ -224,26 +221,27 @@ int args_callback_option(char*name,char*val) {
     }
     else if (!strcmp(name, "t"))
     {
-       driver->set_parameter("insertstop", "1");
+       driver->set_parameter(driver, "insertstop", "1");
        return 0;
     }
     else if (!strcmp(name, "T"))
     {
        if(!strcasecmp(val, "mx"))
-           driver->set_parameter("flashversion", "6");
+           driver->set_parameter(driver, "flashversion", "6");
        else
-           driver->set_parameter("flashversion", val);
+           driver->set_parameter(driver, "flashversion", val);
 
        return 1;
     }
     else if (!strcmp(name, "f"))
     {
-       driver->set_parameter("storeallcharacters", "1");
+       driver->set_parameter(driver, "storeallcharacters", "1");
+       driver->set_parameter(driver, "extrafontdata", "1");
        return 0;
     }
     else if (!strcmp(name, "w"))
     {
-       driver->set_parameter("linksopennewwindow", "0");
+       driver->set_parameter(driver, "linksopennewwindow", "0");
        return 0;
     }
     else if (!strcmp(name, "G"))
@@ -309,10 +307,10 @@ int args_callback_option(char*name,char*val) {
     else if (!strcmp(name, "j"))
     {
        if(name[1]) {
-           driver->set_parameter("jpegquality", &name[1]);
+           driver->set_parameter(driver, "jpegquality", &name[1]);
            return 0;
        } else {
-           driver->set_parameter("jpegquality", val);
+           driver->set_parameter(driver, "jpegquality", val);
            return 1;
        }
     }
@@ -417,6 +415,7 @@ void args_callback_usage(char*name)
           "                           graphic errors)\n");
     printf("-s filloverlap             Make intersecting shapes overlap, instead of canceling each\n"
           "                           other out. (Needed for some Powerpoint PDFs)\n");
+    printf("-s transparent             Make the SWF transparent\n");
     //deliberately undocumented (for now)
     //printf("-2                         Put 2 pages into each frame.\n");
     //printf("-4                         Put 4 pages into each frame.\n");
@@ -450,7 +449,7 @@ float getRate(char*filename)
 
 void show_info(gfxsource_t*driver, char*filename)
 {
-    gfxdocument_t* pdf = driver->open(filename);
+    gfxdocument_t* pdf = driver->open(driver, filename);
     int pagenr;
     FILE*fo=0;
     if(!pdf) {
@@ -486,24 +485,13 @@ int main(int argn, char *argv[])
     int nup_pos = 0;
     int x,y;
     char* installPath = getInstallationPath();
-    char* fontdir = 0;
     
     initLog(0,-1,0,0,-1,loglevel);
 
-#if defined(WIN32) && defined(HAVE_STAT) && defined(HAVE_SYS_STAT_H)
-    if(installPath) {
-       fontdir = concatPaths(installPath, "fonts");
-       FILE*test = fopen(concatPaths(fontdir,"\\d050000l.afm"), "rb");
-       if(!test) {
-           fprintf(stderr, "Couldn't find file %s - pdf2swf not installed properly? OS says:\n", concatPaths(fontdir, "\\d050000l.afm"));
-           perror("open");
-           exit(1);
-       }
-       fclose(test);
-    }
-#else
-    fontdir = concatPaths(installPath, "fonts");
-#endif
+    /* not needed anymore since fonts are embedded
+       if(installPath) {
+       fontpaths[fontpathpos++] = concatPaths(installPath, "fonts");
+    }*/
 
 #ifdef HAVE_SRAND48
     srand48(time(0));
@@ -545,7 +533,7 @@ int main(int argn, char *argv[])
     is_in_range(0x7fffffff, pagerange);
 
     if(pagerange)
-       driver->set_parameter("pages", pagerange);
+       driver->set_parameter(driver, "pages", pagerange);
 
     if (!filename) {
        args_callback_usage(argv[0]);
@@ -553,11 +541,8 @@ int main(int argn, char *argv[])
     }
 
     /* add fonts */
-    if(fontdir) {
-       driver->set_parameter("fontdir", fontdir);
-    }
     for(t=0;t<fontpathpos;t++) {
-       driver->set_parameter("fontdir", fontpaths[t]);
+       driver->set_parameter(driver, "fontdir", fontpaths[t]);
     }
 
     char fullname[256];
@@ -566,7 +551,7 @@ int main(int argn, char *argv[])
        filename = fullname;
     }
 
-    gfxdocument_t* pdf = driver->open(filename);
+    gfxdocument_t* pdf = driver->open(driver, filename);
     if(!pdf) {
         msg("<error> Couldn't open %s", filename);
         exit(1);
@@ -687,7 +672,7 @@ int main(int argn, char *argv[])
 
     pdf->destroy(pdf);
 
-    char*zip = "";
+    const char*zip = "";
     if(zlib) {
        zip = "-z";
     }