diff options
author | Calvin Morrison <calvin@pobox.com> | 2023-04-05 14:13:39 -0400 |
---|---|---|
committer | Calvin Morrison <calvin@pobox.com> | 2023-04-05 14:13:39 -0400 |
commit | 835e373b3eeaabcd0621ed6798ab500f37982fae (patch) | |
tree | dfa16b0e2e1b4956b38f693220eac4e607802133 /splash/SplashFontFile.h |
Diffstat (limited to 'splash/SplashFontFile.h')
-rw-r--r-- | splash/SplashFontFile.h | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/splash/SplashFontFile.h b/splash/SplashFontFile.h new file mode 100644 index 0000000..133e6ab --- /dev/null +++ b/splash/SplashFontFile.h @@ -0,0 +1,95 @@ +//======================================================================== +// +// SplashFontFile.h +// +// Copyright 2003-2013 Glyph & Cog, LLC +// +//======================================================================== + +#ifndef SPLASHFONTFILE_H +#define SPLASHFONTFILE_H + +#include <aconf.h> + +#ifdef USE_GCC_PRAGMAS +#pragma interface +#endif + +#include "gtypes.h" +#include "SplashTypes.h" + +#if MULTITHREADED +#include "GMutex.h" +#endif + +class GString; +class SplashFontEngine; +class SplashFont; +class SplashFontFileID; + +//------------------------------------------------------------------------ +// SplashFontType +//------------------------------------------------------------------------ + +enum SplashFontType { + splashFontType1, // GfxFontType.fontType1 + splashFontType1C, // GfxFontType.fontType1C + splashFontOpenTypeT1C, // GfxFontType.fontType1COT + splashFontCID, // GfxFontType.fontCIDType0/fontCIDType0C + splashFontOpenTypeCFF, // GfxFontType.fontCIDType0COT + splashFontTrueType // GfxFontType.fontTrueType/fontTrueTypeOT/ + // fontCIDType2/fontCIDType2OT +}; + +//------------------------------------------------------------------------ +// SplashFontFile +//------------------------------------------------------------------------ + +class SplashFontFile { +public: + + virtual ~SplashFontFile(); + + // Create a new SplashFont, i.e., a scaled instance of this font + // file. + virtual SplashFont *makeFont(SplashCoord *mat, SplashCoord *textMat) = 0; + + // Get the font file ID. + SplashFontFileID *getID() { return id; } + + // Increment the reference count. + void incRefCnt(); + + // Decrement the reference count. If the new value is zero, delete + // the SplashFontFile object. + void decRefCnt(); + +protected: + + SplashFontFile(SplashFontFileID *idA, + SplashFontType fontTypeA, +#if LOAD_FONTS_FROM_MEM + GString *fontBufA +#else + char *fileNameA, GBool deleteFileA +#endif + ); + + SplashFontFileID *id; + SplashFontType fontType; +#if LOAD_FONTS_FROM_MEM + GString *fontBuf; +#else + GString *fileName; + GBool deleteFile; +#endif +#if MULTITHREADED + GAtomicCounter refCnt; +#else + int refCnt; +#endif + + friend class SplashFontEngine; +}; + +#endif |