diff options
Diffstat (limited to 'Build/source/libs/t1lib/t1types.h')
-rw-r--r-- | Build/source/libs/t1lib/t1types.h | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/Build/source/libs/t1lib/t1types.h b/Build/source/libs/t1lib/t1types.h new file mode 100644 index 00000000000..156e702b58a --- /dev/null +++ b/Build/source/libs/t1lib/t1types.h @@ -0,0 +1,224 @@ +/*-------------------------------------------------------------------------- + ----- File: t1types.h + ----- Author: Rainer Menzner (Rainer.Menzner@web.de) + ----- Date: 2001-06-04 + ----- Description: This file is part of the t1-library. It contains + type definitions used by the t1-library. + ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-2001. + As of version 0.5, t1lib is distributed under the + GNU General Public Library Lincense. The + conditions can be found in the files LICENSE and + LGPL, which should reside in the toplevel + directory of the distribution. Please note that + there are parts of t1lib that are subject to + other licenses: + The parseAFM-package is copyrighted by Adobe Systems + Inc. + The type1 rasterizer is copyrighted by IBM and the + X11-consortium. + ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-) + ----- Credits: I want to thank IBM and the X11-consortium for making + their rasterizer freely available. + Also thanks to Piet Tutelaers for his ps2pk, from + which I took the rasterizer sources in a format + independent from X11. + Thanks to all people who make free software living! +--------------------------------------------------------------------------*/ + + +#define T1TYPES_H + + +typedef struct +{ + int flags; + int chars; + int hkern; +} METRICS_ENTRY; + + +typedef struct +{ + char *pFontFileName; /* Pointer to the font's filename */ + char *pAfmFileName; /* Pointer to the afm filename, IFF set explicitly */ + FontInfo *pAFMData; /* A pointer to a struct which gives access to all + the data contained in the .afm-file. If this + pointer is NULL, no .afm-file had been found. + => There's no advanced info on the font available. + */ + psfont *pType1Data; /* A pointer to a struct giving access to all + information contained in the .pfa/.pfb-file. This + is needed! */ + int *pEncMap; /* For fast mapping from charnames to encoding + indices */ + METRICS_ENTRY *pKernMap; /* dito */ + int KernMapSize; + char **pFontEnc; /* This is the pointer to the encoding array + associated with that particular font. If + FontEnc=NULL, it means the internal + (fontspecific) encoding is to be used. */ + char *vm_base; /* The base address of the virtual memory area for this + font. It must be stored in order to be able to realloc + and free those memory areas later. */ + void *pFontSizeDeps; /* This one points to a linked list of structures + which store all font size dependent data. */ + double FontMatrix[4]; /* Two matrices which store the font matrix and special + Transformation to be applied, such as slant and + extend or probably some rotation. */ + double FontTransform[4]; + float slant; /* A slant factor for the font */ + float extend; /* A extension factor for the font */ + float UndrLnPos; /* Parameters for ~lining rules */ + float UndrLnThick; + float OvrLnPos; + float OvrLnThick; + float OvrStrkPos; + float OvrStrkThick; + float StrokeWidth; + float SavedStrokeWidth; + + unsigned short physical; /* This entry is used to decide, whether a + font is associated with an own physical + fontfile, or whether it has been created + as a "logical" font by copying another + "physical" font. */ + unsigned short refcount; /* At load time this counter is set to 1. Every + time, a T1_CopyFont() is executed on this font, + this counter is incremented by 1. This gives + the possibility to decide whether a physical + font is used by some logical font. */ + short space_position; /* The position where "space" is encoded, is saved + in this entry. The space character needs special + treatment. Saving its position here yields faster + execution during rastering of strings with a + user-supplied space-offset! */ + short info_flags; /* Here some info may be stored */ +} FONTPRIVATE; + + +/* A structure representing a matrix */ +typedef struct +{ + double cxx; + double cyx; + double cxy; + double cyy; +} T1_TMATRIX; + + +/* Following struct is used for storing all information for a particular + rendered character glyph */ +typedef struct +{ + char *bits; /* A pointer to the characters local bitmap */ + struct /* A struct containing diverse metric information */ + { + int ascent; + int descent; + int leftSideBearing; + int rightSideBearing; + int advanceX; + int advanceY; + } metrics; + void *pFontCacheInfo; + unsigned long bpp; /* The number of bits that represent 1 pixel */ +} GLYPH; + + + +/* Next comes the struct declaration for FontSizeDeps, which stores size + specific data of a font */ +typedef struct +{ + GLYPH *pFontCache; /* Pointer to the cache area of this + font at this size */ + void *pNextFontSizeDeps; /* A pointer to the next size's + FontSizeDeps-structure. */ + void *pPrevFontSizeDeps; /* A pointer to the previous size's + FontSizeDeps-structure or NULL if + the current is the first. */ + struct XYspace *pCharSpaceLocal; /* This is a scaled version of the + global version for this font. */ + float size; /* The desired size, to be specified + in bp's. */ + int antialias; /* Switch for marking the current size + antialiased */ +} FONTSIZEDEPS; + + + +/* A data type that makes most important information available to user. */ +typedef struct +{ + int width; /* The glyph's width */ + BBox bbox; /* The glyph's bounding box */ + int numchars; /* The number of characters in the glyph (string) */ + int *charpos; /* A pointer to an integer array were the horizontal + positions in (afm units) of the individual + characters in the string are stored */ +} METRICSINFO; + + +/* Handling of outlines: These definitions decouple from the type 1 rasterizers + def's and make the necessary stuff available to end users */ + +#define FRACTBITS 16 /* number of fractional bits in 'fractpel' */ +/* From/to conversion of pels/fractpels */ +#define T1_TOPATHPOINT(p) (((long)p)<<FRACTBITS) +#define PPHALF (1<<(FRACTBITS-1)) +#define T1_NEARESTPOINT(fp) (((fp)+PPHALF)>>FRACTBITS) + +/* A fractional point */ +typedef struct { + long x; + long y; +} T1_PATHPOINT; + + +/* A straight outline segment, stroked or not stroked */ +typedef struct pathsegment { + char type; /* type of segment (line or move) */ + unsigned char flag; /* type1 rasterizer internal stuff */ + short references; /* type1 rasterizer internal stuff */ + unsigned char size; /* size of the structure */ + unsigned char context; /* index to device context */ + struct pathsegment *link; /* pointer to next structure in linked list */ + struct pathsegment *last; /* pointer to last structure in list */ + T1_PATHPOINT dest; /* relative ending location of path segment */ +} T1_PATHSEGMENT; + +/* A third order bezier segment */ +typedef struct bezierpathsegment { + char type; /* type of segment (bezier) */ + unsigned char flag; /* type1 rasterizer internal stuff */ + short references; /* type1 rasterizer internal stuff */ + unsigned char size; /* as with any 'segment' type */ + unsigned char context; /* as with any 'segment' type */ + T1_PATHSEGMENT *link; /* as with any 'segment' type */ + T1_PATHSEGMENT *last; /* as with any 'segment' type */ + T1_PATHPOINT dest; /* ending point (D) */ + T1_PATHPOINT B; /* control point B */ + T1_PATHPOINT C; /* control point C */ +} T1_BEZIERSEGMENT; + +typedef T1_PATHSEGMENT T1_OUTLINE; + + +/* Two structures for handling composite character data */ +/* One structure for each symbol of the composite character */ +typedef struct +{ + int piece; /* the index of the current symbol */ + int deltax; /* horizontal displacement of current symbol in CS */ + int deltay; /* vertical displacement of current symbol in CS */ +} T1_COMP_PIECE; + +/* This one defines the composite character, the number of pieces and how to + access their data. */ +typedef struct +{ + int compchar; /* the base character in the current encoding */ + int numPieces; /* the number of defined pieces including the base char */ + T1_COMP_PIECE *pieces; /* a pointer to the pieces' information */ +} T1_COMP_CHAR_INFO; + |