summaryrefslogtreecommitdiffstats
path: root/kpdf/xpdf/xpdf/GlobalParams.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kpdf/xpdf/xpdf/GlobalParams.cc')
-rw-r--r--kpdf/xpdf/xpdf/GlobalParams.cc2989
1 files changed, 0 insertions, 2989 deletions
diff --git a/kpdf/xpdf/xpdf/GlobalParams.cc b/kpdf/xpdf/xpdf/GlobalParams.cc
deleted file mode 100644
index 6212f42e..00000000
--- a/kpdf/xpdf/xpdf/GlobalParams.cc
+++ /dev/null
@@ -1,2989 +0,0 @@
-//========================================================================
-//
-// GlobalParams.cc
-//
-// Copyright 2001-2003 Glyph & Cog, LLC
-//
-//========================================================================
-
-#include <aconf.h>
-
-#ifdef USE_GCC_PRAGMAS
-#pragma implementation
-#endif
-
-#include <string.h>
-#include <strings.h>
-// KPDF: additional includes for Qt and Xft
-#include <tqstring.h>
-#include <tqregexp.h>
-#include <tqwindowdefs.h>
-// -- gentoo compile fix (XFree 4.3.0, FC 2.2.3, FreeType 2.1.9) --
-// on other distros these 2 lines should't harm
-#include <ft2build.h>
-#include FT_FREETYPE_H
-// -- ---------------------------------------------------------- --
-#include <X11/Xlib.h>
-#include <X11/Xft/Xft.h>
-#include <X11/Xft/XftCompat.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <sys/stat.h>
-#ifdef ENABLE_PLUGINS
-# ifndef WIN32
-# include <dlfcn.h>
-# endif
-#endif
-#ifdef WIN32
-# include <shlobj.h>
-#endif
-#if HAVE_PAPER_H
-#include <paper.h>
-#endif
-#include "gmem.h"
-#include "GString.h"
-#include "GList.h"
-#include "GHash.h"
-#include "gfile.h"
-#include "Error.h"
-#include "NameToCharCode.h"
-#include "CharCodeToUnicode.h"
-#include "UnicodeMap.h"
-#include "CMap.h"
-#include "BuiltinFontTables.h"
-#include "FontEncodingTables.h"
-#ifdef ENABLE_PLUGINS
-# include "XpdfPluginAPI.h"
-#endif
-#include "GlobalParams.h"
-
-#include <tqstring.h>
-#include <tqregexp.h>
-#include <fontconfig/fontconfig.h>
-
-#ifdef WIN32
-# define strcasecmp stricmp
-#endif
-
-#if MULTITHREADED
-# define lockGlobalParams gLockMutex(&mutex)
-# define lockUnicodeMapCache gLockMutex(&unicodeMapCacheMutex)
-# define lockCMapCache gLockMutex(&cMapCacheMutex)
-# define unlockGlobalParams gUnlockMutex(&mutex)
-# define unlockUnicodeMapCache gUnlockMutex(&unicodeMapCacheMutex)
-# define unlockCMapCache gUnlockMutex(&cMapCacheMutex)
-#else
-# define lockGlobalParams
-# define lockUnicodeMapCache
-# define lockCMapCache
-# define unlockGlobalParams
-# define unlockUnicodeMapCache
-# define unlockCMapCache
-#endif
-
-#include "NameToUnicodeTable.h"
-#include "UnicodeMapTables.h"
-#include "UTF8.h"
-
-#ifdef ENABLE_PLUGINS
-# ifdef WIN32
-extern XpdfPluginVecTable xpdfPluginVecTable;
-# endif
-#endif
-
-//------------------------------------------------------------------------
-
-#define cidToUnicodeCacheSize 4
-#define unicodeToUnicodeCacheSize 4
-
-//------------------------------------------------------------------------
-
-static struct {
- char *name;
- char *t1FileName;
- char *ttFileName;
-} displayFontTab[] = {
- {"Courier", "n022003l.pfb", "cour.ttf"},
- {"Courier-Bold", "n022004l.pfb", "courbd.ttf"},
- {"Courier-BoldOblique", "n022024l.pfb", "courbi.ttf"},
- {"Courier-Oblique", "n022023l.pfb", "couri.ttf"},
- {"Helvetica", "n019003l.pfb", "arial.ttf"},
- {"Helvetica-Bold", "n019004l.pfb", "arialbd.ttf"},
- {"Helvetica-BoldOblique", "n019024l.pfb", "arialbi.ttf"},
- {"Helvetica-Oblique", "n019023l.pfb", "ariali.ttf"},
- {"Symbol", "s050000l.pfb", NULL},
- {"Times-Bold", "n021004l.pfb", "timesbd.ttf"},
- {"Times-BoldItalic", "n021024l.pfb", "timesbi.ttf"},
- {"Times-Italic", "n021023l.pfb", "timesi.ttf"},
- {"Times-Roman", "n021003l.pfb", "times.ttf"},
- {"ZapfDingbats", "d050000l.pfb", NULL},
- {NULL, NULL, NULL}
-};
-
-#ifdef WIN32
-static char *displayFontDirs[] = {
- "c:/windows/fonts",
- "c:/winnt/fonts",
- NULL
-};
-#else
-static char *displayFontDirs[] = {
- "/usr/share/ghostscript/fonts",
- "/usr/pkg/share/ghostscript/fonts",
- "/usr/local/share/ghostscript/fonts",
- "/usr/share/fonts/default/Type1",
- "/usr/X11R6/lib/X11/fonts/Type1",
- "/usr/share/fonts/default/ghostscript",
- "/usr/share/fonts/type1/gsfonts",
- "/usr/share/fonts/Type1",
- NULL
-};
-#endif
-
-//------------------------------------------------------------------------
-
-GlobalParams *globalParams = NULL;
-
-//------------------------------------------------------------------------
-// DisplayFontParam
-//------------------------------------------------------------------------
-
-DisplayFontParam::DisplayFontParam(GString *nameA,
- DisplayFontParamKind kindA) {
- name = nameA;
- kind = kindA;
- switch (kind) {
- case displayFontT1:
- t1.fileName = NULL;
- break;
- case displayFontTT:
- tt.fileName = NULL;
- break;
- }
-}
-
-DisplayFontParam::~DisplayFontParam() {
- delete name;
- switch (kind) {
- case displayFontT1:
- if (t1.fileName) {
- delete t1.fileName;
- }
- break;
- case displayFontTT:
- if (tt.fileName) {
- delete tt.fileName;
- }
- break;
- }
-}
-
-#ifdef WIN32
-
-//------------------------------------------------------------------------
-// WinFontInfo
-//------------------------------------------------------------------------
-
-class WinFontInfo: public DisplayFontParam {
-public:
-
- GBool bold, italic;
-
- static WinFontInfo *make(GString *nameA, GBool boldA, GBool italicA,
- HKEY regKey, char *winFontDir);
- WinFontInfo(GString *nameA, GBool boldA, GBool italicA,
- GString *fileNameA);
- virtual ~WinFontInfo();
- GBool equals(WinFontInfo *fi);
-};
-
-WinFontInfo *WinFontInfo::make(GString *nameA, GBool boldA, GBool italicA,
- HKEY regKey, char *winFontDir) {
- GString *regName;
- GString *fileNameA;
- char buf[MAX_PATH];
- DWORD n;
- char c;
- int i;
-
- //----- find the font file
- fileNameA = NULL;
- regName = nameA->copy();
- if (boldA) {
- regName->append(" Bold");
- }
- if (italicA) {
- regName->append(" Italic");
- }
- regName->append(" (TrueType)");
- n = sizeof(buf);
- if (RegQueryValueEx(regKey, regName->getCString(), NULL, NULL,
- (LPBYTE)buf, &n) == ERROR_SUCCESS) {
- fileNameA = new GString(winFontDir);
- fileNameA->append('\\')->append(buf);
- }
- delete regName;
- if (!fileNameA) {
- delete nameA;
- return NULL;
- }
-
- //----- normalize the font name
- i = 0;
- while (i < nameA->getLength()) {
- c = nameA->getChar(i);
- if (c == ' ' || c == ',' || c == '-') {
- nameA->del(i);
- } else {
- ++i;
- }
- }
-
- return new WinFontInfo(nameA, boldA, italicA, fileNameA);
-}
-
-WinFontInfo::WinFontInfo(GString *nameA, GBool boldA, GBool italicA,
- GString *fileNameA):
- DisplayFontParam(nameA, displayFontTT)
-{
- bold = boldA;
- italic = italicA;
- tt.fileName = fileNameA;
-}
-
-WinFontInfo::~WinFontInfo() {
-}
-
-GBool WinFontInfo::equals(WinFontInfo *fi) {
- return !name->cmp(fi->name) && bold == fi->bold && italic == fi->italic;
-}
-
-//------------------------------------------------------------------------
-// WinFontList
-//------------------------------------------------------------------------
-
-class WinFontList {
-public:
-
- WinFontList(char *winFontDirA);
- ~WinFontList();
- WinFontInfo *find(GString *font);
-
-private:
-
- void add(WinFontInfo *fi);
- static int CALLBACK enumFunc1(CONST LOGFONT *font,
- CONST TEXTMETRIC *metrics,
- DWORD type, LPARAM data);
- static int CALLBACK enumFunc2(CONST LOGFONT *font,
- CONST TEXTMETRIC *metrics,
- DWORD type, LPARAM data);
-
- GList *fonts; // [WinFontInfo]
- HDC dc; // (only used during enumeration)
- HKEY regKey; // (only used during enumeration)
- char *winFontDir; // (only used during enumeration)
-};
-
-WinFontList::WinFontList(char *winFontDirA) {
- OSVERSIONINFO version;
- char *path;
-
- fonts = new GList();
- dc = GetDC(NULL);
- winFontDir = winFontDirA;
- version.dwOSVersionInfoSize = sizeof(version);
- GetVersionEx(&version);
- if (version.dwPlatformId == VER_PLATFORM_WIN32_NT) {
- path = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts\\";
- } else {
- path = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Fonts\\";
- }
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0,
- KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS,
- &regKey) == ERROR_SUCCESS) {
- EnumFonts(dc, NULL, &WinFontList::enumFunc1, (LPARAM)this);
- RegCloseKey(regKey);
- }
- ReleaseDC(NULL, dc);
-}
-
-WinFontList::~WinFontList() {
- deleteGList(fonts, WinFontInfo);
-}
-
-void WinFontList::add(WinFontInfo *fi) {
- int i;
-
- for (i = 0; i < fonts->getLength(); ++i) {
- if (((WinFontInfo *)fonts->get(i))->equals(fi)) {
- delete fi;
- return;
- }
- }
- fonts->append(fi);
-}
-
-WinFontInfo *WinFontList::find(GString *font) {
- GString *name;
- GBool bold, italic;
- WinFontInfo *fi;
- char c;
- int n, i;
-
- name = font->copy();
-
- // remove space, comma, dash chars
- i = 0;
- while (i < name->getLength()) {
- c = name->getChar(i);
- if (c == ' ' || c == ',' || c == '-') {
- name->del(i);
- } else {
- ++i;
- }
- }
- n = name->getLength();
-
- // remove trailing "MT" (Foo-MT, Foo-BoldMT, etc.)
- if (!strcmp(name->getCString() + n - 2, "MT")) {
- name->del(n - 2, 2);
- n -= 2;
- }
-
- // look for "Italic"
- if (!strcmp(name->getCString() + n - 6, "Italic")) {
- name->del(n - 6, 6);
- italic = gTrue;
- n -= 6;
- } else {
- italic = gFalse;
- }
-
- // look for "Bold"
- if (!strcmp(name->getCString() + n - 4, "Bold")) {
- name->del(n - 4, 4);
- bold = gTrue;
- n -= 4;
- } else {
- bold = gFalse;
- }
-
- // remove trailing "MT" (FooMT-Bold, etc.)
- if (!strcmp(name->getCString() + n - 2, "MT")) {
- name->del(n - 2, 2);
- n -= 2;
- }
-
- // remove trailing "PS"
- if (!strcmp(name->getCString() + n - 2, "PS")) {
- name->del(n - 2, 2);
- n -= 2;
- }
-
- // search for the font
- fi = NULL;
- for (i = 0; i < fonts->getLength(); ++i) {
- fi = (WinFontInfo *)fonts->get(i);
- if (!fi->name->cmp(name) && fi->bold == bold && fi->italic == italic) {
- break;
- }
- fi = NULL;
- }
-
- delete name;
- return fi;
-}
-
-int CALLBACK WinFontList::enumFunc1(CONST LOGFONT *font,
- CONST TEXTMETRIC *metrics,
- DWORD type, LPARAM data) {
- WinFontList *fl = (WinFontList *)data;
-
- EnumFonts(fl->dc, font->lfFaceName, &WinFontList::enumFunc2, (LPARAM)fl);
- return 1;
-}
-
-int CALLBACK WinFontList::enumFunc2(CONST LOGFONT *font,
- CONST TEXTMETRIC *metrics,
- DWORD type, LPARAM data) {
- WinFontList *fl = (WinFontList *)data;
- WinFontInfo *fi;
-
- if (type & TRUETYPE_FONTTYPE) {
- if ((fi = WinFontInfo::make(new GString(font->lfFaceName),
- font->lfWeight >= 600,
- font->lfItalic ? gTrue : gFalse,
- fl->regKey, fl->winFontDir))) {
- fl->add(fi);
- }
- }
- return 1;
-}
-
-#endif // WIN32
-
-//------------------------------------------------------------------------
-// PSFontParam
-//------------------------------------------------------------------------
-
-PSFontParam::PSFontParam(GString *pdfFontNameA, int wModeA,
- GString *psFontNameA, GString *encodingA) {
- pdfFontName = pdfFontNameA;
- wMode = wModeA;
- psFontName = psFontNameA;
- encoding = encodingA;
-}
-
-PSFontParam::~PSFontParam() {
- delete pdfFontName;
- delete psFontName;
- if (encoding) {
- delete encoding;
- }
-}
-
-//------------------------------------------------------------------------
-// KeyBinding
-//------------------------------------------------------------------------
-
-KeyBinding::KeyBinding(int codeA, int modsA, int contextA, char *cmd0) {
- code = codeA;
- mods = modsA;
- context = contextA;
- cmds = new GList();
- cmds->append(new GString(cmd0));
-}
-
-KeyBinding::KeyBinding(int codeA, int modsA, int contextA,
- char *cmd0, char *cmd1) {
- code = codeA;
- mods = modsA;
- context = contextA;
- cmds = new GList();
- cmds->append(new GString(cmd0));
- cmds->append(new GString(cmd1));
-}
-
-KeyBinding::KeyBinding(int codeA, int modsA, int contextA, GList *cmdsA) {
- code = codeA;
- mods = modsA;
- context = contextA;
- cmds = cmdsA;
-}
-
-KeyBinding::~KeyBinding() {
- deleteGList(cmds, GString);
-}
-
-#ifdef ENABLE_PLUGINS
-//------------------------------------------------------------------------
-// Plugin
-//------------------------------------------------------------------------
-
-class Plugin {
-public:
-
- static Plugin *load(char *type, char *name);
- ~Plugin();
-
-private:
-
-#ifdef WIN32
- Plugin(HMODULE libA);
- HMODULE lib;
-#else
- Plugin(void *dlA);
- void *dl;
-#endif
-};
-
-Plugin *Plugin::load(char *type, char *name) {
- GString *path;
- Plugin *plugin;
- XpdfPluginVecTable *vt;
- XpdfBool (*xpdfInitPlugin)(void);
-#ifdef WIN32
- HMODULE libA;
-#else
- void *dlA;
-#endif
-
- path = globalParams->getBaseDir();
- appendToPath(path, "plugins");
- appendToPath(path, type);
- appendToPath(path, name);
-
-#ifdef WIN32
- path->append(".dll");
- if (!(libA = LoadLibrary(path->getCString()))) {
- error(-1, "Failed to load plugin '%s'",
- path->getCString());
- goto err1;
- }
- if (!(vt = (XpdfPluginVecTable *)
- GetProcAddress(libA, "xpdfPluginVecTable"))) {
- error(-1, "Failed to find xpdfPluginVecTable in plugin '%s'",
- path->getCString());
- goto err2;
- }
-#else
- //~ need to deal with other extensions here
- path->append(".so");
- if (!(dlA = dlopen(path->getCString(), RTLD_NOW))) {
- error(-1, "Failed to load plugin '%s': %s",
- path->getCString(), dlerror());
- goto err1;
- }
- if (!(vt = (XpdfPluginVecTable *)dlsym(dlA, "xpdfPluginVecTable"))) {
- error(-1, "Failed to find xpdfPluginVecTable in plugin '%s'",
- path->getCString());
- goto err2;
- }
-#endif
-
- if (vt->version != xpdfPluginVecTable.version) {
- error(-1, "Plugin '%s' is wrong version", path->getCString());
- goto err2;
- }
- memcpy(vt, &xpdfPluginVecTable, sizeof(xpdfPluginVecTable));
-
-#ifdef WIN32
- if (!(xpdfInitPlugin = (XpdfBool (*)(void))
- GetProcAddress(libA, "xpdfInitPlugin"))) {
- error(-1, "Failed to find xpdfInitPlugin in plugin '%s'",
- path->getCString());
- goto err2;
- }
-#else
- if (!(xpdfInitPlugin = (XpdfBool (*)(void))dlsym(dlA, "xpdfInitPlugin"))) {
- error(-1, "Failed to find xpdfInitPlugin in plugin '%s'",
- path->getCString());
- goto err2;
- }
-#endif
-
- if (!(*xpdfInitPlugin)()) {
- error(-1, "Initialization of plugin '%s' failed",
- path->getCString());
- goto err2;
- }
-
-#ifdef WIN32
- plugin = new Plugin(libA);
-#else
- plugin = new Plugin(dlA);
-#endif
-
- delete path;
- return plugin;
-
- err2:
-#ifdef WIN32
- FreeLibrary(libA);
-#else
- dlclose(dlA);
-#endif
- err1:
- delete path;
- return NULL;
-}
-
-#ifdef WIN32
-Plugin::Plugin(HMODULE libA) {
- lib = libA;
-}
-#else
-Plugin::Plugin(void *dlA) {
- dl = dlA;
-}
-#endif
-
-Plugin::~Plugin() {
- void (*xpdfFreePlugin)(void);
-
-#ifdef WIN32
- if ((xpdfFreePlugin = (void (*)(void))
- GetProcAddress(lib, "xpdfFreePlugin"))) {
- (*xpdfFreePlugin)();
- }
- FreeLibrary(lib);
-#else
- if ((xpdfFreePlugin = (void (*)(void))dlsym(dl, "xpdfFreePlugin"))) {
- (*xpdfFreePlugin)();
- }
- dlclose(dl);
-#endif
-}
-
-#endif // ENABLE_PLUGINS
-
-//------------------------------------------------------------------------
-// parsing
-//------------------------------------------------------------------------
-
-GlobalParams::GlobalParams(char *cfgFileName) {
- UnicodeMap *map;
- GString *fileName;
- FILE *f;
- int i;
-
-#if MULTITHREADED
- gInitMutex(&mutex);
- gInitMutex(&unicodeMapCacheMutex);
- gInitMutex(&cMapCacheMutex);
-#endif
-
- initBuiltinFontTables();
-
- // scan the encoding in reverse because we want the lowest-numbered
- // index for each char name ('space' is encoded twice)
- macRomanReverseMap = new NameToCharCode();
- for (i = 255; i >= 0; --i) {
- if (macRomanEncoding[i]) {
- macRomanReverseMap->add(macRomanEncoding[i], (CharCode)i);
- }
- }
-
-#ifdef WIN32
- // baseDir will be set by a call to setBaseDir
- baseDir = new GString();
-#else
- baseDir = appendToPath(getHomeDir(), ".xpdf");
-#endif
- nameToUnicode = new NameToCharCode();
- cidToUnicodes = new GHash(gTrue);
- unicodeToUnicodes = new GHash(gTrue);
- residentUnicodeMaps = new GHash();
- unicodeMaps = new GHash(gTrue);
- cMapDirs = new GHash(gTrue);
- toUnicodeDirs = new GList();
- displayFonts = new GHash();
- displayCIDFonts = new GHash();
- displayNamedCIDFonts = new GHash();
-#if HAVE_PAPER_H
- char *paperName;
- const struct paper *paperType;
- paperinit();
- if ((paperName = systempapername())) {
- paperType = paperinfo(paperName);
- psPaperWidth = (int)paperpswidth(paperType);
- psPaperHeight = (int)paperpsheight(paperType);
- } else {
- error(-1, "No paper information available - using defaults");
- psPaperWidth = defPaperWidth;
- psPaperHeight = defPaperHeight;
- }
- paperdone();
-#else
- psPaperWidth = defPaperWidth;
- psPaperHeight = defPaperHeight;
-#endif
- psImageableLLX = psImageableLLY = 0;
- psImageableURX = psPaperWidth;
- psImageableURY = psPaperHeight;
- psCrop = gTrue;
- psExpandSmaller = gFalse;
- psShrinkLarger = gTrue;
- psCenter = gTrue;
- psDuplex = gFalse;
- psLevel = psLevel2;
- psFile = NULL;
- psFonts = new GHash();
- psNamedFonts16 = new GList();
- psFonts16 = new GList();
- psEmbedType1 = gTrue;
- psEmbedTrueType = gTrue;
- psEmbedCIDPostScript = gTrue;
- psEmbedCIDTrueType = gTrue;
- psPreload = gFalse;
- psOPI = gFalse;
- psASCIIHex = gFalse;
- // KPDF: use always UTF-8 and TQString::fromUtf
- textEncoding = new GString("UTF-8");
-#if defined(WIN32)
- textEOL = eolDOS;
-#elif defined(MACOS)
- textEOL = eolMac;
-#else
- textEOL = eolUnix;
-#endif
- textPageBreaks = gTrue;
- textKeepTinyChars = gFalse;
- fontDirs = new GList();
- initialZoom = new GString("125");
- continuousView = gFalse;
- enableT1lib = gTrue;
- enableFreeType = gTrue;
- antialias = gTrue;
- vectorAntialias = gTrue;
- strokeAdjust = gTrue;
- screenType = screenUnset;
- screenSize = -1;
- screenDotRadius = -1;
- screenGamma = 1.0;
- screenBlackThreshold = 0.0;
- screenWhiteThreshold = 1.0;
- urlCommand = NULL;
- movieCommand = NULL;
- mapNumericCharNames = gTrue;
- mapUnknownCharNames = gFalse;
- createDefaultKeyBindings();
- printCommands = gFalse;
- errQuiet = gFalse;
-
- cidToUnicodeCache = new CharCodeToUnicodeCache(cidToUnicodeCacheSize);
- unicodeToUnicodeCache =
- new CharCodeToUnicodeCache(unicodeToUnicodeCacheSize);
- unicodeMapCache = new UnicodeMapCache();
- cMapCache = new CMapCache();
-
-#ifdef WIN32
- winFontList = NULL;
-#endif
-
-#ifdef ENABLE_PLUGINS
- plugins = new GList();
- securityHandlers = new GList();
-#endif
-
- // set up the initial nameToUnicode table
- for (i = 0; nameToUnicodeTab[i].name; ++i) {
- nameToUnicode->add(nameToUnicodeTab[i].name, nameToUnicodeTab[i].u);
- }
-
- // set up the residentUnicodeMaps table
- map = new UnicodeMap("Latin1", gFalse,
- latin1UnicodeMapRanges, latin1UnicodeMapLen);
- residentUnicodeMaps->add(map->getEncodingName(), map);
- map = new UnicodeMap("ASCII7", gFalse,
- ascii7UnicodeMapRanges, ascii7UnicodeMapLen);
- residentUnicodeMaps->add(map->getEncodingName(), map);
- map = new UnicodeMap("Symbol", gFalse,
- symbolUnicodeMapRanges, symbolUnicodeMapLen);
- residentUnicodeMaps->add(map->getEncodingName(), map);
- map = new UnicodeMap("ZapfDingbats", gFalse, zapfDingbatsUnicodeMapRanges,
- zapfDingbatsUnicodeMapLen);
- residentUnicodeMaps->add(map->getEncodingName(), map);
- map = new UnicodeMap("UTF-8", gTrue, &mapUTF8);
- residentUnicodeMaps->add(map->getEncodingName(), map);
- map = new UnicodeMap("UCS-2", gTrue, &mapUCS2);
- residentUnicodeMaps->add(map->getEncodingName(), map);
-
- // look for a user config file, then a system-wide config file
- f = NULL;
- fileName = NULL;
- if (cfgFileName && cfgFileName[0]) {
- fileName = new GString(cfgFileName);
- if (!(f = fopen(fileName->getCString(), "r"))) {
- delete fileName;
- }
- }
- if (!f) {
- fileName = appendToPath(getHomeDir(), xpdfUserConfigFile);
- if (!(f = fopen(fileName->getCString(), "r"))) {
- delete fileName;
- }
- }
- if (!f) {
-#if defined(WIN32) && !defined(__CYGWIN32__)
- char buf[512];
- i = GetModuleFileName(NULL, buf, sizeof(buf));
- if (i <= 0 || i >= sizeof(buf)) {
- // error or path too long for buffer - just use the current dir
- buf[0] = '\0';
- }
- fileName = grabPath(buf);
- appendToPath(fileName, xpdfSysConfigFile);
-#else
- fileName = new GString(xpdfSysConfigFile);
-#endif
- if (!(f = fopen(fileName->getCString(), "r"))) {
- delete fileName;
- }
- }
- if (f) {
- parseFile(fileName, f);
- delete fileName;
- fclose(f);
- }
-}
-
-void GlobalParams::createDefaultKeyBindings() {
- keyBindings = new GList();
-
- //----- mouse buttons
- keyBindings->append(new KeyBinding(xpdfKeyCodeMousePress1, xpdfKeyModNone,
- xpdfKeyContextAny, "startSelection"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeMouseRelease1, xpdfKeyModNone,
- xpdfKeyContextAny, "endSelection",
- "followLinkNoSel"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeMousePress2, xpdfKeyModNone,
- xpdfKeyContextAny, "startPan"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeMouseRelease2, xpdfKeyModNone,
- xpdfKeyContextAny, "endPan"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeMousePress3, xpdfKeyModNone,
- xpdfKeyContextAny, "postPopupMenu"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeMousePress4, xpdfKeyModNone,
- xpdfKeyContextAny,
- "scrollUpPrevPage(16)"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeMousePress5, xpdfKeyModNone,
- xpdfKeyContextAny,
- "scrollDownNextPage(16)"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeMousePress6, xpdfKeyModNone,
- xpdfKeyContextAny, "scrollLeft(16)"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeMousePress7, xpdfKeyModNone,
- xpdfKeyContextAny, "scrollRight(16)"));
-
- //----- keys
- keyBindings->append(new KeyBinding(xpdfKeyCodeHome, xpdfKeyModCtrl,
- xpdfKeyContextAny, "gotoPage(1)"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeHome, xpdfKeyModNone,
- xpdfKeyContextAny, "scrollToTopLeft"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeEnd, xpdfKeyModCtrl,
- xpdfKeyContextAny, "gotoLastPage"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeEnd, xpdfKeyModNone,
- xpdfKeyContextAny,
- "scrollToBottomRight"));
- keyBindings->append(new KeyBinding(xpdfKeyCodePgUp, xpdfKeyModNone,
- xpdfKeyContextAny, "pageUp"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeBackspace, xpdfKeyModNone,
- xpdfKeyContextAny, "pageUp"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeDelete, xpdfKeyModNone,
- xpdfKeyContextAny, "pageUp"));
- keyBindings->append(new KeyBinding(xpdfKeyCodePgDn, xpdfKeyModNone,
- xpdfKeyContextAny, "pageDown"));
- keyBindings->append(new KeyBinding(' ', xpdfKeyModNone,
- xpdfKeyContextAny, "pageDown"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeLeft, xpdfKeyModNone,
- xpdfKeyContextAny, "scrollLeft(16)"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeRight, xpdfKeyModNone,
- xpdfKeyContextAny, "scrollRight(16)"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeUp, xpdfKeyModNone,
- xpdfKeyContextAny, "scrollUp(16)"));
- keyBindings->append(new KeyBinding(xpdfKeyCodeDown, xpdfKeyModNone,
- xpdfKeyContextAny, "scrollDown(16)"));
- keyBindings->append(new KeyBinding('o', xpdfKeyModNone,
- xpdfKeyContextAny, "open"));
- keyBindings->append(new KeyBinding('O', xpdfKeyModNone,
- xpdfKeyContextAny, "open"));
- keyBindings->append(new KeyBinding('r', xpdfKeyModNone,
- xpdfKeyContextAny, "reload"));
- keyBindings->append(new KeyBinding('R', xpdfKeyModNone,
- xpdfKeyContextAny, "reload"));
- keyBindings->append(new KeyBinding('f', xpdfKeyModNone,
- xpdfKeyContextAny, "find"));
- keyBindings->append(new KeyBinding('F', xpdfKeyModNone,
- xpdfKeyContextAny, "find"));
- keyBindings->append(new KeyBinding('f', xpdfKeyModCtrl,
- xpdfKeyContextAny, "find"));
- keyBindings->append(new KeyBinding('g', xpdfKeyModCtrl,
- xpdfKeyContextAny, "findNext"));
- keyBindings->append(new KeyBinding('p', xpdfKeyModCtrl,
- xpdfKeyContextAny, "print"));
- keyBindings->append(new KeyBinding('n', xpdfKeyModNone,
- xpdfKeyContextScrLockOff, "nextPage"));
- keyBindings->append(new KeyBinding('N', xpdfKeyModNone,
- xpdfKeyContextScrLockOff, "nextPage"));
- keyBindings->append(new KeyBinding('n', xpdfKeyModNone,
- xpdfKeyContextScrLockOn,
- "nextPageNoScroll"));
- keyBindings->append(new KeyBinding('N', xpdfKeyModNone,
- xpdfKeyContextScrLockOn,
- "nextPageNoScroll"));
- keyBindings->append(new KeyBinding('p', xpdfKeyModNone,
- xpdfKeyContextScrLockOff, "prevPage"));
- keyBindings->append(new KeyBinding('P', xpdfKeyModNone,
- xpdfKeyContextScrLockOff, "prevPage"));
- keyBindings->append(new KeyBinding('p', xpdfKeyModNone,
- xpdfKeyContextScrLockOn,
- "prevPageNoScroll"));
- keyBindings->append(new KeyBinding('P', xpdfKeyModNone,
- xpdfKeyContextScrLockOn,
- "prevPageNoScroll"));
- keyBindings->append(new KeyBinding('v', xpdfKeyModNone,
- xpdfKeyContextAny, "goForward"));
- keyBindings->append(new KeyBinding('b', xpdfKeyModNone,
- xpdfKeyContextAny, "goBackward"));
- keyBindings->append(new KeyBinding('g', xpdfKeyModNone,
- xpdfKeyContextAny, "focusToPageNum"));
- keyBindings->append(new KeyBinding('0', xpdfKeyModNone,
- xpdfKeyContextAny, "zoomPercent(125)"));
- keyBindings->append(new KeyBinding('+', xpdfKeyModNone,
- xpdfKeyContextAny, "zoomIn"));
- keyBindings->append(new KeyBinding('-', xpdfKeyModNone,
- xpdfKeyContextAny, "zoomOut"));
- keyBindings->append(new KeyBinding('z', xpdfKeyModNone,
- xpdfKeyContextAny, "zoomFitPage"));
- keyBindings->append(new KeyBinding('w', xpdfKeyModNone,
- xpdfKeyContextAny, "zoomFitWidth"));
- keyBindings->append(new KeyBinding('f', xpdfKeyModAlt,
- xpdfKeyContextAny,
- "toggleFullScreenMode"));
- keyBindings->append(new KeyBinding('l', xpdfKeyModCtrl,
- xpdfKeyContextAny, "redraw"));
- keyBindings->append(new KeyBinding('w', xpdfKeyModCtrl,
- xpdfKeyContextAny, "closeWindow"));
- keyBindings->append(new KeyBinding('?', xpdfKeyModNone,
- xpdfKeyContextAny, "about"));
- keyBindings->append(new KeyBinding('q', xpdfKeyModNone,
- xpdfKeyContextAny, "quit"));
- keyBindings->append(new KeyBinding('Q', xpdfKeyModNone,
- xpdfKeyContextAny, "quit"));
-}
-
-void GlobalParams::parseFile(GString *fileName, FILE *f) {
- int line;
- char buf[512];
-
- line = 1;
- while (getLine(buf, sizeof(buf) - 1, f)) {
- parseLine(buf, fileName, line);
- ++line;
- }
-}
-
-void GlobalParams::parseLine(char *buf, GString *fileName, int line) {
- GList *tokens;
- GString *cmd, *incFile;
- char *p1, *p2;
- FILE *f2;
-
- // break the line into tokens
- tokens = new GList();
- p1 = buf;
- while (*p1) {
- for (; *p1 && isspace(*p1); ++p1) ;
- if (!*p1) {
- break;
- }
- if (*p1 == '"' || *p1 == '\'') {
- for (p2 = p1 + 1; *p2 && *p2 != *p1; ++p2) ;
- ++p1;
- } else {
- for (p2 = p1 + 1; *p2 && !isspace(*p2); ++p2) ;
- }
- tokens->append(new GString(p1, p2 - p1));
- p1 = *p2 ? p2 + 1 : p2;
- }
-
- // parse the line
- if (tokens->getLength() > 0 &&
- ((GString *)tokens->get(0))->getChar(0) != '#') {
- cmd = (GString *)tokens->get(0);
- if (!cmd->cmp("include")) {
- if (tokens->getLength() == 2) {
- incFile = (GString *)tokens->get(1);
- if ((f2 = fopen(incFile->getCString(), "r"))) {
- parseFile(incFile, f2);
- fclose(f2);
- } else {
- error(-1, "Couldn't find included config file: '%s' (%s:%d)",
- incFile->getCString(), fileName->getCString(), line);
- }
- } else {
- error(-1, "Bad 'include' config file command (%s:%d)",
- fileName->getCString(), line);
- }
- } else if (!cmd->cmp("nameToUnicode")) {
- parseNameToUnicode(tokens, fileName, line);
- } else if (!cmd->cmp("cidToUnicode")) {
- parseCIDToUnicode(tokens, fileName, line);
- } else if (!cmd->cmp("unicodeToUnicode")) {
- parseUnicodeToUnicode(tokens, fileName, line);
- } else if (!cmd->cmp("unicodeMap")) {
- parseUnicodeMap(tokens, fileName, line);
- } else if (!cmd->cmp("cMapDir")) {
- parseCMapDir(tokens, fileName, line);
- } else if (!cmd->cmp("toUnicodeDir")) {
- parseToUnicodeDir(tokens, fileName, line);
- } else if (!cmd->cmp("displayFontT1")) {
- parseDisplayFont(tokens, displayFonts, displayFontT1, fileName, line);
- } else if (!cmd->cmp("displayFontTT")) {
- parseDisplayFont(tokens, displayFonts, displayFontTT, fileName, line);
- } else if (!cmd->cmp("displayNamedCIDFontT1")) {
- parseDisplayFont(tokens, displayNamedCIDFonts,
- displayFontT1, fileName, line);
- } else if (!cmd->cmp("displayCIDFontT1")) {
- parseDisplayFont(tokens, displayCIDFonts,
- displayFontT1, fileName, line);
- } else if (!cmd->cmp("displayNamedCIDFontTT")) {
- parseDisplayFont(tokens, displayNamedCIDFonts,
- displayFontTT, fileName, line);
- } else if (!cmd->cmp("displayCIDFontTT")) {
- parseDisplayFont(tokens, displayCIDFonts,
- displayFontTT, fileName, line);
- } else if (!cmd->cmp("psFile")) {
- parsePSFile(tokens, fileName, line);
- } else if (!cmd->cmp("psFont")) {
- parsePSFont(tokens, fileName, line);
- } else if (!cmd->cmp("psNamedFont16")) {
- parsePSFont16("psNamedFont16", psNamedFonts16,
- tokens, fileName, line);
- } else if (!cmd->cmp("psFont16")) {
- parsePSFont16("psFont16", psFonts16, tokens, fileName, line);
- } else if (!cmd->cmp("psPaperSize")) {
- parsePSPaperSize(tokens, fileName, line);
- } else if (!cmd->cmp("psImageableArea")) {
- parsePSImageableArea(tokens, fileName, line);
- } else if (!cmd->cmp("psCrop")) {
- parseYesNo("psCrop", &psCrop, tokens, fileName, line);
- } else if (!cmd->cmp("psExpandSmaller")) {
- parseYesNo("psExpandSmaller", &psExpandSmaller,
- tokens, fileName, line);
- } else if (!cmd->cmp("psShrinkLarger")) {
- parseYesNo("psShrinkLarger", &psShrinkLarger, tokens, fileName, line);
- } else if (!cmd->cmp("psCenter")) {
- parseYesNo("psCenter", &psCenter, tokens, fileName, line);
- } else if (!cmd->cmp("psDuplex")) {
- parseYesNo("psDuplex", &psDuplex, tokens, fileName, line);
- } else if (!cmd->cmp("psLevel")) {
- parsePSLevel(tokens, fileName, line);
- } else if (!cmd->cmp("psEmbedType1Fonts")) {
- parseYesNo("psEmbedType1", &psEmbedType1, tokens, fileName, line);
- } else if (!cmd->cmp("psEmbedTrueTypeFonts")) {
- parseYesNo("psEmbedTrueType", &psEmbedTrueType,
- tokens, fileName, line);
- } else if (!cmd->cmp("psEmbedCIDPostScriptFonts")) {
- parseYesNo("psEmbedCIDPostScript", &psEmbedCIDPostScript,
- tokens, fileName, line);
- } else if (!cmd->cmp("psEmbedCIDTrueTypeFonts")) {
- parseYesNo("psEmbedCIDTrueType", &psEmbedCIDTrueType,
- tokens, fileName, line);
- } else if (!cmd->cmp("psPreload")) {
- parseYesNo("psPreload", &psPreload, tokens, fileName, line);
- } else if (!cmd->cmp("psOPI")) {
- parseYesNo("psOPI", &psOPI, tokens, fileName, line);
- } else if (!cmd->cmp("psASCIIHex")) {
- parseYesNo("psASCIIHex", &psASCIIHex, tokens, fileName, line);
- } else if (!cmd->cmp("textEncoding")) {
-// Always use UTF-8 and allow TQString do the magic
-// parseTextEncoding(tokens, fileName, line);
- } else if (!cmd->cmp("textEOL")) {
- parseTextEOL(tokens, fileName, line);
- } else if (!cmd->cmp("textPageBreaks")) {
- parseYesNo("textPageBreaks", &textPageBreaks,
- tokens, fileName, line);
- } else if (!cmd->cmp("textKeepTinyChars")) {
- parseYesNo("textKeepTinyChars", &textKeepTinyChars,
- tokens, fileName, line);
- } else if (!cmd->cmp("fontDir")) {
- parseFontDir(tokens, fileName, line);
- } else if (!cmd->cmp("initialZoom")) {
- parseInitialZoom(tokens, fileName, line);
- } else if (!cmd->cmp("continuousView")) {
- parseYesNo("continuousView", &continuousView, tokens, fileName, line);
- } else if (!cmd->cmp("enableT1lib")) {
- parseYesNo("enableT1lib", &enableT1lib, tokens, fileName, line);
- } else if (!cmd->cmp("enableFreeType")) {
- parseYesNo("enableFreeType", &enableFreeType, tokens, fileName, line);
- } else if (!cmd->cmp("antialias")) {
- parseYesNo("antialias", &antialias, tokens, fileName, line);
- } else if (!cmd->cmp("vectorAntialias")) {
- parseYesNo("vectorAntialias", &vectorAntialias,
- tokens, fileName, line);
- } else if (!cmd->cmp("strokeAdjust")) {
- parseYesNo("strokeAdjust", &strokeAdjust, tokens, fileName, line);
- } else if (!cmd->cmp("screenType")) {
- parseScreenType(tokens, fileName, line);
- } else if (!cmd->cmp("screenSize")) {
- parseInteger("screenSize", &screenSize, tokens, fileName, line);
- } else if (!cmd->cmp("screenDotRadius")) {
- parseInteger("screenDotRadius", &screenDotRadius,
- tokens, fileName, line);
- } else if (!cmd->cmp("screenGamma")) {
- parseFloat("screenGamma", &screenGamma,
- tokens, fileName, line);
- } else if (!cmd->cmp("screenBlackThreshold")) {
- parseFloat("screenBlackThreshold", &screenBlackThreshold,
- tokens, fileName, line);
- } else if (!cmd->cmp("screenWhiteThreshold")) {
- parseFloat("screenWhiteThreshold", &screenWhiteThreshold,
- tokens, fileName, line);
- } else if (!cmd->cmp("urlCommand")) {
- parseCommand("urlCommand", &urlCommand, tokens, fileName, line);
- } else if (!cmd->cmp("movieCommand")) {
- parseCommand("movieCommand", &movieCommand, tokens, fileName, line);
- } else if (!cmd->cmp("mapNumericCharNames")) {
- parseYesNo("mapNumericCharNames", &mapNumericCharNames,
- tokens, fileName, line);
- } else if (!cmd->cmp("mapUnknownCharNames")) {
- parseYesNo("mapUnknownCharNames", &mapUnknownCharNames,
- tokens, fileName, line);
- } else if (!cmd->cmp("bind")) {
- parseBind(tokens, fileName, line);
- } else if (!cmd->cmp("unbind")) {
- parseUnbind(tokens, fileName, line);
- } else if (!cmd->cmp("printCommands")) {
- parseYesNo("printCommands", &printCommands, tokens, fileName, line);
- } else if (!cmd->cmp("errQuiet")) {
- parseYesNo("errQuiet", &errQuiet, tokens, fileName, line);
- } else {
- error(-1, "Unknown config file command '%s' (%s:%d)",
- cmd->getCString(), fileName->getCString(), line);
- if (!cmd->cmp("displayFontX") ||
- !cmd->cmp("displayNamedCIDFontX") ||
- !cmd->cmp("displayCIDFontX")) {
- error(-1, "-- Xpdf no longer supports X fonts");
- } else if (!cmd->cmp("t1libControl") || !cmd->cmp("freetypeControl")) {
- error(-1, "-- The t1libControl and freetypeControl options have been replaced");
- error(-1, " by the enableT1lib, enableFreeType, and antialias options");
- } else if (!cmd->cmp("fontpath") || !cmd->cmp("fontmap")) {
- error(-1, "-- the config file format has changed since Xpdf 0.9x");
- }
- }
- }
-
- deleteGList(tokens, GString);
-}
-
-void GlobalParams::parseNameToUnicode(GList *tokens, GString *fileName,
- int line) {
- GString *name;
- char *tok1, *tok2;
- FILE *f;
- char buf[256];
- int line2;
- Unicode u;
-
- if (tokens->getLength() != 2) {
- error(-1, "Bad 'nameToUnicode' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- name = (GString *)tokens->get(1);
- if (!(f = fopen(name->getCString(), "r"))) {
- error(-1, "Couldn't open 'nameToUnicode' file '%s'",
- name->getCString());
- return;
- }
- line2 = 1;
- while (getLine(buf, sizeof(buf), f)) {
- tok1 = strtok(buf, " \t\r\n");
- tok2 = strtok(NULL, " \t\r\n");
- if (tok1 && tok2) {
- sscanf(tok1, "%x", &u);
- nameToUnicode->add(tok2, u);
- } else {
- error(-1, "Bad line in 'nameToUnicode' file (%s:%d)", name, line2);
- }
- ++line2;
- }
- fclose(f);
-}
-
-void GlobalParams::parseCIDToUnicode(GList *tokens, GString *fileName,
- int line) {
- GString *collection, *name, *old;
-
- if (tokens->getLength() != 3) {
- error(-1, "Bad 'cidToUnicode' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- collection = (GString *)tokens->get(1);
- name = (GString *)tokens->get(2);
- if ((old = (GString *)cidToUnicodes->remove(collection))) {
- delete old;
- }
- cidToUnicodes->add(collection->copy(), name->copy());
-}
-
-void GlobalParams::parseUnicodeToUnicode(GList *tokens, GString *fileName,
- int line) {
- GString *font, *file, *old;
-
- if (tokens->getLength() != 3) {
- error(-1, "Bad 'unicodeToUnicode' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- font = (GString *)tokens->get(1);
- file = (GString *)tokens->get(2);
- if ((old = (GString *)unicodeToUnicodes->remove(font))) {
- delete old;
- }
- unicodeToUnicodes->add(font->copy(), file->copy());
-}
-
-void GlobalParams::parseUnicodeMap(GList *tokens, GString *fileName,
- int line) {
- GString *encodingName, *name, *old;
-
- if (tokens->getLength() != 3) {
- error(-1, "Bad 'unicodeMap' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- encodingName = (GString *)tokens->get(1);
- name = (GString *)tokens->get(2);
- if ((old = (GString *)unicodeMaps->remove(encodingName))) {
- delete old;
- }
- unicodeMaps->add(encodingName->copy(), name->copy());
-}
-
-void GlobalParams::parseCMapDir(GList *tokens, GString *fileName, int line) {
- GString *collection, *dir;
- GList *list;
-
- if (tokens->getLength() != 3) {
- error(-1, "Bad 'cMapDir' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- collection = (GString *)tokens->get(1);
- dir = (GString *)tokens->get(2);
- if (!(list = (GList *)cMapDirs->lookup(collection))) {
- list = new GList();
- cMapDirs->add(collection->copy(), list);
- }
- list->append(dir->copy());
-}
-
-void GlobalParams::parseToUnicodeDir(GList *tokens, GString *fileName,
- int line) {
- if (tokens->getLength() != 2) {
- error(-1, "Bad 'toUnicodeDir' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- toUnicodeDirs->append(((GString *)tokens->get(1))->copy());
-}
-
-void GlobalParams::parseDisplayFont(GList *tokens, GHash *fontHash,
- DisplayFontParamKind kind,
- GString *fileName, int line) {
- DisplayFontParam *param, *old;
- struct stat statbuf;
-
- if (tokens->getLength() < 2) {
- goto err1;
- }
- param = new DisplayFontParam(((GString *)tokens->get(1))->copy(), kind);
-
- switch (kind) {
- case displayFontT1:
- if (tokens->getLength() != 3) {
- goto err2;
- }
- param->t1.fileName = ((GString *)tokens->get(2))->copy();
- if (stat((param->t1.fileName->getCString)(), &statbuf)) {
- delete param; // silently ignore non-existing files
- return;
- }
- break;
- case displayFontTT:
- if (tokens->getLength() < 3) {
- goto err2;
- }
- param->tt.fileName = ((GString *)tokens->get(2))->copy();
- if (stat((param->tt.fileName->getCString)(), &statbuf)) {
- delete param; // silently ignore non-existing files
- return;
- }
- if (tokens->getLength() > 3)
- param->tt.faceIndex = atoi(((GString *)tokens->get(3))->getCString());
- else
- param->tt.faceIndex = 0;
- break;
- }
-
- if ((old = (DisplayFontParam *)fontHash->remove(param->name))) {
- delete old;
- }
- fontHash->add(param->name, param);
- return;
-
- err2:
- delete param;
- err1:
- error(-1, "Bad 'display*Font*' config file command (%s:%d)",
- fileName->getCString(), line);
-}
-
-void GlobalParams::parsePSPaperSize(GList *tokens, GString *fileName,
- int line) {
- GString *tok;
-
- if (tokens->getLength() == 2) {
- tok = (GString *)tokens->get(1);
- if (!setPSPaperSize(tok->getCString())) {
- error(-1, "Bad 'psPaperSize' config file command (%s:%d)",
- fileName->getCString(), line);
- }
- } else if (tokens->getLength() == 3) {
- tok = (GString *)tokens->get(1);
- psPaperWidth = atoi(tok->getCString());
- tok = (GString *)tokens->get(2);
- psPaperHeight = atoi(tok->getCString());
- psImageableLLX = psImageableLLY = 0;
- psImageableURX = psPaperWidth;
- psImageableURY = psPaperHeight;
- } else {
- error(-1, "Bad 'psPaperSize' config file command (%s:%d)",
- fileName->getCString(), line);
- }
-}
-
-void GlobalParams::parsePSImageableArea(GList *tokens, GString *fileName,
- int line) {
- if (tokens->getLength() != 5) {
- error(-1, "Bad 'psImageableArea' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- psImageableLLX = atoi(((GString *)tokens->get(1))->getCString());
- psImageableLLY = atoi(((GString *)tokens->get(2))->getCString());
- psImageableURX = atoi(((GString *)tokens->get(3))->getCString());
- psImageableURY = atoi(((GString *)tokens->get(4))->getCString());
-}
-
-void GlobalParams::parsePSLevel(GList *tokens, GString *fileName, int line) {
- GString *tok;
-
- if (tokens->getLength() != 2) {
- error(-1, "Bad 'psLevel' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- tok = (GString *)tokens->get(1);
- if (!tok->cmp("level1")) {
- psLevel = psLevel1;
- } else if (!tok->cmp("level1sep")) {
- psLevel = psLevel1Sep;
- } else if (!tok->cmp("level2")) {
- psLevel = psLevel2;
- } else if (!tok->cmp("level2sep")) {
- psLevel = psLevel2Sep;
- } else if (!tok->cmp("level3")) {
- psLevel = psLevel3;
- } else if (!tok->cmp("level3Sep")) {
- psLevel = psLevel3Sep;
- } else {
- error(-1, "Bad 'psLevel' config file command (%s:%d)",
- fileName->getCString(), line);
- }
-}
-
-void GlobalParams::parsePSFile(GList *tokens, GString *fileName, int line) {
- if (tokens->getLength() != 2) {
- error(-1, "Bad 'psFile' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- if (psFile) {
- delete psFile;
- }
- psFile = ((GString *)tokens->get(1))->copy();
-}
-
-void GlobalParams::parsePSFont(GList *tokens, GString *fileName, int line) {
- PSFontParam *param;
-
- if (tokens->getLength() != 3) {
- error(-1, "Bad 'psFont' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- param = new PSFontParam(((GString *)tokens->get(1))->copy(), 0,
- ((GString *)tokens->get(2))->copy(), NULL);
- psFonts->add(param->pdfFontName, param);
-}
-
-void GlobalParams::parsePSFont16(char *cmdName, GList *fontList,
- GList *tokens, GString *fileName, int line) {
- PSFontParam *param;
- int wMode;
- GString *tok;
-
- if (tokens->getLength() != 5) {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return;
- }
- tok = (GString *)tokens->get(2);
- if (!tok->cmp("H")) {
- wMode = 0;
- } else if (!tok->cmp("V")) {
- wMode = 1;
- } else {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return;
- }
- param = new PSFontParam(((GString *)tokens->get(1))->copy(),
- wMode,
- ((GString *)tokens->get(3))->copy(),
- ((GString *)tokens->get(4))->copy());
- fontList->append(param);
-}
-
-void GlobalParams::parseTextEncoding(GList *tokens, GString *fileName,
- int line) {
- if (tokens->getLength() != 2) {
- error(-1, "Bad 'textEncoding' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- delete textEncoding;
- textEncoding = ((GString *)tokens->get(1))->copy();
-}
-
-void GlobalParams::parseTextEOL(GList *tokens, GString *fileName, int line) {
- GString *tok;
-
- if (tokens->getLength() != 2) {
- error(-1, "Bad 'textEOL' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- tok = (GString *)tokens->get(1);
- if (!tok->cmp("unix")) {
- textEOL = eolUnix;
- } else if (!tok->cmp("dos")) {
- textEOL = eolDOS;
- } else if (!tok->cmp("mac")) {
- textEOL = eolMac;
- } else {
- error(-1, "Bad 'textEOL' config file command (%s:%d)",
- fileName->getCString(), line);
- }
-}
-
-void GlobalParams::parseFontDir(GList *tokens, GString *fileName, int line) {
- if (tokens->getLength() != 2) {
- error(-1, "Bad 'fontDir' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- fontDirs->append(((GString *)tokens->get(1))->copy());
-}
-
-void GlobalParams::parseInitialZoom(GList *tokens,
- GString *fileName, int line) {
- if (tokens->getLength() != 2) {
- error(-1, "Bad 'initialZoom' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- delete initialZoom;
- initialZoom = ((GString *)tokens->get(1))->copy();
-}
-
-void GlobalParams::parseScreenType(GList *tokens, GString *fileName,
- int line) {
- GString *tok;
-
- if (tokens->getLength() != 2) {
- error(-1, "Bad 'screenType' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- tok = (GString *)tokens->get(1);
- if (!tok->cmp("dispersed")) {
- screenType = screenDispersed;
- } else if (!tok->cmp("clustered")) {
- screenType = screenClustered;
- } else if (!tok->cmp("stochasticClustered")) {
- screenType = screenStochasticClustered;
- } else {
- error(-1, "Bad 'screenType' config file command (%s:%d)",
- fileName->getCString(), line);
- }
-}
-
-void GlobalParams::parseBind(GList *tokens, GString *fileName, int line) {
- KeyBinding *binding;
- GList *cmds;
- int code, mods, context, i;
-
- if (tokens->getLength() < 4) {
- error(-1, "Bad 'bind' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- if (!parseKey((GString *)tokens->get(1), (GString *)tokens->get(2),
- &code, &mods, &context,
- "bind", tokens, fileName, line)) {
- return;
- }
- for (i = 0; i < keyBindings->getLength(); ++i) {
- binding = (KeyBinding *)keyBindings->get(i);
- if (binding->code == code &&
- binding->mods == mods &&
- binding->context == context) {
- delete (KeyBinding *)keyBindings->del(i);
- break;
- }
- }
- cmds = new GList();
- for (i = 3; i < tokens->getLength(); ++i) {
- cmds->append(((GString *)tokens->get(i))->copy());
- }
- keyBindings->append(new KeyBinding(code, mods, context, cmds));
-}
-
-void GlobalParams::parseUnbind(GList *tokens, GString *fileName, int line) {
- KeyBinding *binding;
- int code, mods, context, i;
-
- if (tokens->getLength() != 3) {
- error(-1, "Bad 'unbind' config file command (%s:%d)",
- fileName->getCString(), line);
- return;
- }
- if (!parseKey((GString *)tokens->get(1), (GString *)tokens->get(2),
- &code, &mods, &context,
- "unbind", tokens, fileName, line)) {
- return;
- }
- for (i = 0; i < keyBindings->getLength(); ++i) {
- binding = (KeyBinding *)keyBindings->get(i);
- if (binding->code == code &&
- binding->mods == mods &&
- binding->context == context) {
- delete (KeyBinding *)keyBindings->del(i);
- break;
- }
- }
-}
-
-GBool GlobalParams::parseKey(GString *modKeyStr, GString *contextStr,
- int *code, int *mods, int *context,
- char *cmdName,
- GList * /*tokens*/, GString *fileName, int line) {
- char *p0;
-
- *mods = xpdfKeyModNone;
- p0 = modKeyStr->getCString();
- while (1) {
- if (!strncmp(p0, "shift-", 6)) {
- *mods |= xpdfKeyModShift;
- p0 += 6;
- } else if (!strncmp(p0, "ctrl-", 5)) {
- *mods |= xpdfKeyModCtrl;
- p0 += 5;
- } else if (!strncmp(p0, "alt-", 4)) {
- *mods |= xpdfKeyModAlt;
- p0 += 4;
- } else {
- break;
- }
- }
-
- if (!strcmp(p0, "space")) {
- *code = ' ';
- } else if (!strcmp(p0, "tab")) {
- *code = xpdfKeyCodeTab;
- } else if (!strcmp(p0, "return")) {
- *code = xpdfKeyCodeReturn;
- } else if (!strcmp(p0, "enter")) {
- *code = xpdfKeyCodeEnter;
- } else if (!strcmp(p0, "backspace")) {
- *code = xpdfKeyCodeBackspace;
- } else if (!strcmp(p0, "insert")) {
- *code = xpdfKeyCodeInsert;
- } else if (!strcmp(p0, "delete")) {
- *code = xpdfKeyCodeDelete;
- } else if (!strcmp(p0, "home")) {
- *code = xpdfKeyCodeHome;
- } else if (!strcmp(p0, "end")) {
- *code = xpdfKeyCodeEnd;
- } else if (!strcmp(p0, "pgup")) {
- *code = xpdfKeyCodePgUp;
- } else if (!strcmp(p0, "pgdn")) {
- *code = xpdfKeyCodePgDn;
- } else if (!strcmp(p0, "left")) {
- *code = xpdfKeyCodeLeft;
- } else if (!strcmp(p0, "right")) {
- *code = xpdfKeyCodeRight;
- } else if (!strcmp(p0, "up")) {
- *code = xpdfKeyCodeUp;
- } else if (!strcmp(p0, "down")) {
- *code = xpdfKeyCodeDown;
- } else if (p0[0] == 'f' && p0[1] >= '1' && p0[1] <= '9' && !p0[2]) {
- *code = xpdfKeyCodeF1 + (p0[1] - '1');
- } else if (p0[0] == 'f' &&
- ((p0[1] >= '1' && p0[1] <= '2' && p0[2] >= '0' && p0[2] <= '9') ||
- (p0[1] == '3' && p0[2] >= '0' && p0[2] <= '5')) &&
- !p0[3]) {
- *code = xpdfKeyCodeF1 + 10 * (p0[1] - '0') + (p0[2] - '0') - 1;
- } else if (!strncmp(p0, "mousePress", 10) &&
- p0[10] >= '1' && p0[10] <= '7' && !p0[11]) {
- *code = xpdfKeyCodeMousePress1 + (p0[10] - '1');
- } else if (!strncmp(p0, "mouseRelease", 12) &&
- p0[12] >= '1' && p0[12] <= '7' && !p0[13]) {
- *code = xpdfKeyCodeMouseRelease1 + (p0[12] - '1');
- } else if (*p0 >= 0x20 && *p0 <= 0x7e && !p0[1]) {
- *code = (int)*p0;
- } else {
- error(-1, "Bad key/modifier in '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return gFalse;
- }
-
- p0 = contextStr->getCString();
- if (!strcmp(p0, "any")) {
- *context = xpdfKeyContextAny;
- } else {
- *context = xpdfKeyContextAny;
- while (1) {
- if (!strncmp(p0, "fullScreen", 10)) {
- *context |= xpdfKeyContextFullScreen;
- p0 += 10;
- } else if (!strncmp(p0, "window", 6)) {
- *context |= xpdfKeyContextWindow;
- p0 += 6;
- } else if (!strncmp(p0, "continuous", 10)) {
- *context |= xpdfKeyContextContinuous;
- p0 += 10;
- } else if (!strncmp(p0, "singlePage", 10)) {
- *context |= xpdfKeyContextSinglePage;
- p0 += 10;
- } else if (!strncmp(p0, "overLink", 8)) {
- *context |= xpdfKeyContextOverLink;
- p0 += 8;
- } else if (!strncmp(p0, "offLink", 7)) {
- *context |= xpdfKeyContextOffLink;
- p0 += 7;
- } else if (!strncmp(p0, "outline", 7)) {
- *context |= xpdfKeyContextOutline;
- p0 += 7;
- } else if (!strncmp(p0, "mainWin", 7)) {
- *context |= xpdfKeyContextMainWin;
- p0 += 7;
- } else if (!strncmp(p0, "scrLockOn", 9)) {
- *context |= xpdfKeyContextScrLockOn;
- p0 += 9;
- } else if (!strncmp(p0, "scrLockOff", 10)) {
- *context |= xpdfKeyContextScrLockOff;
- p0 += 10;
- } else {
- error(-1, "Bad context in '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return gFalse;
- }
- if (!*p0) {
- break;
- }
- if (*p0 != ',') {
- error(-1, "Bad context in '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return gFalse;
- }
- ++p0;
- }
- }
-
- return gTrue;
-}
-
-void GlobalParams::parseCommand(char *cmdName, GString **val,
- GList *tokens, GString *fileName, int line) {
- if (tokens->getLength() != 2) {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return;
- }
- if (*val) {
- delete *val;
- }
- *val = ((GString *)tokens->get(1))->copy();
-}
-
-void GlobalParams::parseYesNo(char *cmdName, GBool *flag,
- GList *tokens, GString *fileName, int line) {
- GString *tok;
-
- if (tokens->getLength() != 2) {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return;
- }
- tok = (GString *)tokens->get(1);
- if (!parseYesNo2(tok->getCString(), flag)) {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- }
-}
-
-GBool GlobalParams::parseYesNo2(char *token, GBool *flag) {
- if (!strcmp(token, "yes")) {
- *flag = gTrue;
- } else if (!strcmp(token, "no")) {
- *flag = gFalse;
- } else {
- return gFalse;
- }
- return gTrue;
-}
-
-void GlobalParams::parseInteger(char *cmdName, int *val,
- GList *tokens, GString *fileName, int line) {
- GString *tok;
- int i;
-
- if (tokens->getLength() != 2) {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return;
- }
- tok = (GString *)tokens->get(1);
- if (tok->getLength() == 0) {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return;
- }
- if (tok->getChar(0) == '-') {
- i = 1;
- } else {
- i = 0;
- }
- for (; i < tok->getLength(); ++i) {
- if (tok->getChar(i) < '0' || tok->getChar(i) > '9') {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return;
- }
- }
- *val = atoi(tok->getCString());
-}
-
-void GlobalParams::parseFloat(char *cmdName, double *val,
- GList *tokens, GString *fileName, int line) {
- GString *tok;
- int i;
-
- if (tokens->getLength() != 2) {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return;
- }
- tok = (GString *)tokens->get(1);
- if (tok->getLength() == 0) {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return;
- }
- if (tok->getChar(0) == '-') {
- i = 1;
- } else {
- i = 0;
- }
- for (; i < tok->getLength(); ++i) {
- if (!((tok->getChar(i) >= '0' && tok->getChar(i) <= '9') ||
- tok->getChar(i) == '.')) {
- error(-1, "Bad '%s' config file command (%s:%d)",
- cmdName, fileName->getCString(), line);
- return;
- }
- }
- *val = atof(tok->getCString());
-}
-
-GlobalParams::~GlobalParams() {
- GHashIter *iter;
- GString *key;
- GList *list;
-
- freeBuiltinFontTables();
-
- delete macRomanReverseMap;
-
- delete baseDir;
- delete nameToUnicode;
- deleteGHash(cidToUnicodes, GString);
- deleteGHash(unicodeToUnicodes, GString);
- deleteGHash(residentUnicodeMaps, UnicodeMap);
- deleteGHash(unicodeMaps, GString);
- deleteGList(toUnicodeDirs, GString);
- deleteGHash(displayFonts, DisplayFontParam);
- deleteGHash(displayCIDFonts, DisplayFontParam);
- deleteGHash(displayNamedCIDFonts, DisplayFontParam);
-#ifdef WIN32
- if (winFontList) {
- delete winFontList;
- }
-#endif
- if (psFile) {
- delete psFile;
- }
- deleteGHash(psFonts, PSFontParam);
- deleteGList(psNamedFonts16, PSFontParam);
- deleteGList(psFonts16, PSFontParam);
- delete textEncoding;
- deleteGList(fontDirs, GString);
- delete initialZoom;
- if (urlCommand) {
- delete urlCommand;
- }
- if (movieCommand) {
- delete movieCommand;
- }
- deleteGList(keyBindings, KeyBinding);
-
- cMapDirs->startIter(&iter);
- while (cMapDirs->getNext(&iter, &key, (void **)&list)) {
- deleteGList(list, GString);
- }
- delete cMapDirs;
-
- delete cidToUnicodeCache;
- delete unicodeToUnicodeCache;
- delete unicodeMapCache;
- delete cMapCache;
-
-#ifdef ENABLE_PLUGINS
- delete securityHandlers;
- deleteGList(plugins, Plugin);
-#endif
-
-#if MULTITHREADED
- gDestroyMutex(&mutex);
- gDestroyMutex(&unicodeMapCacheMutex);
- gDestroyMutex(&cMapCacheMutex);
-#endif
-}
-
-//------------------------------------------------------------------------
-
-void GlobalParams::setBaseDir(char *dir) {
- delete baseDir;
- baseDir = new GString(dir);
-}
-
-void GlobalParams::setupBaseFonts(char *dir) {
- GString *fontName;
- GString *fileName;
-#ifdef WIN32
- HMODULE shell32Lib;
- BOOL (__stdcall *SHGetSpecialFolderPathFunc)(HWND hwndOwner,
- LPTSTR lpszPath,
- int nFolder,
- BOOL fCreate);
- char winFontDir[MAX_PATH];
-#endif
- FILE *f;
- DisplayFontParamKind kind;
- DisplayFontParam *dfp;
- int i, j;
-
-#ifdef WIN32
- // SHGetSpecialFolderPath isn't available in older versions of
- // shell32.dll (Win95 and WinNT4), so do a dynamic load
- winFontDir[0] = '\0';
- if ((shell32Lib = LoadLibrary("shell32.dll"))) {
- if ((SHGetSpecialFolderPathFunc =
- (BOOL (__stdcall *)(HWND hwndOwner, LPTSTR lpszPath,
- int nFolder, BOOL fCreate))
- GetProcAddress(shell32Lib, "SHGetSpecialFolderPathA"))) {
- if (!(*SHGetSpecialFolderPathFunc)(NULL, winFontDir,
- CSIDL_FONTS, FALSE)) {
- winFontDir[0] = '\0';
- }
- }
- }
-#endif
- for (i = 0; displayFontTab[i].name; ++i) {
- fontName = new GString(displayFontTab[i].name);
- fileName = NULL;
- kind = displayFontT1; // make gcc happy
- if (dir) {
- fileName = appendToPath(new GString(dir), displayFontTab[i].t1FileName);
- kind = displayFontT1;
- if ((f = fopen(fileName->getCString(), "rb"))) {
- fclose(f);
- } else {
- delete fileName;
- fileName = NULL;
- }
- }
-#ifdef WIN32
- if (!fileName && winFontDir[0] && displayFontTab[i].ttFileName) {
- fileName = appendToPath(new GString(winFontDir),
- displayFontTab[i].ttFileName);
- kind = displayFontTT;
- if ((f = fopen(fileName->getCString(), "rb"))) {
- fclose(f);
- } else {
- delete fileName;
- fileName = NULL;
- }
- }
- // SHGetSpecialFolderPath(CSIDL_FONTS) doesn't work on Win 2k Server
- // or Win2003 Server, or with older versions of shell32.dll, so check
- // the "standard" directories
- if (displayFontTab[i].ttFileName) {
- for (j = 0; !fileName && displayFontDirs[j]; ++j) {
- fileName = appendToPath(new GString(displayFontDirs[j]),
- displayFontTab[i].ttFileName);
- kind = displayFontTT;
- if ((f = fopen(fileName->getCString(), "rb"))) {
- fclose(f);
- } else {
- delete fileName;
- fileName = NULL;
- }
- }
- }
-#else
- for (j = 0; !fileName && displayFontDirs[j]; ++j) {
- fileName = appendToPath(new GString(displayFontDirs[j]),
- displayFontTab[i].t1FileName);
- kind = displayFontT1;
- if ((f = fopen(fileName->getCString(), "rb"))) {
- fclose(f);
- } else {
- delete fileName;
- fileName = NULL;
- }
- }
-#endif
- if (!fileName) {
- error(-1, "No display font for '%s'", displayFontTab[i].name);
- delete fontName;
- continue;
- }
- dfp = new DisplayFontParam(fontName, kind);
- dfp->t1.fileName = fileName;
- globalParams->addDisplayFont(dfp);
- }
-
-#ifdef WIN32
- if (winFontDir[0]) {
- winFontList = new WinFontList(winFontDir);
- }
-#endif
-}
-
-//------------------------------------------------------------------------
-// accessors
-//------------------------------------------------------------------------
-
-CharCode GlobalParams::getMacRomanCharCode(char *charName) {
- // no need to lock - macRomanReverseMap is constant
- return macRomanReverseMap->lookup(charName);
-}
-
-GString *GlobalParams::getBaseDir() {
- GString *s;
-
- lockGlobalParams;
- s = baseDir->copy();
- unlockGlobalParams;
- return s;
-}
-
-Unicode GlobalParams::mapNameToUnicode(char *charName) {
- // no need to lock - nameToUnicode is constant
- return nameToUnicode->lookup(charName);
-}
-
-UnicodeMap *GlobalParams::getResidentUnicodeMap(GString *encodingName) {
- UnicodeMap *map;
-
- lockGlobalParams;
- map = (UnicodeMap *)residentUnicodeMaps->lookup(encodingName);
- unlockGlobalParams;
- if (map) {
- map->incRefCnt();
- }
- return map;
-}
-
-FILE *GlobalParams::getUnicodeMapFile(GString *encodingName) {
- GString *fileName;
- FILE *f;
-
- lockGlobalParams;
- if ((fileName = (GString *)unicodeMaps->lookup(encodingName))) {
- f = fopen(fileName->getCString(), "r");
- } else {
- f = NULL;
- }
- unlockGlobalParams;
- return f;
-}
-
-FILE *GlobalParams::findCMapFile(GString *collection, GString *cMapName) {
- GList *list;
- GString *dir;
- GString *fileName;
- FILE *f;
- int i;
-
- lockGlobalParams;
- if (!(list = (GList *)cMapDirs->lookup(collection))) {
- unlockGlobalParams;
- return NULL;
- }
- for (i = 0; i < list->getLength(); ++i) {
- dir = (GString *)list->get(i);
- fileName = appendToPath(dir->copy(), cMapName->getCString());
- f = fopen(fileName->getCString(), "r");
- delete fileName;
- if (f) {
- unlockGlobalParams;
- return f;
- }
- }
- unlockGlobalParams;
- return NULL;
-}
-
-FILE *GlobalParams::findToUnicodeFile(GString *name) {
- GString *dir, *fileName;
- FILE *f;
- int i;
-
- lockGlobalParams;
- for (i = 0; i < toUnicodeDirs->getLength(); ++i) {
- dir = (GString *)toUnicodeDirs->get(i);
- fileName = appendToPath(dir->copy(), name->getCString());
- f = fopen(fileName->getCString(), "r");
- delete fileName;
- if (f) {
- unlockGlobalParams;
- return f;
- }
- }
- unlockGlobalParams;
- return NULL;
-}
-
-// KPDF: parse xpdf font name into family and style
-// Helvetica-BoldOblique => name=Helvetica, weight=Bold, slant=Oblique
-
-void parseStyle(TQString& name, int& weight, int& slant, int& width)
-{
- if (name.find("MS-") == 0) name = "MS " + name.remove(0,3);
-
- if (!name.contains('-') && !name.contains(',')) return;
- TQString type = name.section(TQRegExp("[-,]"),-1);
- name = name.section(TQRegExp("[-,]"),0,-2);
- if (type.contains("Oblique")) slant=FC_SLANT_OBLIQUE;
- if (type.contains("Italic")) slant=FC_SLANT_ITALIC;
- if (type.contains("Bold")) weight=FC_WEIGHT_BOLD;
- if (type.contains("Light")) weight=FC_WEIGHT_LIGHT;
- if (type.contains("Condensed")) width=FC_WIDTH_CONDENSED;
-}
-
-DisplayFontParam *GlobalParams::getDisplayFont(GString *fontName) {
- DisplayFontParam *dfp;
- FcPattern *p=0,*m=0;
- FcChar8* s;
- char * ext;
- FcResult res;
-
- lockGlobalParams;
- dfp = (DisplayFontParam *)displayFonts->lookup(fontName);
- // KPDF: try to find font using Xft
- if (!dfp) {
- int weight=FC_WEIGHT_MEDIUM, slant=FC_SLANT_ROMAN, width=FC_WIDTH_NORMAL;
- TQString name(fontName->getCString());
-
- parseStyle(name,weight,slant,width);
- p = FcPatternBuild(0,FC_FAMILY,FcTypeString, name.ascii(),
- FC_SLANT, FcTypeInteger, slant, FC_WEIGHT, FcTypeInteger, weight,
- FC_WIDTH, FcTypeInteger, width, FC_LANG, FcTypeString, "xx", (char*)0);
- if (!p) goto fin;
- m = XftFontMatch(tqt_xdisplay(),tqt_xscreen(),p,&res);
- if (!m) goto fin;
- res = FcPatternGetString (m, FC_FILE, 0, &s);
- if (res != FcResultMatch || !s) goto fin;
- ext = rindex((char*)s,'.');
- if (!ext) goto fin;
- if (!strncasecmp(ext,".ttf",4) || !strncasecmp(ext,".ttc",4)) {
- dfp = new DisplayFontParam(fontName->copy(), displayFontTT);
- dfp->tt.fileName = new GString((char*)s);
- FcPatternGetInteger(m, FC_INDEX, 0, &(dfp->tt.faceIndex));
- } else if (!strncasecmp(ext,".pfa",4) || !strncasecmp(ext,".pfb",4)) {
- dfp = new DisplayFontParam(fontName->copy(), displayFontT1);
- dfp->t1.fileName = new GString((char*)s);
- } else goto fin;
- displayFonts->add(dfp->name,dfp);
- }
-fin: unlockGlobalParams;
- if (m) FcPatternDestroy(m);
- if (p) FcPatternDestroy(p);
- return dfp;
-}
-
-DisplayFontParam *GlobalParams::getDisplayCIDFont(GString *fontName,
- GString *collection) {
- DisplayFontParam *dfp;
-
- lockGlobalParams;
- if (!fontName ||
- !(dfp = (DisplayFontParam *)displayNamedCIDFonts->lookup(fontName))) {
- dfp = (DisplayFontParam *)displayCIDFonts->lookup(collection);
- }
- unlockGlobalParams;
- if (!dfp) dfp = getDisplayFont(fontName);
- return dfp;
-}
-
-GString *GlobalParams::getPSFile() {
- GString *s;
-
- lockGlobalParams;
- s = psFile ? psFile->copy() : (GString *)NULL;
- unlockGlobalParams;
- return s;
-}
-
-int GlobalParams::getPSPaperWidth() {
- int w;
-
- lockGlobalParams;
- w = psPaperWidth;
- unlockGlobalParams;
- return w;
-}
-
-int GlobalParams::getPSPaperHeight() {
- int h;
-
- lockGlobalParams;
- h = psPaperHeight;
- unlockGlobalParams;
- return h;
-}
-
-void GlobalParams::getPSImageableArea(int *llx, int *lly, int *urx, int *ury) {
- lockGlobalParams;
- *llx = psImageableLLX;
- *lly = psImageableLLY;
- *urx = psImageableURX;
- *ury = psImageableURY;
- unlockGlobalParams;
-}
-
-GBool GlobalParams::getPSCrop() {
- GBool f;
-
- lockGlobalParams;
- f = psCrop;
- unlockGlobalParams;
- return f;
-}
-
-GBool GlobalParams::getPSExpandSmaller() {
- GBool f;
-
- lockGlobalParams;
- f = psExpandSmaller;
- unlockGlobalParams;
- return f;
-}
-
-GBool GlobalParams::getPSShrinkLarger() {
- GBool f;
-
- lockGlobalParams;
- f = psShrinkLarger;
- unlockGlobalParams;
- return f;
-}
-
-GBool GlobalParams::getPSCenter() {
- GBool f;
-
- lockGlobalParams;
- f = psCenter;
- unlockGlobalParams;
- return f;
-}
-
-GBool GlobalParams::getPSDuplex() {
- GBool d;
-
- lockGlobalParams;
- d = psDuplex;
- unlockGlobalParams;
- return d;
-}
-
-PSLevel GlobalParams::getPSLevel() {
- PSLevel level;
-
- lockGlobalParams;
- level = psLevel;
- unlockGlobalParams;
- return level;
-}
-
-PSFontParam *GlobalParams::getPSFont(GString *fontName) {
- PSFontParam *p;
-
- lockGlobalParams;
- p = (PSFontParam *)psFonts->lookup(fontName);
- unlockGlobalParams;
- return p;
-}
-
-PSFontParam *GlobalParams::getPSFont16(GString *fontName,
- GString *collection, int wMode) {
- PSFontParam *p;
- int i;
-
- lockGlobalParams;
- p = NULL;
- if (fontName) {
- for (i = 0; i < psNamedFonts16->getLength(); ++i) {
- p = (PSFontParam *)psNamedFonts16->get(i);
- if (!p->pdfFontName->cmp(fontName) &&
- p->wMode == wMode) {
- break;
- }
- p = NULL;
- }
- }
- if (!p && collection) {
- for (i = 0; i < psFonts16->getLength(); ++i) {
- p = (PSFontParam *)psFonts16->get(i);
- if (!p->pdfFontName->cmp(collection) &&
- p->wMode == wMode) {
- break;
- }
- p = NULL;
- }
- }
- unlockGlobalParams;
- return p;
-}
-
-GBool GlobalParams::getPSEmbedType1() {
- GBool e;
-
- lockGlobalParams;
- e = psEmbedType1;
- unlockGlobalParams;
- return e;
-}
-
-GBool GlobalParams::getPSEmbedTrueType() {
- GBool e;
-
- lockGlobalParams;
- e = psEmbedTrueType;
- unlockGlobalParams;
- return e;
-}
-
-GBool GlobalParams::getPSEmbedCIDPostScript() {
- GBool e;
-
- lockGlobalParams;
- e = psEmbedCIDPostScript;
- unlockGlobalParams;
- return e;
-}
-
-GBool GlobalParams::getPSEmbedCIDTrueType() {
- GBool e;
-
- lockGlobalParams;
- e = psEmbedCIDTrueType;
- unlockGlobalParams;
- return e;
-}
-
-GBool GlobalParams::getPSPreload() {
- GBool preload;
-
- lockGlobalParams;
- preload = psPreload;
- unlockGlobalParams;
- return preload;
-}
-
-GBool GlobalParams::getPSOPI() {
- GBool opi;
-
- lockGlobalParams;
- opi = psOPI;
- unlockGlobalParams;
- return opi;
-}
-
-GBool GlobalParams::getPSASCIIHex() {
- GBool ah;
-
- lockGlobalParams;
- ah = psASCIIHex;
- unlockGlobalParams;
- return ah;
-}
-
-GString *GlobalParams::getTextEncodingName() {
- GString *s;
-
- lockGlobalParams;
- s = textEncoding->copy();
- unlockGlobalParams;
- return s;
-}
-
-EndOfLineKind GlobalParams::getTextEOL() {
- EndOfLineKind eol;
-
- lockGlobalParams;
- eol = textEOL;
- unlockGlobalParams;
- return eol;
-}
-
-GBool GlobalParams::getTextPageBreaks() {
- GBool pageBreaks;
-
- lockGlobalParams;
- pageBreaks = textPageBreaks;
- unlockGlobalParams;
- return pageBreaks;
-}
-
-GBool GlobalParams::getTextKeepTinyChars() {
- GBool tiny;
-
- lockGlobalParams;
- tiny = textKeepTinyChars;
- unlockGlobalParams;
- return tiny;
-}
-
-GString *GlobalParams::findFontFile(GString *fontName, char **exts) {
- GString *dir, *fileName;
- char **ext;
- FILE *f;
- int i;
-
- lockGlobalParams;
- for (i = 0; i < fontDirs->getLength(); ++i) {
- dir = (GString *)fontDirs->get(i);
- for (ext = exts; *ext; ++ext) {
- fileName = appendToPath(dir->copy(), fontName->getCString());
- fileName->append(*ext);
- if ((f = fopen(fileName->getCString(), "rb"))) {
- fclose(f);
- unlockGlobalParams;
- return fileName;
- }
- delete fileName;
- }
- }
- unlockGlobalParams;
- return NULL;
-}
-
-GString *GlobalParams::getInitialZoom() {
- GString *s;
-
- lockGlobalParams;
- s = initialZoom->copy();
- unlockGlobalParams;
- return s;
-}
-
-GBool GlobalParams::getContinuousView() {
- GBool f;
-
- lockGlobalParams;
- f = continuousView;
- unlockGlobalParams;
- return f;
-}
-
-GBool GlobalParams::getEnableT1lib() {
- GBool f;
-
- lockGlobalParams;
- f = enableT1lib;
- unlockGlobalParams;
- return f;
-}
-
-GBool GlobalParams::getEnableFreeType() {
- GBool f;
-
- lockGlobalParams;
- f = enableFreeType;
- unlockGlobalParams;
- return f;
-}
-
-
-GBool GlobalParams::getAntialias() {
- GBool f;
-
- lockGlobalParams;
- f = antialias;
- unlockGlobalParams;
- return f;
-}
-
-GBool GlobalParams::getVectorAntialias() {
- GBool f;
-
- lockGlobalParams;
- f = vectorAntialias;
- unlockGlobalParams;
- return f;
-}
-
-GBool GlobalParams::getStrokeAdjust() {
- GBool f;
-
- lockGlobalParams;
- f = strokeAdjust;
- unlockGlobalParams;
- return f;
-}
-
-ScreenType GlobalParams::getScreenType() {
- ScreenType t;
-
- lockGlobalParams;
- t = screenType;
- unlockGlobalParams;
- return t;
-}
-
-int GlobalParams::getScreenSize() {
- int size;
-
- lockGlobalParams;
- size = screenSize;
- unlockGlobalParams;
- return size;
-}
-
-int GlobalParams::getScreenDotRadius() {
- int r;
-
- lockGlobalParams;
- r = screenDotRadius;
- unlockGlobalParams;
- return r;
-}
-
-double GlobalParams::getScreenGamma() {
- double gamma;
-
- lockGlobalParams;
- gamma = screenGamma;
- unlockGlobalParams;
- return gamma;
-}
-
-double GlobalParams::getScreenBlackThreshold() {
- double thresh;
-
- lockGlobalParams;
- thresh = screenBlackThreshold;
- unlockGlobalParams;
- return thresh;
-}
-
-double GlobalParams::getScreenWhiteThreshold() {
- double thresh;
-
- lockGlobalParams;
- thresh = screenWhiteThreshold;
- unlockGlobalParams;
- return thresh;
-}
-
-GBool GlobalParams::getMapNumericCharNames() {
- GBool map;
-
- lockGlobalParams;
- map = mapNumericCharNames;
- unlockGlobalParams;
- return map;
-}
-
-GBool GlobalParams::getMapUnknownCharNames() {
- GBool map;
-
- lockGlobalParams;
- map = mapUnknownCharNames;
- unlockGlobalParams;
- return map;
-}
-
-GList *GlobalParams::getKeyBinding(int code, int mods, int context) {
- KeyBinding *binding;
- GList *cmds;
- int modMask;
- int i, j;
-
- lockGlobalParams;
- cmds = NULL;
- // for ASCII chars, ignore the shift modifier
- modMask = code <= 0xff ? ~xpdfKeyModShift : ~0;
- for (i = 0; i < keyBindings->getLength(); ++i) {
- binding = (KeyBinding *)keyBindings->get(i);
- if (binding->code == code &&
- (binding->mods & modMask) == (mods & modMask) &&
- (~binding->context | context) == ~0) {
- cmds = new GList();
- for (j = 0; j < binding->cmds->getLength(); ++j) {
- cmds->append(((GString *)binding->cmds->get(j))->copy());
- }
- break;
- }
- }
- unlockGlobalParams;
- return cmds;
-}
-
-GBool GlobalParams::getPrintCommands() {
- GBool p;
-
- lockGlobalParams;
- p = printCommands;
- unlockGlobalParams;
- return p;
-}
-
-GBool GlobalParams::getErrQuiet() {
- // no locking -- this function may get called from inside a locked
- // section
- return errQuiet;
-}
-
-CharCodeToUnicode *GlobalParams::getCIDToUnicode(GString *collection) {
- GString *fileName;
- CharCodeToUnicode *ctu;
-
- lockGlobalParams;
- if (!(ctu = cidToUnicodeCache->getCharCodeToUnicode(collection))) {
- if ((fileName = (GString *)cidToUnicodes->lookup(collection)) &&
- (ctu = CharCodeToUnicode::parseCIDToUnicode(fileName, collection))) {
- cidToUnicodeCache->add(ctu);
- }
- }
- unlockGlobalParams;
- return ctu;
-}
-
-CharCodeToUnicode *GlobalParams::getUnicodeToUnicode(GString *fontName) {
- CharCodeToUnicode *ctu;
- GHashIter *iter;
- GString *fontPattern, *fileName;
-
- lockGlobalParams;
- fileName = NULL;
- unicodeToUnicodes->startIter(&iter);
- while (unicodeToUnicodes->getNext(&iter, &fontPattern, (void **)&fileName)) {
- if (strstr(fontName->getCString(), fontPattern->getCString())) {
- unicodeToUnicodes->killIter(&iter);
- break;
- }
- fileName = NULL;
- }
- if (fileName) {
- if (!(ctu = unicodeToUnicodeCache->getCharCodeToUnicode(fileName))) {
- if ((ctu = CharCodeToUnicode::parseUnicodeToUnicode(fileName))) {
- unicodeToUnicodeCache->add(ctu);
- }
- }
- } else {
- ctu = NULL;
- }
- unlockGlobalParams;
- return ctu;
-}
-
-UnicodeMap *GlobalParams::getUnicodeMap(GString *encodingName) {
- return getUnicodeMap2(encodingName);
-}
-
-UnicodeMap *GlobalParams::getUnicodeMap2(GString *encodingName) {
- UnicodeMap *map;
-
- if (!(map = getResidentUnicodeMap(encodingName))) {
- lockUnicodeMapCache;
- map = unicodeMapCache->getUnicodeMap(encodingName);
- unlockUnicodeMapCache;
- }
- return map;
-}
-
-CMap *GlobalParams::getCMap(GString *collection, GString *cMapName) {
- CMap *cMap;
-
- lockCMapCache;
- cMap = cMapCache->getCMap(collection, cMapName);
- unlockCMapCache;
- return cMap;
-}
-
-UnicodeMap *GlobalParams::getTextEncoding() {
- return getUnicodeMap2(textEncoding);
-}
-
-//------------------------------------------------------------------------
-// functions to set parameters
-//------------------------------------------------------------------------
-
-void GlobalParams::addDisplayFont(DisplayFontParam *param) {
- DisplayFontParam *old;
-
- lockGlobalParams;
- if ((old = (DisplayFontParam *)displayFonts->remove(param->name))) {
- delete old;
- }
- displayFonts->add(param->name, param);
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSFile(char *file) {
- lockGlobalParams;
- if (psFile) {
- delete psFile;
- }
- psFile = new GString(file);
- unlockGlobalParams;
-}
-
-GBool GlobalParams::setPSPaperSize(char *size) {
- lockGlobalParams;
- if (!strcmp(size, "match")) {
- psPaperWidth = psPaperHeight = -1;
- } else if (!strcmp(size, "letter")) {
- psPaperWidth = 612;
- psPaperHeight = 792;
- } else if (!strcmp(size, "legal")) {
- psPaperWidth = 612;
- psPaperHeight = 1008;
- } else if (!strcmp(size, "A4")) {
- psPaperWidth = 595;
- psPaperHeight = 842;
- } else if (!strcmp(size, "A3")) {
- psPaperWidth = 842;
- psPaperHeight = 1190;
- } else {
- unlockGlobalParams;
- return gFalse;
- }
- psImageableLLX = psImageableLLY = 0;
- psImageableURX = psPaperWidth;
- psImageableURY = psPaperHeight;
- unlockGlobalParams;
- return gTrue;
-}
-
-void GlobalParams::setPSPaperWidth(int width) {
- lockGlobalParams;
- psPaperWidth = width;
- psImageableLLX = 0;
- psImageableURX = psPaperWidth;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSPaperHeight(int height) {
- lockGlobalParams;
- psPaperHeight = height;
- psImageableLLY = 0;
- psImageableURY = psPaperHeight;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSImageableArea(int llx, int lly, int urx, int ury) {
- lockGlobalParams;
- psImageableLLX = llx;
- psImageableLLY = lly;
- psImageableURX = urx;
- psImageableURY = ury;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSCrop(GBool crop) {
- lockGlobalParams;
- psCrop = crop;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSExpandSmaller(GBool expand) {
- lockGlobalParams;
- psExpandSmaller = expand;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSShrinkLarger(GBool shrink) {
- lockGlobalParams;
- psShrinkLarger = shrink;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSCenter(GBool center) {
- lockGlobalParams;
- psCenter = center;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSDuplex(GBool duplex) {
- lockGlobalParams;
- psDuplex = duplex;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSLevel(PSLevel level) {
- lockGlobalParams;
- psLevel = level;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSEmbedType1(GBool embed) {
- lockGlobalParams;
- psEmbedType1 = embed;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSEmbedTrueType(GBool embed) {
- lockGlobalParams;
- psEmbedTrueType = embed;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSEmbedCIDPostScript(GBool embed) {
- lockGlobalParams;
- psEmbedCIDPostScript = embed;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSEmbedCIDTrueType(GBool embed) {
- lockGlobalParams;
- psEmbedCIDTrueType = embed;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSPreload(GBool preload) {
- lockGlobalParams;
- psPreload = preload;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSOPI(GBool opi) {
- lockGlobalParams;
- psOPI = opi;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPSASCIIHex(GBool hex) {
- lockGlobalParams;
- psASCIIHex = hex;
- unlockGlobalParams;
-}
-
-void GlobalParams::setTextEncoding(char *encodingName) {
- lockGlobalParams;
- delete textEncoding;
- textEncoding = new GString(encodingName);
- unlockGlobalParams;
-}
-
-GBool GlobalParams::setTextEOL(char *s) {
- lockGlobalParams;
- if (!strcmp(s, "unix")) {
- textEOL = eolUnix;
- } else if (!strcmp(s, "dos")) {
- textEOL = eolDOS;
- } else if (!strcmp(s, "mac")) {
- textEOL = eolMac;
- } else {
- unlockGlobalParams;
- return gFalse;
- }
- unlockGlobalParams;
- return gTrue;
-}
-
-void GlobalParams::setTextPageBreaks(GBool pageBreaks) {
- lockGlobalParams;
- textPageBreaks = pageBreaks;
- unlockGlobalParams;
-}
-
-void GlobalParams::setTextKeepTinyChars(GBool keep) {
- lockGlobalParams;
- textKeepTinyChars = keep;
- unlockGlobalParams;
-}
-
-void GlobalParams::setInitialZoom(char *s) {
- lockGlobalParams;
- delete initialZoom;
- initialZoom = new GString(s);
- unlockGlobalParams;
-}
-
-void GlobalParams::setContinuousView(GBool cont) {
- lockGlobalParams;
- continuousView = cont;
- unlockGlobalParams;
-}
-
-GBool GlobalParams::setEnableT1lib(char *s) {
- GBool ok;
-
- lockGlobalParams;
- ok = parseYesNo2(s, &enableT1lib);
- unlockGlobalParams;
- return ok;
-}
-
-GBool GlobalParams::setEnableFreeType(char *s) {
- GBool ok;
-
- lockGlobalParams;
- ok = parseYesNo2(s, &enableFreeType);
- unlockGlobalParams;
- return ok;
-}
-
-
-GBool GlobalParams::setAntialias(char *s) {
- GBool ok;
-
- lockGlobalParams;
- ok = parseYesNo2(s, &antialias);
- unlockGlobalParams;
- return ok;
-}
-
-GBool GlobalParams::setVectorAntialias(char *s) {
- GBool ok;
-
- lockGlobalParams;
- ok = parseYesNo2(s, &vectorAntialias);
- unlockGlobalParams;
- return ok;
-}
-
-void GlobalParams::setScreenType(ScreenType t) {
- lockGlobalParams;
- screenType = t;
- unlockGlobalParams;
-}
-
-void GlobalParams::setScreenSize(int size) {
- lockGlobalParams;
- screenSize = size;
- unlockGlobalParams;
-}
-
-void GlobalParams::setScreenDotRadius(int r) {
- lockGlobalParams;
- screenDotRadius = r;
- unlockGlobalParams;
-}
-
-void GlobalParams::setScreenGamma(double gamma) {
- lockGlobalParams;
- screenGamma = gamma;
- unlockGlobalParams;
-}
-
-void GlobalParams::setScreenBlackThreshold(double thresh) {
- lockGlobalParams;
- screenBlackThreshold = thresh;
- unlockGlobalParams;
-}
-
-void GlobalParams::setScreenWhiteThreshold(double thresh) {
- lockGlobalParams;
- screenWhiteThreshold = thresh;
- unlockGlobalParams;
-}
-
-void GlobalParams::setMapNumericCharNames(GBool map) {
- lockGlobalParams;
- mapNumericCharNames = map;
- unlockGlobalParams;
-}
-
-void GlobalParams::setMapUnknownCharNames(GBool map) {
- lockGlobalParams;
- mapUnknownCharNames = map;
- unlockGlobalParams;
-}
-
-void GlobalParams::setPrintCommands(GBool printCommandsA) {
- lockGlobalParams;
- printCommands = printCommandsA;
- unlockGlobalParams;
-}
-
-void GlobalParams::setErrQuiet(GBool errQuietA) {
- lockGlobalParams;
- errQuiet = errQuietA;
- unlockGlobalParams;
-}
-
-void GlobalParams::addSecurityHandler(XpdfSecurityHandler *handler) {
-#ifdef ENABLE_PLUGINS
- lockGlobalParams;
- securityHandlers->append(handler);
- unlockGlobalParams;
-#else
- (void)handler;
-#endif
-}
-
-XpdfSecurityHandler *GlobalParams::getSecurityHandler(char *name) {
-#ifdef ENABLE_PLUGINS
- XpdfSecurityHandler *hdlr;
- int i;
-
- lockGlobalParams;
- for (i = 0; i < securityHandlers->getLength(); ++i) {
- hdlr = (XpdfSecurityHandler *)securityHandlers->get(i);
- if (!strcasecmp(hdlr->name, name)) {
- unlockGlobalParams;
- return hdlr;
- }
- }
- unlockGlobalParams;
-
- if (!loadPlugin("security", name)) {
- return NULL;
- }
-
- lockGlobalParams;
- for (i = 0; i < securityHandlers->getLength(); ++i) {
- hdlr = (XpdfSecurityHandler *)securityHandlers->get(i);
- if (!strcmp(hdlr->name, name)) {
- unlockGlobalParams;
- return hdlr;
- }
- }
- unlockGlobalParams;
-#else
- (void)name;
-#endif
-
- return NULL;
-}
-
-#ifdef ENABLE_PLUGINS
-//------------------------------------------------------------------------
-// plugins
-//------------------------------------------------------------------------
-
-GBool GlobalParams::loadPlugin(char *type, char *name) {
- Plugin *plugin;
-
- if (!(plugin = Plugin::load(type, name))) {
- return gFalse;
- }
- lockGlobalParams;
- plugins->append(plugin);
- unlockGlobalParams;
- return gTrue;
-}
-
-#endif // ENABLE_PLUGINS