X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fttf.h;h=49a3869a3de1725d9a6660167dbbf6db2cc8c347;hb=0c01fa32c7e0629ae61992e0419f03724fc18487;hp=2ea45be926f220cc29ced99bd2c378f38cc02189;hpb=3ef71393f70213eb53db552605ae3c93f1303ee9;p=ttedit diff --git a/src/ttf.h b/src/ttf.h index 2ea45be..49a3869 100755 --- a/src/ttf.h +++ b/src/ttf.h @@ -8,35 +8,28 @@ // TTF database. // -// These really shouldn't be included here, but are for now... -//#include -////#include // This is needed only for things like BOOL, etc. -//#include -//#include -//#include // Both for malloc, free, _msize, realloc - #ifndef __TTF_H__ #define __TTF_H__ +#include #include "list.h" -#include "types.h" #include "glyphpoints.h" #define MAXGLYPHS 4096 // Number of glyphs in object #define MAXPOINTS 2000 // Number of points in a glyph -#define MAXHINTS 2000 // Number of hint uint8s in glyph +#define MAXHINTS 2000 // Number of hint uint8_ts in glyph // // "head" struct // struct Head { - uint32 version; // Fixed - Table version number (0x00010000 for version 1.0.) - uint32 fontRevision; // Fixed - fontRevision (Set by font manufacturer.) - uint32 checkSumAdjustment; // To compute: Set it to 0, sum the entire font + uint32_t version; // Fixed - Table version number (0x00010000 for version 1.0.) + uint32_t fontRevision; // Fixed - fontRevision (Set by font manufacturer.) + uint32_t checkSumAdjustment; // To compute: Set it to 0, sum the entire font // as ULONG, then store 0xB1B0AFBA - sum. - uint32 magicNumber; // Set to 0x5F0F3CF5. - uint16 flags; /* Bit 0 - baseline for font at y=0; + uint32_t magicNumber; // Set to 0x5F0F3CF5. + uint16_t flags; /* Bit 0 - baseline for font at y=0; Bit 1 - left sidebearing at x=0; Bit 2 - instructions may depend on point size; Bit 3 - force ppem to integer values for all @@ -45,23 +38,23 @@ struct Head Bit 4 - instructions may alter advance width (the advance widths might not scale linearly); Note: All other bits must be zero.*/ - uint16 unitsPerEm; // Valid range is from 16 to 16384 - uint32 /*longDateTime*/ createdh, createdl; // International date (8-uint8 field). - uint32 /*longDateTime*/ modifiedh, modifiedl; // International date (8-uint8 field). - uint16 xMin; // For all glyph bounding boxes. - uint16 yMin; // For all glyph bounding boxes. - uint16 xMax; // For all glyph bounding boxes. - uint16 yMax; // For all glyph bounding boxes. - uint16 macStyle; /* Bit 0 bold (if set to 1); Bit 1 italic (if set to 1) + uint16_t unitsPerEm; // Valid range is from 16 to 16384 + uint32_t /*longDateTime*/ createdh, createdl; // International date (8-uint8_t field). + uint32_t /*longDateTime*/ modifiedh, modifiedl; // International date (8-uint8_t field). + uint16_t xMin; // For all glyph bounding boxes. + uint16_t yMin; // For all glyph bounding boxes. + uint16_t xMax; // For all glyph bounding boxes. + uint16_t yMax; // For all glyph bounding boxes. + uint16_t macStyle; /* Bit 0 bold (if set to 1); Bit 1 italic (if set to 1) Bits 2-15 reserved (set to 0).*/ - uint16 lowestRecPPEM; // Smallest readable size in pixels. - int16 fontDirectionHint; /* 0 Fully mixed directional glyphs; + uint16_t lowestRecPPEM; // Smallest readable size in pixels. + int16_t fontDirectionHint; /* 0 Fully mixed directional glyphs; 1 Only strongly left to right; 2 Like 1 but also contains neutrals; -1 Only strongly right to left; -2 Like -1 but also contains neutrals.*/ - int16 indexToLocFormat; // 0 for short offsets, 1 for long. - int16 glyphDataFormat; // 0 for current format. + int16_t indexToLocFormat; // 0 for short offsets, 1 for long. + int16_t glyphDataFormat; // 0 for current format. }; // @@ -69,24 +62,24 @@ struct Head // struct Maxp { - uint32 version; // Table version number 0x00010000 for version 1.0. - uint16 numGlyphs; // The number of glyphs in the font. - uint16 maxPoints; // Maximum points in a non-composite glyph. - uint16 maxContours; // Maximum contours in a non-composite glyph. - uint16 maxCompositePoints; // Maximum points in a composite glyph. - uint16 maxCompositeContours; // Maximum contours in a composite glyph. - uint16 maxZones; // 1 if instructions do not use the twilight + uint32_t version; // Table version number 0x00010000 for version 1.0. + uint16_t numGlyphs; // The number of glyphs in the font. + uint16_t maxPoints; // Maximum points in a non-composite glyph. + uint16_t maxContours; // Maximum contours in a non-composite glyph. + uint16_t maxCompositePoints; // Maximum points in a composite glyph. + uint16_t maxCompositeContours; // Maximum contours in a composite glyph. + uint16_t maxZones; // 1 if instructions do not use the twilight // zone (Z0), or 2 if instructions do use Z0; // should be set to 2 in most cases. - uint16 maxTwilightPoints; // Maximum points used in Z0. - uint16 maxStorage; // Number of Storage Area locations. - uint16 maxFunctionDefs; // Number of FDEFs. - uint16 maxInstructionDefs; // Number of IDEFs. - uint16 maxStackElements; // Maximum stack depth. - uint16 maxSizeOfInstructions; // Maximum uint8 count for glyph instructions. - uint16 maxComponentElements; // Maximum number of components referenced at + uint16_t maxTwilightPoints; // Maximum points used in Z0. + uint16_t maxStorage; // Number of Storage Area locations. + uint16_t maxFunctionDefs; // Number of FDEFs. + uint16_t maxInstructionDefs; // Number of IDEFs. + uint16_t maxStackElements; // Maximum stack depth. + uint16_t maxSizeOfInstructions; // Maximum uint8_t count for glyph instructions. + uint16_t maxComponentElements; // Maximum number of components referenced at // "top level" for any composite glyph. - uint16 maxComponentDepth; // Maximum levels of recursion; 1 for simple components. + uint16_t maxComponentDepth; // Maximum levels of recursion; 1 for simple components. }; // @@ -102,10 +95,10 @@ particular encoding, and the offset to the actual subtable: Type Description USHORT Platform ID. USHORT Platform-specific encoding ID. -ULONG uint8 offset from beginning of table to the subtable for this encoding. +ULONG uint8_t offset from beginning of table to the subtable for this encoding. USHORT format Format number is set to 4. -USHORT length Length in uint8s. +USHORT length Length in uint8_ts. USHORT version Version number (starts at 0). USHORT segCountX2 2 x segCount. USHORT searchRange 2 x (2**floor(log2(segCount))) @@ -141,17 +134,17 @@ struct GlyphPt struct Box { - int16 llx, lly, urx, ury; + int16_t llx, lly, urx, ury; // Default constructor - Box(int16 lx = 0, int16 ly = 0, int16 rx = 0, int16 ry = 0): + Box(int16_t lx = 0, int16_t ly = 0, int16_t rx = 0, int16_t ry = 0): llx(lx), lly(ly), urx(rx), ury(ry) {} }; struct NameRec { - uint16 platformID, platformSpecID, languageID, nameID, length; - uint8 * str; + uint16_t platformID, platformSpecID, languageID, nameID, length; + uint8_t * str; NameRec(): str(NULL) {} @@ -179,17 +172,17 @@ struct NameRec languageID = c.languageID; nameID = c.nameID; length = c.length; -//Fix this str = (uint8 *)strdup((char *)c.str); +//Fix this str = (uint8_t *)strdup((char *)c.str); } }; struct Composite { - uint16 flags, glyphIndex; - int16 arg1, arg2; + uint16_t flags, glyphIndex; + int16_t arg1, arg2; float xScale, yScale, scale01, scale10; - Composite(uint16 fl = 0, uint16 gl = 0, int16 a1 = 0, int16 a2 = 0, + Composite(uint16_t fl = 0, uint16_t gl = 0, int16_t a1 = 0, int16_t a2 = 0, float xs = 1.0f, float ys = 1.0f, float s01 = 1.0f, float s10 = 1.0f): flags(fl), glyphIndex(gl), arg1(a1), arg2(a2), xScale(xs), yScale(ys), scale01(s01), scale10(s10) {} @@ -229,8 +222,8 @@ struct Composite class TTF { private: - bool EncodeGlyph(uint16); - bool DecodeGlyph(uint16); + bool EncodeGlyph(uint16_t); + bool DecodeGlyph(uint16_t); bool ExtractTables(void); bool BuildTables(void); @@ -241,54 +234,54 @@ class TTF bool Load(const char *); // Load font database bool Save(const char *); // Save font database void ClearTables(void); // Deallocate memory... - bool SetGlyph(uint16 glyphnum); // Set internal pointer/encode/decode - bool AddGlyph(uint16 glyphnum); - bool DeleteGlyph(uint16 glyphnum); + bool SetGlyph(uint16_t glyphnum); // Set internal pointer/encode/decode + bool AddGlyph(uint16_t glyphnum); + bool DeleteGlyph(uint16_t glyphnum); Box GetBoundingBox(void); - GlyphPt GetPoint(uint16 pointno); - uint16 GetNumberOfPolys(void); - uint16 GetPolyEnd(uint16 polynum); - int GetPointX(uint16 pointno); - int GetPointY(uint16 pointno); - bool GetOnCurve(uint16 pointno); - bool SetOnCurve(uint16 pointno, bool state); - bool MovePoint(uint16 pointno, int x, int y); - bool MovePoint(uint16 pointno, GlyphPt p); - bool AddPoint(uint16 pointno, int x, int y, bool state); - bool DeletePoint(uint16 pointno); + GlyphPt GetPoint(uint16_t pointno); + uint16_t GetNumberOfPolys(void); + uint16_t GetPolyEnd(uint16_t polynum); + int GetPointX(uint16_t pointno); + int GetPointY(uint16_t pointno); + bool GetOnCurve(uint16_t pointno); + bool SetOnCurve(uint16_t pointno, bool state); + bool MovePoint(uint16_t pointno, int x, int y); + bool MovePoint(uint16_t pointno, GlyphPt p); + bool AddPoint(uint16_t pointno, int x, int y, bool state); + bool DeletePoint(uint16_t pointno); bool IsCompositeGlyph(void); - GlyphPoints GetGlyphPoints(uint16); - GlyphPoints GetAllCompositePoints(uint16); - void GetCharName(int, uint8 *); + GlyphPoints GetGlyphPoints(uint16_t); + GlyphPoints GetAllCompositePoints(uint16_t); + void GetCharName(int, uint8_t *); private: bool isDirty; // Has glyph been modified? bool isCompositeGlyph; // Is it a composite? (need structs to store composite info...) - uint16 currentGlyph; // The glyph currently decoded - uint16 numberOfPoints; + uint16_t currentGlyph; // The glyph currently decoded + uint16_t numberOfPoints; int gx[MAXPOINTS]; // Internal point arrays... int gy[MAXPOINTS]; // These could be dynamically allocated in the bool onCurve[MAXPOINTS]; // constructor, with default values being set - uint16 numberOfHints; - uint8 hint[MAXHINTS]; // Hints storage - uint16 numberOfPolys; // Number of polygons in glyph - uint16 poly[200]; // End points of polygons - int16 llx, lly, urx, ury; // Lower left/Upper right X/Y + uint16_t numberOfHints; + uint8_t hint[MAXHINTS]; // Hints storage + uint16_t numberOfPolys; // Number of polygons in glyph + uint16_t poly[200]; // End points of polygons + int16_t llx, lly, urx, ury; // Lower left/Upper right X/Y // public://remove after debugging... - uint8 * glyph[MAXGLYPHS]; // Placeholders for glyphs - uint32 glyphLen[MAXGLYPHS]; // Glyph lengths are stored since malloc() is sloppy + uint8_t * glyph[MAXGLYPHS]; // Placeholders for glyphs + uint32_t glyphLen[MAXGLYPHS]; // Glyph lengths are stored since malloc() is sloppy Maxp myMaxp; // Internal placeholders for this shiat Head myHead; // public: //private: later... List compositeList; // Composite glyph list - uint8 * EBDT, * EBLC, * EBSC, * LTSH, * OS_2, * PCLT, * VDMX, * cmap, * cvt, * fpgm, + uint8_t * EBDT, * EBLC, * EBSC, * LTSH, * OS_2, * PCLT, * VDMX, * cmap, * cvt, * fpgm, * gasp, * glyf, * hdmx, * head, * hhea, * hmtx, * kern, * loca, * maxp, * name, * post, * prep, * vhea, * vmtx; - uint32 EBDT_len, EBLC_len, EBSC_len, LTSH_len, OS_2_len, PCLT_len, VDMX_len, cmap_len, + uint32_t EBDT_len, EBLC_len, EBSC_len, LTSH_len, OS_2_len, PCLT_len, VDMX_len, cmap_len, cvt_len, fpgm_len, gasp_len, glyf_len, hdmx_len, head_len, hhea_len, hmtx_len, kern_len, loca_len, maxp_len, name_len, post_len, prep_len, vhea_len, vmtx_len; - uint8 * * parray[24]; // Pointer array - uint32 * larray[24]; // Length array + uint8_t * * parray[24]; // Pointer array + uint32_t * larray[24]; // Length array bool loaded; // Font loaded/init'ed? };