// ResFont.h: interface for the CResFont class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_RESFONT_H__58AD83B0_C15E_43C3_9690_8501C38D16BC__INCLUDED_) #define AFX_RESFONT_H__58AD83B0_C15E_43C3_9690_8501C38D16BC__INCLUDED_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 #include <gui/font.h> #pragma pack(push, 1) /* font file header (Adaptation Guide section 6.4) */ struct FontDirEntry { word Version; /* Always 17985 for the Nonce */ dword Size; /* Size of whole file */ char Copyright[60]; word Type; /* Raster Font if Type & 1 == 0 */ word Points; /* Nominal Point size */ word VertRes; /* Nominal Vertical resolution */ word HorizRes; /* Nominal Horizontal resolution */ word Ascent; /* Height of Ascent */ word IntLeading; /* Internal (Microsoft) Leading */ word ExtLeading; /* External (Microsoft) Leading */ byte Italic; /* Italic font if set */ byte Underline; /* Etc. */ byte StrikeOut; /* Etc. */ word Weight; /* Weight: 200 = regular */ byte CharSet; /* ANSI=0. other=255 */ word PixWidth; /* Fixed width. 0 ==> Variable */ word PixHeight; /* Fixed Height */ byte Family; /* Pitch and Family */ word AvgWidth; /* Width of character 'X' */ word MaxWidth; /* Maximum width */ byte FirstChar; /* First character defined in font */ byte LastChar; /* Last character defined in font */ byte DefaultChar; /* Sub. for out of range chars. */ byte BreakChar; /* word Break Character */ word Widthbytes; /* No.bytes/row of Bitmap */ dword Device; /* Pointer to Device Name string */ dword Face; /* Pointer to Face Name String */ dword BitsPointer; /* Pointer to Bit Map */ dword BitsOffset; /* Offset to Bit Map */ byte Reserved; dword Flags; word Aspace; word Bspace; word Cspace; dword ColourPointer; byte Reserved1[16]; }; /* Above pointers all rel. to start of file */ struct GlyphInfo20 { word GIwidth; word GIoffset; }; #define SIZEOF_FONTDIRENTRY20 (sizeof(FontDirEntry) - 30) #pragma pack(pop) class CResFont : public IUnknown, public IFont { protected: const FontDirEntry* m_header; const GlyphInfo20* m_chartable; public: CResFont(dword inst, word id); virtual ~CResFont(); STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject); IMPLEMENT_IUNKNOWN(CResFont); STDMETHOD(DrawText)(ISurface* pSurf, int x, int y, const wchar_t* str, pixel_t pixColour); STDMETHOD(GetTextExtent)(const wchar_t* str, point_t* size); }; #endif // !defined(AFX_RESFONT_H__58AD83B0_C15E_43C3_9690_8501C38D16BC__INCLUDED_)