| //======================================================================== |
| // |
| // GlobalParams.h |
| // |
| // Copyright 2001-2003 Glyph & Cog, LLC |
| // |
| //======================================================================== |
| |
| #ifndef GLOBALPARAMS_H |
| #define GLOBALPARAMS_H |
| |
| #ifdef USE_GCC_PRAGMAS |
| #pragma interface |
| #endif |
| |
| #include "poppler-config.h" |
| #include <stdio.h> |
| #include <fontconfig/fontconfig.h> |
| #include "goo/gtypes.h" |
| #include "CharTypes.h" |
| |
| #if MULTITHREADED |
| #include <goo/GooMutex.h> |
| #endif |
| |
| class GooString; |
| class GooList; |
| class GooHash; |
| class NameToCharCode; |
| class CharCodeToUnicode; |
| class CharCodeToUnicodeCache; |
| class UnicodeMap; |
| class UnicodeMapCache; |
| class CMap; |
| class CMapCache; |
| struct XpdfSecurityHandler; |
| class GlobalParams; |
| class GfxFont; |
| |
| //------------------------------------------------------------------------ |
| |
| // The global parameters object. |
| extern GlobalParams *globalParams; |
| |
| //------------------------------------------------------------------------ |
| |
| enum DisplayFontParamKind { |
| displayFontT1, |
| displayFontTT |
| }; |
| |
| struct DisplayFontParamT1 { |
| GooString *fileName; |
| }; |
| |
| struct DisplayFontParamTT { |
| GooString *fileName; |
| int faceIndex; |
| }; |
| |
| class DisplayFontParam { |
| public: |
| |
| GooString *name; // font name for 8-bit fonts and named |
| // CID fonts; collection name for |
| // generic CID fonts |
| DisplayFontParamKind kind; |
| union { |
| DisplayFontParamT1 t1; |
| DisplayFontParamTT tt; |
| }; |
| |
| DisplayFontParam(GooString *nameA, DisplayFontParamKind kindA); |
| ~DisplayFontParam(); |
| }; |
| |
| //------------------------------------------------------------------------ |
| |
| class PSFontParam { |
| public: |
| |
| GooString *pdfFontName; // PDF font name for 8-bit fonts and |
| // named 16-bit fonts; char collection |
| // name for generic 16-bit fonts |
| int wMode; // writing mode (0=horiz, 1=vert) for |
| // 16-bit fonts |
| GooString *psFontName; // PostScript font name |
| GooString *encoding; // encoding, for 16-bit fonts only |
| |
| PSFontParam(GooString *pdfFontNameA, int wModeA, |
| GooString *psFontNameA, GooString *encodingA); |
| ~PSFontParam(); |
| }; |
| |
| //------------------------------------------------------------------------ |
| |
| enum PSLevel { |
| psLevel1, |
| psLevel1Sep, |
| psLevel2, |
| psLevel2Sep, |
| psLevel3, |
| psLevel3Sep |
| }; |
| |
| //------------------------------------------------------------------------ |
| |
| enum EndOfLineKind { |
| eolUnix, // LF |
| eolDOS, // CR+LF |
| eolMac // CR |
| }; |
| |
| //------------------------------------------------------------------------ |
| |
| class GlobalParams { |
| public: |
| |
| // Initialize the global parameters by attempting to read a config |
| // file. |
| GlobalParams(char *cfgFileName); |
| |
| ~GlobalParams(); |
| |
| void setBaseDir(char *dir); |
| |
| //----- accessors |
| |
| CharCode getMacRomanCharCode(char *charName); |
| |
| GooString *getBaseDir(); |
| Unicode mapNameToUnicode(char *charName); |
| UnicodeMap *getResidentUnicodeMap(GooString *encodingName); |
| FILE *getUnicodeMapFile(GooString *encodingName); |
| FILE *findCMapFile(GooString *collection, GooString *cMapName); |
| FILE *findToUnicodeFile(GooString *name); |
| DisplayFontParam *getDisplayFont(GfxFont *font); |
| GooString *getPSFile(); |
| int getPSPaperWidth(); |
| int getPSPaperHeight(); |
| void getPSImageableArea(int *llx, int *lly, int *urx, int *ury); |
| GBool getPSDuplex(); |
| GBool getPSCrop(); |
| GBool getPSExpandSmaller(); |
| GBool getPSShrinkLarger(); |
| GBool getPSCenter(); |
| PSLevel getPSLevel(); |
| PSFontParam *getPSFont(GooString *fontName); |
| PSFontParam *getPSFont16(GooString *fontName, GooString *collection, int wMode); |
| GBool getPSEmbedType1(); |
| GBool getPSEmbedTrueType(); |
| GBool getPSEmbedCIDPostScript(); |
| GBool getPSEmbedCIDTrueType(); |
| GBool getPSOPI(); |
| GBool getPSASCIIHex(); |
| GooString *getTextEncodingName(); |
| EndOfLineKind getTextEOL(); |
| GBool getTextPageBreaks(); |
| GBool getTextKeepTinyChars(); |
| GooString *findFontFile(GooString *fontName, char **exts); |
| GooString *getInitialZoom(); |
| GBool getContinuousView(); |
| GBool getEnableT1lib(); |
| GBool getEnableFreeType(); |
| GBool getAntialias(); |
| GooString *getURLCommand() { return urlCommand; } |
| GooString *getMovieCommand() { return movieCommand; } |
| GBool getMapNumericCharNames(); |
| GBool getPrintCommands(); |
| GBool getProfileCommands(); |
| GBool getErrQuiet(); |
| |
| CharCodeToUnicode *getCIDToUnicode(GooString *collection); |
| CharCodeToUnicode *getUnicodeToUnicode(GooString *fontName); |
| UnicodeMap *getUnicodeMap(GooString *encodingName); |
| CMap *getCMap(GooString *collection, GooString *cMapName); |
| UnicodeMap *getTextEncoding(); |
| #ifdef ENABLE_PLUGINS |
| GBool loadPlugin(char *type, char *name); |
| #endif |
| |
| //----- functions to set parameters |
| |
| void setPSFile(char *file); |
| GBool setPSPaperSize(char *size); |
| void setPSPaperWidth(int width); |
| void setPSPaperHeight(int height); |
| void setPSImageableArea(int llx, int lly, int urx, int ury); |
| void setPSDuplex(GBool duplex); |
| void setPSCrop(GBool crop); |
| void setPSExpandSmaller(GBool expand); |
| void setPSShrinkLarger(GBool shrink); |
| void setPSCenter(GBool center); |
| void setPSLevel(PSLevel level); |
| void setPSEmbedType1(GBool embed); |
| void setPSEmbedTrueType(GBool embed); |
| void setPSEmbedCIDPostScript(GBool embed); |
| void setPSEmbedCIDTrueType(GBool embed); |
| void setPSOPI(GBool opi); |
| void setPSASCIIHex(GBool hex); |
| void setTextEncoding(char *encodingName); |
| GBool setTextEOL(char *s); |
| void setTextPageBreaks(GBool pageBreaks); |
| void setTextKeepTinyChars(GBool keep); |
| void setInitialZoom(char *s); |
| void setContinuousView(GBool cont); |
| GBool setEnableT1lib(char *s); |
| GBool setEnableFreeType(char *s); |
| GBool setAntialias(char *s); |
| void setMapNumericCharNames(GBool map); |
| void setPrintCommands(GBool printCommandsA); |
| void setProfileCommands(GBool profileCommandsA); |
| void setErrQuiet(GBool errQuietA); |
| |
| //----- security handlers |
| |
| void addSecurityHandler(XpdfSecurityHandler *handler); |
| XpdfSecurityHandler *getSecurityHandler(char *name); |
| |
| private: |
| |
| void parseFile(GooString *fileName, FILE *f); |
| void parseNameToUnicode(GooList *tokens, GooString *fileName, int line); |
| void parseCIDToUnicode(GooList *tokens, GooString *fileName, int line); |
| void parseUnicodeToUnicode(GooList *tokens, GooString *fileName, int line); |
| void parseUnicodeMap(GooList *tokens, GooString *fileName, int line); |
| void parseCMapDir(GooList *tokens, GooString *fileName, int line); |
| void parseToUnicodeDir(GooList *tokens, GooString *fileName, int line); |
| void parsePSFile(GooList *tokens, GooString *fileName, int line); |
| void parsePSPaperSize(GooList *tokens, GooString *fileName, int line); |
| void parsePSImageableArea(GooList *tokens, GooString *fileName, int line); |
| void parsePSLevel(GooList *tokens, GooString *fileName, int line); |
| void parsePSFont(GooList *tokens, GooString *fileName, int line); |
| void parsePSFont16(char *cmdName, GooList *fontList, |
| GooList *tokens, GooString *fileName, int line); |
| void parseTextEncoding(GooList *tokens, GooString *fileName, int line); |
| void parseTextEOL(GooList *tokens, GooString *fileName, int line); |
| void parseFontDir(GooList *tokens, GooString *fileName, int line); |
| void parseInitialZoom(GooList *tokens, GooString *fileName, int line); |
| void parseCommand(char *cmdName, GooString **val, |
| GooList *tokens, GooString *fileName, int line); |
| void parseYesNo(char *cmdName, GBool *flag, |
| GooList *tokens, GooString *fileName, int line); |
| GBool parseYesNo2(char *token, GBool *flag); |
| UnicodeMap *getUnicodeMap2(GooString *encodingName); |
| |
| //----- static tables |
| |
| NameToCharCode * // mapping from char name to |
| macRomanReverseMap; // MacRomanEncoding index |
| |
| //----- user-modifiable settings |
| |
| GooString *baseDir; // base directory - for plugins, etc. |
| NameToCharCode * // mapping from char name to Unicode |
| nameToUnicode; |
| GooHash *cidToUnicodes; // files for mappings from char collections |
| // to Unicode, indexed by collection name |
| // [GooString] |
| GooHash *unicodeToUnicodes; // files for Unicode-to-Unicode mappings, |
| // indexed by font name pattern [GooString] |
| GooHash *residentUnicodeMaps; // mappings from Unicode to char codes, |
| // indexed by encoding name [UnicodeMap] |
| GooHash *unicodeMaps; // files for mappings from Unicode to char |
| // codes, indexed by encoding name [GooString] |
| GooHash *cMapDirs; // list of CMap dirs, indexed by collection |
| // name [GooList[GooString]] |
| GooList *toUnicodeDirs; // list of ToUnicode CMap dirs [GooString] |
| GooHash *displayFonts; // display font info, indexed by font name |
| // [DisplayFontParam] |
| GooString *psFile; // PostScript file or command (for xpdf) |
| int psPaperWidth; // paper size, in PostScript points, for |
| int psPaperHeight; // PostScript output |
| int psImageableLLX, // imageable area, in PostScript points, |
| psImageableLLY, // for PostScript output |
| psImageableURX, |
| psImageableURY; |
| GBool psCrop; // crop PS output to CropBox |
| GBool psExpandSmaller; // expand smaller pages to fill paper |
| GBool psShrinkLarger; // shrink larger pages to fit paper |
| GBool psCenter; // center pages on the paper |
| GBool psDuplex; // enable duplexing in PostScript? |
| PSLevel psLevel; // PostScript level to generate |
| GooHash *psFonts; // PostScript font info, indexed by PDF |
| // font name [PSFontParam] |
| GooList *psNamedFonts16; // named 16-bit fonts [PSFontParam] |
| GooList *psFonts16; // generic 16-bit fonts [PSFontParam] |
| GBool psEmbedType1; // embed Type 1 fonts? |
| GBool psEmbedTrueType; // embed TrueType fonts? |
| GBool psEmbedCIDPostScript; // embed CID PostScript fonts? |
| GBool psEmbedCIDTrueType; // embed CID TrueType fonts? |
| GBool psOPI; // generate PostScript OPI comments? |
| GBool psASCIIHex; // use ASCIIHex instead of ASCII85? |
| GooString *textEncoding; // encoding (unicodeMap) to use for text |
| // output |
| EndOfLineKind textEOL; // type of EOL marker to use for text |
| // output |
| GBool textPageBreaks; // insert end-of-page markers? |
| GBool textKeepTinyChars; // keep all characters in text output |
| GooList *fontDirs; // list of font dirs [GooString] |
| GooString *initialZoom; // initial zoom level |
| GBool continuousView; // continuous view mode |
| GBool enableT1lib; // t1lib enable flag |
| GBool enableFreeType; // FreeType enable flag |
| GBool antialias; // anti-aliasing enable flag |
| GooString *urlCommand; // command executed for URL links |
| GooString *movieCommand; // command executed for movie annotations |
| GBool mapNumericCharNames; // map numeric char names (from font subsets)? |
| GBool printCommands; // print the drawing commands |
| GBool profileCommands; // profile the drawing commands |
| GBool errQuiet; // suppress error messages? |
| |
| CharCodeToUnicodeCache *cidToUnicodeCache; |
| CharCodeToUnicodeCache *unicodeToUnicodeCache; |
| UnicodeMapCache *unicodeMapCache; |
| CMapCache *cMapCache; |
| |
| FcConfig *FCcfg; |
| |
| #ifdef ENABLE_PLUGINS |
| GList *plugins; // list of plugins [Plugin] |
| GList *securityHandlers; // list of loaded security handlers |
| // [XpdfSecurityHandler] |
| #endif |
| |
| #if MULTITHREADED |
| GooMutex mutex; |
| GooMutex unicodeMapCacheMutex; |
| GooMutex cMapCacheMutex; |
| #endif |
| }; |
| |
| #endif |