X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2Fxpdf%2FGlobalParams.h;fp=pdf2swf%2Fxpdf%2FGlobalParams.h;h=b65111091a95d0b4cb418b6da74bec376a0b9dd6;hb=3df3a8d12d7a516579a4eae276b077c015df0f70;hp=0000000000000000000000000000000000000000;hpb=50dd339d3d6262763616efe8d7ee415ab19befb9;p=swftools.git diff --git a/pdf2swf/xpdf/GlobalParams.h b/pdf2swf/xpdf/GlobalParams.h new file mode 100644 index 0000000..b651110 --- /dev/null +++ b/pdf2swf/xpdf/GlobalParams.h @@ -0,0 +1,273 @@ +//======================================================================== +// +// GlobalParams.h +// +// Copyright 2001-2002 Glyph & Cog, LLC +// +//======================================================================== + +#ifndef GLOBALPARAMS_H +#define GLOBALPARAMS_H + +#ifdef __GNUC__ +#pragma interface +#endif + +#include +#include "gtypes.h" +#include "CharTypes.h" + +class GString; +class GList; +class GHash; +class NameToCharCode; +class CharCodeToUnicode; +class CIDToUnicodeCache; +class UnicodeMap; +class UnicodeMapCache; +class CMap; +class CMapCache; +class GlobalParams; + +//------------------------------------------------------------------------ + +// The global parameters object. +extern GlobalParams *globalParams; + +//------------------------------------------------------------------------ + +enum DisplayFontParamKind { + displayFontX, + displayFontT1, + displayFontTT +}; + +class DisplayFontParam { +public: + + GString *name; // font name for 8-bit fonts and named + // CID fonts; collection name for + // generic CID fonts + DisplayFontParamKind kind; + union { + struct { + GString *xlfd; + GString *encoding; + } x; + struct { + GString *fileName; + } t1; + struct { + GString *fileName; + } tt; + }; + + DisplayFontParam(GString *nameA, DisplayFontParamKind kindA); + DisplayFontParam(char *nameA, char *xlfdA, char *encodingA); + ~DisplayFontParam(); +}; + +// Font rasterizer control. +enum FontRastControl { + fontRastNone, // don't use this rasterizer + fontRastPlain, // use it, without anti-aliasing + fontRastAALow, // use it, with low-level anti-aliasing + fontRastAAHigh // use it, with high-level anti-aliasing +}; + +//------------------------------------------------------------------------ + +class PSFontParam { +public: + + GString *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 + GString *psFontName; // PostScript font name + GString *encoding; // encoding, for 16-bit fonts only + + PSFontParam(GString *pdfFontNameA, int wModeA, + GString *psFontNameA, GString *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(); + + //----- accessors + + CharCode getMacRomanCharCode(char *charName); + + Unicode mapNameToUnicode(char *charName); + FILE *getCIDToUnicodeFile(GString *collection); + UnicodeMap *getResidentUnicodeMap(GString *encodingName); + FILE *getUnicodeMapFile(GString *encodingName); + FILE *findCMapFile(GString *collection, GString *cMapName); + FILE *findToUnicodeFile(GString *name); + DisplayFontParam *getDisplayFont(GString *fontName); + DisplayFontParam *getDisplayCIDFont(GString *fontName, GString *collection); + GString *getPSFile() { return psFile; } + int getPSPaperWidth() { return psPaperWidth; } + int getPSPaperHeight() { return psPaperHeight; } + GBool getPSDuplex() { return psDuplex; } + PSLevel getPSLevel() { return psLevel; } + PSFontParam *getPSFont(GString *fontName); + PSFontParam *getPSFont16(GString *fontName, GString *collection, int wMode); + GBool getPSEmbedType1() { return psEmbedType1; } + GBool getPSEmbedTrueType() { return psEmbedTrueType; } + GBool getPSEmbedCIDPostScript() { return psEmbedCIDPostScript; } + GBool getPSEmbedCIDTrueType() { return psEmbedCIDTrueType; } + GBool getPSOPI() { return psOPI; } + GBool getPSASCIIHex() { return psASCIIHex; } + GString *getTextEncodingName() { return textEncoding; } + EndOfLineKind getTextEOL() { return textEOL; } + GString *findFontFile(GString *fontName, char *ext1, char *ext2); + GString *getInitialZoom() { return initialZoom; } + FontRastControl getT1libControl() { return t1libControl; } + FontRastControl getFreeTypeControl() { return freetypeControl; } + GString *getURLCommand() { return urlCommand; } + GBool getMapNumericCharNames() { return mapNumericCharNames; } + GBool getErrQuiet() { return errQuiet; } + + CharCodeToUnicode *getCIDToUnicode(GString *collection); + UnicodeMap *getUnicodeMap(GString *encodingName); + CMap *getCMap(GString *collection, GString *cMapName); + UnicodeMap *getTextEncoding(); + + //----- functions to set parameters + + void setPSFile(char *file); + GBool setPSPaperSize(char *size); + void setPSPaperWidth(int width); + void setPSPaperHeight(int height); + void setPSDuplex(GBool duplex); + 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 setInitialZoom(char *s); + GBool setT1libControl(char *s); + GBool setFreeTypeControl(char *s); + void setErrQuiet(GBool errQuietA); + +private: + + void parseFile(GString *fileName, FILE *f); + void parseNameToUnicode(GList *tokens, GString *fileName, int line); + void parseCIDToUnicode(GList *tokens, GString *fileName, int line); + void parseUnicodeMap(GList *tokens, GString *fileName, int line); + void parseCMapDir(GList *tokens, GString *fileName, int line); + void parseToUnicodeDir(GList *tokens, GString *fileName, int line); + void parseDisplayFont(GList *tokens, GHash *fontHash, + DisplayFontParamKind kind, + GString *fileName, int line); + void parsePSFile(GList *tokens, GString *fileName, int line); + void parsePSPaperSize(GList *tokens, GString *fileName, int line); + void parsePSLevel(GList *tokens, GString *fileName, int line); + void parsePSFont(GList *tokens, GString *fileName, int line); + void parsePSFont16(char *cmdName, GList *fontList, + GList *tokens, GString *fileName, int line); + void parseTextEncoding(GList *tokens, GString *fileName, int line); + void parseTextEOL(GList *tokens, GString *fileName, int line); + void parseFontDir(GList *tokens, GString *fileName, int line); + void parseInitialZoom(GList *tokens, GString *fileName, int line); + void parseFontRastControl(char *cmdName, FontRastControl *val, + GList *tokens, GString *fileName, int line); + void parseURLCommand(GList *tokens, GString *fileName, int line); + void parseYesNo(char *cmdName, GBool *flag, + GList *tokens, GString *fileName, int line); + GBool setFontRastControl(FontRastControl *val, char *s); + + //----- static tables + + NameToCharCode * // mapping from char name to + macRomanReverseMap; // MacRomanEncoding index + + //----- user-modifiable settings + + NameToCharCode * // mapping from char name to Unicode + nameToUnicode; + GHash *cidToUnicodes; // files for mappings from char collections + // to Unicode, indexed by collection name + // [GString] + GHash *residentUnicodeMaps; // mappings from Unicode to char codes, + // indexed by encoding name [UnicodeMap] + GHash *unicodeMaps; // files for mappings from Unicode to char + // codes, indexed by encoding name [GString] + GHash *cMapDirs; // list of CMap dirs, indexed by collection + // name [GList[GString]] + GList *toUnicodeDirs; // list of ToUnicode CMap dirs [GString] + GHash *displayFonts; // display font info, indexed by font name + // [DisplayFontParam] + GHash *displayCIDFonts; // display CID font info, indexed by + // collection [DisplayFontParam] + GHash *displayNamedCIDFonts; // display CID font info, indexed by + // font name [DisplayFontParam] + GString *psFile; // PostScript file or command (for xpdf) + int psPaperWidth; // paper size, in PostScript points, for + int psPaperHeight; // PostScript output + GBool psDuplex; // enable duplexing in PostScript? + PSLevel psLevel; // PostScript level to generate + GHash *psFonts; // PostScript font info, indexed by PDF + // font name [PSFontParam] + GList *psNamedFonts16; // named 16-bit fonts [PSFontParam] + GList *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? + GString *textEncoding; // encoding (unicodeMap) to use for text + // output + EndOfLineKind textEOL; // type of EOL marker to use for text + // output + GList *fontDirs; // list of font dirs [GString] + GString *initialZoom; // initial zoom level + FontRastControl t1libControl; // t1lib rasterization mode + FontRastControl // FreeType rasterization mode + freetypeControl; + GString *urlCommand; // command executed for URL links + GBool mapNumericCharNames; // map numeric char names (from font subsets)? + GBool errQuiet; // suppress error messages? + + CIDToUnicodeCache *cidToUnicodeCache; + UnicodeMapCache *unicodeMapCache; + CMapCache *cMapCache; +}; + +#endif