source: trunk/poppler/mypoppler/poppler/GlobalParams.h @ 2

Last change on this file since 2 was 2, checked in by Eugene Romanenko, 15 years ago

First import

File size: 10.9 KB
Line 
1//========================================================================
2//
3// GlobalParams.h
4//
5// Copyright 2001-2003 Glyph & Cog, LLC
6//
7//========================================================================
8
9#ifndef GLOBALPARAMS_H
10#define GLOBALPARAMS_H
11
12#ifdef USE_GCC_PRAGMAS
13#pragma interface
14#endif
15
16#include "poppler-config.h"
17#include <stdio.h>
18#include <fontconfig/fontconfig.h>
19#include "goo/gtypes.h"
20#include "CharTypes.h"
21
22#if MULTITHREADED
23#include <goo/GooMutex.h>
24#endif
25
26class GooString;
27class GooList;
28class GooHash;
29class NameToCharCode;
30class CharCodeToUnicode;
31class CharCodeToUnicodeCache;
32class UnicodeMap;
33class UnicodeMapCache;
34class CMap;
35class CMapCache;
36struct XpdfSecurityHandler;
37class GlobalParams;
38class GfxFont;
39
40//------------------------------------------------------------------------
41
42// The global parameters object.
43extern GlobalParams *globalParams;
44
45//------------------------------------------------------------------------
46
47enum DisplayFontParamKind {
48  displayFontT1,
49  displayFontTT
50};
51
52struct DisplayFontParamT1 {
53  GooString *fileName;
54};
55
56struct DisplayFontParamTT {
57  GooString *fileName;
58  int faceIndex;
59};
60
61class DisplayFontParam {
62public:
63
64  GooString *name;              // font name for 8-bit fonts and named
65                                //   CID fonts; collection name for
66                                //   generic CID fonts
67  DisplayFontParamKind kind;
68  union {
69    DisplayFontParamT1 t1;
70    DisplayFontParamTT tt;
71  };
72
73  DisplayFontParam(GooString *nameA, DisplayFontParamKind kindA);
74  ~DisplayFontParam();
75};
76
77//------------------------------------------------------------------------
78
79class PSFontParam {
80public:
81
82  GooString *pdfFontName;               // PDF font name for 8-bit fonts and
83                                //   named 16-bit fonts; char collection
84                                //   name for generic 16-bit fonts
85  int wMode;                    // writing mode (0=horiz, 1=vert) for
86                                //   16-bit fonts
87  GooString *psFontName;                // PostScript font name
88  GooString *encoding;          // encoding, for 16-bit fonts only
89
90  PSFontParam(GooString *pdfFontNameA, int wModeA,
91              GooString *psFontNameA, GooString *encodingA);
92  ~PSFontParam();
93};
94
95//------------------------------------------------------------------------
96
97enum PSLevel {
98  psLevel1,
99  psLevel1Sep,
100  psLevel2,
101  psLevel2Sep,
102  psLevel3,
103  psLevel3Sep
104};
105
106//------------------------------------------------------------------------
107
108enum EndOfLineKind {
109  eolUnix,                      // LF
110  eolDOS,                       // CR+LF
111  eolMac                        // CR
112};
113
114//------------------------------------------------------------------------
115
116class GlobalParams {
117public:
118
119  // Initialize the global parameters by attempting to read a config
120  // file.
121  GlobalParams(char *cfgFileName);
122
123  ~GlobalParams();
124
125  void setBaseDir(char *dir);
126
127  //----- accessors
128
129  CharCode getMacRomanCharCode(char *charName);
130
131  GooString *getBaseDir();
132  Unicode mapNameToUnicode(char *charName);
133  UnicodeMap *getResidentUnicodeMap(GooString *encodingName);
134  FILE *getUnicodeMapFile(GooString *encodingName);
135  FILE *findCMapFile(GooString *collection, GooString *cMapName);
136  FILE *findToUnicodeFile(GooString *name);
137  DisplayFontParam *getDisplayFont(GfxFont *font);
138  GooString *getPSFile();
139  int getPSPaperWidth();
140  int getPSPaperHeight();
141  void getPSImageableArea(int *llx, int *lly, int *urx, int *ury);
142  GBool getPSDuplex();
143  GBool getPSCrop();
144  GBool getPSExpandSmaller();
145  GBool getPSShrinkLarger();
146  GBool getPSCenter();
147  PSLevel getPSLevel();
148  PSFontParam *getPSFont(GooString *fontName);
149  PSFontParam *getPSFont16(GooString *fontName, GooString *collection, int wMode);
150  GBool getPSEmbedType1();
151  GBool getPSEmbedTrueType();
152  GBool getPSEmbedCIDPostScript();
153  GBool getPSEmbedCIDTrueType();
154  GBool getPSOPI();
155  GBool getPSASCIIHex();
156  GooString *getTextEncodingName();
157  EndOfLineKind getTextEOL();
158  GBool getTextPageBreaks();
159  GBool getTextKeepTinyChars();
160  GooString *findFontFile(GooString *fontName, char **exts);
161  GooString *getInitialZoom();
162  GBool getContinuousView();
163  GBool getEnableT1lib();
164  GBool getEnableFreeType();
165  GBool getAntialias();
166  GooString *getURLCommand() { return urlCommand; }
167  GooString *getMovieCommand() { return movieCommand; }
168  GBool getMapNumericCharNames();
169  GBool getPrintCommands();
170  GBool getProfileCommands();
171  GBool getErrQuiet();
172
173  CharCodeToUnicode *getCIDToUnicode(GooString *collection);
174  CharCodeToUnicode *getUnicodeToUnicode(GooString *fontName);
175  UnicodeMap *getUnicodeMap(GooString *encodingName);
176  CMap *getCMap(GooString *collection, GooString *cMapName);
177  UnicodeMap *getTextEncoding();
178#ifdef ENABLE_PLUGINS
179  GBool loadPlugin(char *type, char *name);
180#endif
181
182  //----- functions to set parameters
183
184  void setPSFile(char *file);
185  GBool setPSPaperSize(char *size);
186  void setPSPaperWidth(int width);
187  void setPSPaperHeight(int height);
188  void setPSImageableArea(int llx, int lly, int urx, int ury);
189  void setPSDuplex(GBool duplex);
190  void setPSCrop(GBool crop);
191  void setPSExpandSmaller(GBool expand);
192  void setPSShrinkLarger(GBool shrink);
193  void setPSCenter(GBool center);
194  void setPSLevel(PSLevel level);
195  void setPSEmbedType1(GBool embed);
196  void setPSEmbedTrueType(GBool embed);
197  void setPSEmbedCIDPostScript(GBool embed);
198  void setPSEmbedCIDTrueType(GBool embed);
199  void setPSOPI(GBool opi);
200  void setPSASCIIHex(GBool hex);
201  void setTextEncoding(char *encodingName);
202  GBool setTextEOL(char *s);
203  void setTextPageBreaks(GBool pageBreaks);
204  void setTextKeepTinyChars(GBool keep);
205  void setInitialZoom(char *s);
206  void setContinuousView(GBool cont);
207  GBool setEnableT1lib(char *s);
208  GBool setEnableFreeType(char *s);
209  GBool setAntialias(char *s);
210  void setMapNumericCharNames(GBool map);
211  void setPrintCommands(GBool printCommandsA);
212  void setProfileCommands(GBool profileCommandsA);
213  void setErrQuiet(GBool errQuietA);
214
215  //----- security handlers
216
217  void addSecurityHandler(XpdfSecurityHandler *handler);
218  XpdfSecurityHandler *getSecurityHandler(char *name);
219
220private:
221
222  void parseFile(GooString *fileName, FILE *f);
223  void parseNameToUnicode(GooList *tokens, GooString *fileName, int line);
224  void parseCIDToUnicode(GooList *tokens, GooString *fileName, int line);
225  void parseUnicodeToUnicode(GooList *tokens, GooString *fileName, int line);
226  void parseUnicodeMap(GooList *tokens, GooString *fileName, int line);
227  void parseCMapDir(GooList *tokens, GooString *fileName, int line);
228  void parseToUnicodeDir(GooList *tokens, GooString *fileName, int line);
229  void parsePSFile(GooList *tokens, GooString *fileName, int line);
230  void parsePSPaperSize(GooList *tokens, GooString *fileName, int line);
231  void parsePSImageableArea(GooList *tokens, GooString *fileName, int line);
232  void parsePSLevel(GooList *tokens, GooString *fileName, int line);
233  void parsePSFont(GooList *tokens, GooString *fileName, int line);
234  void parsePSFont16(char *cmdName, GooList *fontList,
235                     GooList *tokens, GooString *fileName, int line);
236  void parseTextEncoding(GooList *tokens, GooString *fileName, int line);
237  void parseTextEOL(GooList *tokens, GooString *fileName, int line);
238  void parseFontDir(GooList *tokens, GooString *fileName, int line);
239  void parseInitialZoom(GooList *tokens, GooString *fileName, int line);
240  void parseCommand(char *cmdName, GooString **val,
241                    GooList *tokens, GooString *fileName, int line);
242  void parseYesNo(char *cmdName, GBool *flag,
243                  GooList *tokens, GooString *fileName, int line);
244  GBool parseYesNo2(char *token, GBool *flag);
245  UnicodeMap *getUnicodeMap2(GooString *encodingName);
246
247  //----- static tables
248
249  NameToCharCode *              // mapping from char name to
250    macRomanReverseMap;         //   MacRomanEncoding index
251
252  //----- user-modifiable settings
253
254  GooString *baseDir;           // base directory - for plugins, etc.
255  NameToCharCode *              // mapping from char name to Unicode
256    nameToUnicode;
257  GooHash *cidToUnicodes;               // files for mappings from char collections
258                                //   to Unicode, indexed by collection name
259                                //   [GooString]
260  GooHash *unicodeToUnicodes;   // files for Unicode-to-Unicode mappings,
261                                //   indexed by font name pattern [GooString]
262  GooHash *residentUnicodeMaps; // mappings from Unicode to char codes,
263                                //   indexed by encoding name [UnicodeMap]
264  GooHash *unicodeMaps;         // files for mappings from Unicode to char
265                                //   codes, indexed by encoding name [GooString]
266  GooHash *cMapDirs;            // list of CMap dirs, indexed by collection
267                                //   name [GooList[GooString]]
268  GooList *toUnicodeDirs;               // list of ToUnicode CMap dirs [GooString]
269  GooHash *displayFonts;                // display font info, indexed by font name
270                                //   [DisplayFontParam]
271  GooString *psFile;            // PostScript file or command (for xpdf)
272  int psPaperWidth;             // paper size, in PostScript points, for
273  int psPaperHeight;            //   PostScript output
274  int psImageableLLX,           // imageable area, in PostScript points,
275      psImageableLLY,           //   for PostScript output
276      psImageableURX,
277      psImageableURY;
278  GBool psCrop;                 // crop PS output to CropBox
279  GBool psExpandSmaller;        // expand smaller pages to fill paper
280  GBool psShrinkLarger;         // shrink larger pages to fit paper
281  GBool psCenter;               // center pages on the paper
282  GBool psDuplex;               // enable duplexing in PostScript?
283  PSLevel psLevel;              // PostScript level to generate
284  GooHash *psFonts;             // PostScript font info, indexed by PDF
285                                //   font name [PSFontParam]
286  GooList *psNamedFonts16;      // named 16-bit fonts [PSFontParam]
287  GooList *psFonts16;           // generic 16-bit fonts [PSFontParam]
288  GBool psEmbedType1;           // embed Type 1 fonts?
289  GBool psEmbedTrueType;        // embed TrueType fonts?
290  GBool psEmbedCIDPostScript;   // embed CID PostScript fonts?
291  GBool psEmbedCIDTrueType;     // embed CID TrueType fonts?
292  GBool psOPI;                  // generate PostScript OPI comments?
293  GBool psASCIIHex;             // use ASCIIHex instead of ASCII85?
294  GooString *textEncoding;      // encoding (unicodeMap) to use for text
295                                //   output
296  EndOfLineKind textEOL;        // type of EOL marker to use for text
297                                //   output
298  GBool textPageBreaks;         // insert end-of-page markers?
299  GBool textKeepTinyChars;      // keep all characters in text output
300  GooList *fontDirs;            // list of font dirs [GooString]
301  GooString *initialZoom;               // initial zoom level
302  GBool continuousView;         // continuous view mode
303  GBool enableT1lib;            // t1lib enable flag
304  GBool enableFreeType;         // FreeType enable flag
305  GBool antialias;              // anti-aliasing enable flag
306  GooString *urlCommand;                // command executed for URL links
307  GooString *movieCommand;      // command executed for movie annotations
308  GBool mapNumericCharNames;    // map numeric char names (from font subsets)?
309  GBool printCommands;          // print the drawing commands
310  GBool profileCommands;        // profile the drawing commands
311  GBool errQuiet;               // suppress error messages?
312
313  CharCodeToUnicodeCache *cidToUnicodeCache;
314  CharCodeToUnicodeCache *unicodeToUnicodeCache;
315  UnicodeMapCache *unicodeMapCache;
316  CMapCache *cMapCache;
317 
318  FcConfig *FCcfg;
319
320#ifdef ENABLE_PLUGINS
321  GList *plugins;               // list of plugins [Plugin]
322  GList *securityHandlers;      // list of loaded security handlers
323                                //   [XpdfSecurityHandler]
324#endif
325
326#if MULTITHREADED
327  GooMutex mutex;
328  GooMutex unicodeMapCacheMutex;
329  GooMutex cMapCacheMutex;
330#endif
331};
332
333#endif
Note: See TracBrowser for help on using the repository browser.