added pdfswf_addlanguagedir() function.
authorkramm <kramm>
Tue, 26 Oct 2004 15:12:08 +0000 (15:12 +0000)
committerkramm <kramm>
Tue, 26 Oct 2004 15:12:08 +0000 (15:12 +0000)
pdf2swf/SWFOutputDev.cc

index 00499a9..5186af3 100644 (file)
@@ -1916,6 +1916,8 @@ void pdfswf_setparameter(char*name, char*value)
        zoom = atoi(value);
     } else if(!strcmp(name, "fontdir")) {
         pdfswf_addfontdir(value);
+    } else if(!strcmp(name, "languagedir")) {
+        pdfswf_addlanguagedir(value);
     } else {
        swfoutput_setparameter(name, value);
     }
@@ -1932,6 +1934,38 @@ void pdfswf_addfont(char*filename)
     }
 }
 
+static char* dirseparator()
+{
+#ifdef WIN32
+    return "\\";
+#else
+    return "/";
+#endif
+}
+
+void pdfswf_addlanguagedir(char*dir)
+{
+    if(!globalParams)
+        globalParams = new GlobalParams("");
+    
+    msg("<notice> Adding %s to language pack directories", dir);
+
+    int l;
+    FILE*fi = 0;
+    char* config_file = (char*)malloc(strlen(dir)+256);
+    strcpy(config_file, dir);
+    strcat(config_file, dirseparator());
+    strcat(config_file, "add-to-xpdfrc");
+
+    fi = fopen(config_file, "rb");
+    if(!fi) {
+        msg("<error> Could not open %s");
+        return;
+    }
+    globalParams->parseFile(new GString(config_file), fi);
+    fclose(fi);
+}
+
 void pdfswf_addfontdir(char*dirname)
 {
 #ifdef HAVE_DIRENT_H
@@ -1963,11 +1997,7 @@ void pdfswf_addfontdir(char*dirname)
        {
            char*fontname = (char*)malloc(strlen(dirname)+strlen(name)+2);
            strcpy(fontname, dirname);
-#ifdef WIN32
-               strcat(fontname, "\\");
-#else
-               strcat(fontname, "/");
-#endif
+            strcat(fontname, dirseparator());
            strcat(fontname, name);
            msg("<verbose> Adding %s to fonts", fontname);
            pdfswf_addfont(fontname);
@@ -2006,7 +2036,8 @@ pdf_doc_t* pdf_init(char*filename, char*userPassword)
     Object info;
 
     // read config file
-    globalParams = new GlobalParams("");
+    if(!globalParams)
+        globalParams = new GlobalParams("");
 
     // open PDF file
     if (userPassword && userPassword[0]) {
@@ -2083,7 +2114,7 @@ class MemCheck
 {
     public: ~MemCheck()
     {
-        delete globalParams;
+        delete globalParams;globalParams=0;
         Object::memCheck(stderr);
         gMemReport(stderr);
     }