1
//========================================================================
5
// Copyright 2001-2003 Glyph & Cog, LLC
7
//========================================================================
10
#define GLOBALPARAMS_H
14
#ifdef USE_GCC_PRAGMAS
20
#include "CharTypes.h"
30
class CharCodeToUnicode;
31
class CharCodeToUnicodeCache;
33
class UnicodeMapCache;
36
struct XpdfSecurityHandler;
42
//------------------------------------------------------------------------
44
// The global parameters object.
45
extern GlobalParams *globalParams;
47
//------------------------------------------------------------------------
49
enum DisplayFontParamKind {
54
struct DisplayFontParamT1 {
58
struct DisplayFontParamTT {
62
class DisplayFontParam {
65
GString *name; // font name for 8-bit fonts and named
66
// CID fonts; collection name for
68
DisplayFontParamKind kind;
70
DisplayFontParamT1 t1;
71
DisplayFontParamTT tt;
74
DisplayFontParam(GString *nameA, DisplayFontParamKind kindA);
75
virtual ~DisplayFontParam();
78
//------------------------------------------------------------------------
83
GString *pdfFontName; // PDF font name for 8-bit fonts and
84
// named 16-bit fonts; char collection
85
// name for generic 16-bit fonts
86
int wMode; // writing mode (0=horiz, 1=vert) for
88
GString *psFontName; // PostScript font name
89
GString *encoding; // encoding, for 16-bit fonts only
91
PSFontParam(GString *pdfFontNameA, int wModeA,
92
GString *psFontNameA, GString *encodingA);
96
//------------------------------------------------------------------------
107
//------------------------------------------------------------------------
115
//------------------------------------------------------------------------
121
screenStochasticClustered
124
//------------------------------------------------------------------------
129
int code; // 0x20 .. 0xfe = ASCII,
130
// >=0x10000 = special keys, mouse buttons,
131
// etc. (xpdfKeyCode* symbols)
132
int mods; // modifiers (xpdfKeyMod* symbols, or-ed
134
int context; // context (xpdfKeyContext* symbols, or-ed
136
GList *cmds; // list of commands [GString]
138
KeyBinding(int codeA, int modsA, int contextA, char *cmd0);
139
KeyBinding(int codeA, int modsA, int contextA, char *cmd0, char *cmd1);
140
KeyBinding(int codeA, int modsA, int contextA, GList *cmdsA);
144
#define xpdfKeyCodeTab 0x1000
145
#define xpdfKeyCodeReturn 0x1001
146
#define xpdfKeyCodeEnter 0x1002
147
#define xpdfKeyCodeBackspace 0x1003
148
#define xpdfKeyCodeInsert 0x1004
149
#define xpdfKeyCodeDelete 0x1005
150
#define xpdfKeyCodeHome 0x1006
151
#define xpdfKeyCodeEnd 0x1007
152
#define xpdfKeyCodePgUp 0x1008
153
#define xpdfKeyCodePgDn 0x1009
154
#define xpdfKeyCodeLeft 0x100a
155
#define xpdfKeyCodeRight 0x100b
156
#define xpdfKeyCodeUp 0x100c
157
#define xpdfKeyCodeDown 0x100d
158
#define xpdfKeyCodeF1 0x1100
159
#define xpdfKeyCodeF35 0x1122
160
#define xpdfKeyCodeMousePress1 0x2001
161
#define xpdfKeyCodeMousePress2 0x2002
162
#define xpdfKeyCodeMousePress3 0x2003
163
#define xpdfKeyCodeMousePress4 0x2004
164
#define xpdfKeyCodeMousePress5 0x2005
165
#define xpdfKeyCodeMousePress6 0x2006
166
#define xpdfKeyCodeMousePress7 0x2007
167
#define xpdfKeyCodeMouseRelease1 0x2101
168
#define xpdfKeyCodeMouseRelease2 0x2102
169
#define xpdfKeyCodeMouseRelease3 0x2103
170
#define xpdfKeyCodeMouseRelease4 0x2104
171
#define xpdfKeyCodeMouseRelease5 0x2105
172
#define xpdfKeyCodeMouseRelease6 0x2106
173
#define xpdfKeyCodeMouseRelease7 0x2107
174
#define xpdfKeyModNone 0
175
#define xpdfKeyModShift (1 << 0)
176
#define xpdfKeyModCtrl (1 << 1)
177
#define xpdfKeyModAlt (1 << 2)
178
#define xpdfKeyContextAny 0
179
#define xpdfKeyContextFullScreen (1 << 0)
180
#define xpdfKeyContextWindow (2 << 0)
181
#define xpdfKeyContextContinuous (1 << 2)
182
#define xpdfKeyContextSinglePage (2 << 2)
183
#define xpdfKeyContextOverLink (1 << 4)
184
#define xpdfKeyContextOffLink (2 << 4)
185
#define xpdfKeyContextOutline (1 << 6)
186
#define xpdfKeyContextMainWin (2 << 6)
187
#define xpdfKeyContextScrLockOn (1 << 8)
188
#define xpdfKeyContextScrLockOff (2 << 8)
190
//------------------------------------------------------------------------
195
// Initialize the global parameters by attempting to read a config
197
GlobalParams(char *cfgFileName);
201
void setBaseDir(char *dir);
202
void setupBaseFonts(char *dir);
204
void parseLine(char *buf, GString *fileName, int line);
208
CharCode getMacRomanCharCode(char *charName);
210
GString *getBaseDir();
211
Unicode mapNameToUnicode(char *charName);
212
UnicodeMap *getResidentUnicodeMap(GString *encodingName);
213
FILE *getUnicodeMapFile(GString *encodingName);
214
FILE *findCMapFile(GString *collection, GString *cMapName);
215
FILE *findToUnicodeFile(GString *name);
216
DisplayFontParam *getDisplayFont(GString *fontName);
217
DisplayFontParam *getDisplayCIDFont(GString *fontName, GString *collection);
218
GString *getPSFile();
219
int getPSPaperWidth();
220
int getPSPaperHeight();
221
void getPSImageableArea(int *llx, int *lly, int *urx, int *ury);
224
GBool getPSExpandSmaller();
225
GBool getPSShrinkLarger();
227
PSLevel getPSLevel();
228
PSFontParam *getPSFont(GString *fontName);
229
PSFontParam *getPSFont16(GString *fontName, GString *collection, int wMode);
230
GBool getPSEmbedType1();
231
GBool getPSEmbedTrueType();
232
GBool getPSEmbedCIDPostScript();
233
GBool getPSEmbedCIDTrueType();
234
GBool getPSPreload();
236
GBool getPSASCIIHex();
237
GString *getTextEncodingName();
238
EndOfLineKind getTextEOL();
239
GBool getTextPageBreaks();
240
GBool getTextKeepTinyChars();
241
GString *findFontFile(GString *fontName, char **exts);
242
GString *getInitialZoom();
243
GBool getContinuousView();
244
GBool getEnableT1lib();
245
GBool getEnableFreeType();
246
GBool getAntialias();
247
GBool getVectorAntialias();
248
GBool getStrokeAdjust();
249
ScreenType getScreenType();
251
int getScreenDotRadius();
252
double getScreenGamma();
253
double getScreenBlackThreshold();
254
double getScreenWhiteThreshold();
255
GString *getURLCommand() { return urlCommand; }
256
GString *getMovieCommand() { return movieCommand; }
257
GBool getMapNumericCharNames();
258
GBool getMapUnknownCharNames();
259
GList *getKeyBinding(int code, int mods, int context);
260
GBool getPrintCommands();
263
CharCodeToUnicode *getCIDToUnicode(GString *collection);
264
CharCodeToUnicode *getUnicodeToUnicode(GString *fontName);
265
UnicodeMap *getUnicodeMap(GString *encodingName);
266
CMap *getCMap(GString *collection, GString *cMapName);
267
UnicodeMap *getTextEncoding();
269
//----- functions to set parameters
271
void addDisplayFont(DisplayFontParam *param);
272
void setPSFile(char *file);
273
GBool setPSPaperSize(char *size);
274
void setPSPaperWidth(int width);
275
void setPSPaperHeight(int height);
276
void setPSImageableArea(int llx, int lly, int urx, int ury);
277
void setPSDuplex(GBool duplex);
278
void setPSCrop(GBool crop);
279
void setPSExpandSmaller(GBool expand);
280
void setPSShrinkLarger(GBool shrink);
281
void setPSCenter(GBool center);
282
void setPSLevel(PSLevel level);
283
void setPSEmbedType1(GBool embed);
284
void setPSEmbedTrueType(GBool embed);
285
void setPSEmbedCIDPostScript(GBool embed);
286
void setPSEmbedCIDTrueType(GBool embed);
287
void setPSPreload(GBool preload);
288
void setPSOPI(GBool opi);
289
void setPSASCIIHex(GBool hex);
290
void setTextEncoding(char *encodingName);
291
GBool setTextEOL(char *s);
292
void setTextPageBreaks(GBool pageBreaks);
293
void setTextKeepTinyChars(GBool keep);
294
void setInitialZoom(char *s);
295
void setContinuousView(GBool cont);
296
GBool setEnableT1lib(char *s);
297
GBool setEnableFreeType(char *s);
298
GBool setAntialias(char *s);
299
GBool setVectorAntialias(char *s);
300
void setScreenType(ScreenType t);
301
void setScreenSize(int size);
302
void setScreenDotRadius(int r);
303
void setScreenGamma(double gamma);
304
void setScreenBlackThreshold(double thresh);
305
void setScreenWhiteThreshold(double thresh);
306
void setMapNumericCharNames(GBool map);
307
void setMapUnknownCharNames(GBool map);
308
void setPrintCommands(GBool printCommandsA);
309
void setErrQuiet(GBool errQuietA);
311
//----- security handlers
313
void addSecurityHandler(XpdfSecurityHandler *handler);
314
XpdfSecurityHandler *getSecurityHandler(char *name);
318
void createDefaultKeyBindings();
319
void parseFile(GString *fileName, FILE *f);
320
void parseNameToUnicode(GList *tokens, GString *fileName, int line);
321
void parseCIDToUnicode(GList *tokens, GString *fileName, int line);
322
void parseUnicodeToUnicode(GList *tokens, GString *fileName, int line);
323
void parseUnicodeMap(GList *tokens, GString *fileName, int line);
324
void parseCMapDir(GList *tokens, GString *fileName, int line);
325
void parseToUnicodeDir(GList *tokens, GString *fileName, int line);
326
void parseDisplayFont(GList *tokens, GHash *fontHash,
327
DisplayFontParamKind kind,
328
GString *fileName, int line);
329
void parsePSFile(GList *tokens, GString *fileName, int line);
330
void parsePSPaperSize(GList *tokens, GString *fileName, int line);
331
void parsePSImageableArea(GList *tokens, GString *fileName, int line);
332
void parsePSLevel(GList *tokens, GString *fileName, int line);
333
void parsePSFont(GList *tokens, GString *fileName, int line);
334
void parsePSFont16(char *cmdName, GList *fontList,
335
GList *tokens, GString *fileName, int line);
336
void parseTextEncoding(GList *tokens, GString *fileName, int line);
337
void parseTextEOL(GList *tokens, GString *fileName, int line);
338
void parseFontDir(GList *tokens, GString *fileName, int line);
339
void parseInitialZoom(GList *tokens, GString *fileName, int line);
340
void parseScreenType(GList *tokens, GString *fileName, int line);
341
void parseBind(GList *tokens, GString *fileName, int line);
342
void parseUnbind(GList *tokens, GString *fileName, int line);
343
GBool parseKey(GString *modKeyStr, GString *contextStr,
344
int *code, int *mods, int *context,
346
GList *tokens, GString *fileName, int line);
347
void parseCommand(char *cmdName, GString **val,
348
GList *tokens, GString *fileName, int line);
349
void parseYesNo(char *cmdName, GBool *flag,
350
GList *tokens, GString *fileName, int line);
351
GBool parseYesNo2(char *token, GBool *flag);
352
void parseInteger(char *cmdName, int *val,
353
GList *tokens, GString *fileName, int line);
354
void parseFloat(char *cmdName, double *val,
355
GList *tokens, GString *fileName, int line);
356
UnicodeMap *getUnicodeMap2(GString *encodingName);
357
#ifdef ENABLE_PLUGINS
358
GBool loadPlugin(char *type, char *name);
361
//----- static tables
363
NameToCharCode * // mapping from char name to
364
macRomanReverseMap; // MacRomanEncoding index
366
//----- user-modifiable settings
368
GString *baseDir; // base directory - for plugins, etc.
369
NameToCharCode * // mapping from char name to Unicode
371
GHash *cidToUnicodes; // files for mappings from char collections
372
// to Unicode, indexed by collection name
374
GHash *unicodeToUnicodes; // files for Unicode-to-Unicode mappings,
375
// indexed by font name pattern [GString]
376
GHash *residentUnicodeMaps; // mappings from Unicode to char codes,
377
// indexed by encoding name [UnicodeMap]
378
GHash *unicodeMaps; // files for mappings from Unicode to char
379
// codes, indexed by encoding name [GString]
380
GHash *cMapDirs; // list of CMap dirs, indexed by collection
381
// name [GList[GString]]
382
GList *toUnicodeDirs; // list of ToUnicode CMap dirs [GString]
383
GHash *displayFonts; // display font info, indexed by font name
384
// [DisplayFontParam]
386
WinFontList *winFontList; // system TrueType fonts
388
GHash *displayCIDFonts; // display CID font info, indexed by
389
// collection [DisplayFontParam]
390
GHash *displayNamedCIDFonts; // display CID font info, indexed by
391
// font name [DisplayFontParam]
392
GString *psFile; // PostScript file or command (for xpdf)
393
int psPaperWidth; // paper size, in PostScript points, for
394
int psPaperHeight; // PostScript output
395
int psImageableLLX, // imageable area, in PostScript points,
396
psImageableLLY, // for PostScript output
399
GBool psCrop; // crop PS output to CropBox
400
GBool psExpandSmaller; // expand smaller pages to fill paper
401
GBool psShrinkLarger; // shrink larger pages to fit paper
402
GBool psCenter; // center pages on the paper
403
GBool psDuplex; // enable duplexing in PostScript?
404
PSLevel psLevel; // PostScript level to generate
405
GHash *psFonts; // PostScript font info, indexed by PDF
406
// font name [PSFontParam]
407
GList *psNamedFonts16; // named 16-bit fonts [PSFontParam]
408
GList *psFonts16; // generic 16-bit fonts [PSFontParam]
409
GBool psEmbedType1; // embed Type 1 fonts?
410
GBool psEmbedTrueType; // embed TrueType fonts?
411
GBool psEmbedCIDPostScript; // embed CID PostScript fonts?
412
GBool psEmbedCIDTrueType; // embed CID TrueType fonts?
413
GBool psPreload; // preload PostScript images and forms into
415
GBool psOPI; // generate PostScript OPI comments?
416
GBool psASCIIHex; // use ASCIIHex instead of ASCII85?
417
GString *textEncoding; // encoding (unicodeMap) to use for text
419
EndOfLineKind textEOL; // type of EOL marker to use for text
421
GBool textPageBreaks; // insert end-of-page markers?
422
GBool textKeepTinyChars; // keep all characters in text output
423
GList *fontDirs; // list of font dirs [GString]
424
GString *initialZoom; // initial zoom level
425
GBool continuousView; // continuous view mode
426
GBool enableT1lib; // t1lib enable flag
427
GBool enableFreeType; // FreeType enable flag
428
GBool antialias; // font anti-aliasing enable flag
429
GBool vectorAntialias; // vector anti-aliasing enable flag
430
GBool strokeAdjust; // stroke adjustment enable flag
431
ScreenType screenType; // halftone screen type
432
int screenSize; // screen matrix size
433
int screenDotRadius; // screen dot radius
434
double screenGamma; // screen gamma correction
435
double screenBlackThreshold; // screen black clamping threshold
436
double screenWhiteThreshold; // screen white clamping threshold
437
GString *urlCommand; // command executed for URL links
438
GString *movieCommand; // command executed for movie annotations
439
GBool mapNumericCharNames; // map numeric char names (from font subsets)?
440
GBool mapUnknownCharNames; // map unknown char names?
441
GList *keyBindings; // key & mouse button bindings [KeyBinding]
442
GBool printCommands; // print the drawing commands
443
GBool errQuiet; // suppress error messages?
445
CharCodeToUnicodeCache *cidToUnicodeCache;
446
CharCodeToUnicodeCache *unicodeToUnicodeCache;
447
UnicodeMapCache *unicodeMapCache;
448
CMapCache *cMapCache;
450
#ifdef ENABLE_PLUGINS
451
GList *plugins; // list of plugins [Plugin]
452
GList *securityHandlers; // list of loaded security handlers
453
// [XpdfSecurityHandler]
458
GMutex unicodeMapCacheMutex;
459
GMutex cMapCacheMutex;