]> git.ipfire.org Git - thirdparty/cups.git/blob - pdftops/SplashFontEngine.h
Load cups into easysw/current.
[thirdparty/cups.git] / pdftops / SplashFontEngine.h
1 //========================================================================
2 //
3 // SplashFontEngine.h
4 //
5 //========================================================================
6
7 #ifndef SPLASHFONTENGINE_H
8 #define SPLASHFONTENGINE_H
9
10 #include <config.h>
11
12 #ifdef USE_GCC_PRAGMAS
13 #pragma interface
14 #endif
15
16 #include "gtypes.h"
17
18 class SplashT1FontEngine;
19 class SplashFTFontEngine;
20 class SplashDTFontEngine;
21 class SplashDT4FontEngine;
22 class SplashFontFile;
23 class SplashFontFileID;
24 class SplashFont;
25
26 //------------------------------------------------------------------------
27
28 #define splashFontCacheSize 16
29
30 //------------------------------------------------------------------------
31 // SplashFontEngine
32 //------------------------------------------------------------------------
33
34 class SplashFontEngine {
35 public:
36
37 // Create a font engine.
38 SplashFontEngine(
39 #if HAVE_T1LIB_H
40 GBool enableT1lib,
41 #endif
42 #if HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H
43 GBool enableFreeType,
44 #endif
45 GBool aa);
46
47 ~SplashFontEngine();
48
49 // Get a font file from the cache. Returns NULL if there is no
50 // matching entry in the cache.
51 SplashFontFile *getFontFile(SplashFontFileID *id);
52
53 // Load fonts - these create new SplashFontFile objects.
54 SplashFontFile *loadType1Font(SplashFontFileID *idA, char *fileName,
55 GBool deleteFile, char **enc);
56 SplashFontFile *loadType1CFont(SplashFontFileID *idA, char *fileName,
57 GBool deleteFile, char **enc);
58 SplashFontFile *loadCIDFont(SplashFontFileID *idA, char *fileName,
59 GBool deleteFile);
60 SplashFontFile *loadTrueTypeFont(SplashFontFileID *idA, char *fileName,
61 GBool deleteFile,
62 Gushort *codeToGID, int codeToGIDLen);
63
64 // Get a font - this does a cache lookup first, and if not found,
65 // creates a new SplashFont object and adds it to the cache. The
66 // matrix:
67 // [ mat[0] mat[1] ]
68 // [ mat[2] mat[3] ]
69 // specifies the font transform in PostScript style:
70 // [x' y'] = [x y] * mat
71 // Note that the Splash y axis points downward.
72 SplashFont *getFont(SplashFontFile *fontFile, SplashCoord *mat);
73
74 private:
75
76 SplashFont *fontCache[splashFontCacheSize];
77
78 #if HAVE_T1LIB_H
79 SplashT1FontEngine *t1Engine;
80 #endif
81 #if HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H
82 SplashFTFontEngine *ftEngine;
83 #endif
84 };
85
86 #endif