129 lines
4 KiB
C++
129 lines
4 KiB
C++
/***************************************************************************
|
||
* fontinfo.h - declarations for the font info class
|
||
*
|
||
* This header defines interfaces for the following classes:
|
||
* OS_2TableClass - holds info from the OS_2 table (not true class)
|
||
* TTFInfoClass - holds partial info from the TT file.
|
||
* FontInfoClass - hold font info - this is the true public interface
|
||
*
|
||
* By putting these guys in classes, not only do we ensure they're not
|
||
* used in some bad fashions, but we can automatically handle memory
|
||
* release (via destructors)
|
||
*
|
||
* Copyright (C) 1992-93 ElseWare Corporation. All rights reserved.
|
||
***************************************************************************/
|
||
|
||
#ifndef __FONTINFO_H__
|
||
#define __FONTINFO_H__
|
||
|
||
typedef TCHAR FQNAME[255];
|
||
|
||
class far OS_2TableClass {
|
||
public : OS_2TableClass () {};
|
||
public : // fields:
|
||
|
||
WORD wVersion;
|
||
short ixAvgCharWidth;
|
||
WORD wusWeightClass;
|
||
WORD wusWidthClass;
|
||
short ifsType;
|
||
short iySubXSize;
|
||
short iySubYSize;
|
||
short iySubXOffset;
|
||
short iySubYOffset;
|
||
short iySupXSize;
|
||
short iySupYSize;
|
||
short iySupXOffset;
|
||
short iySupYOffset;
|
||
short iyStrikeoutSize;
|
||
short iyStrikeoutPosition;
|
||
short isFamilyClass;
|
||
PANOSEBytesClass PANOSE;
|
||
ULONG ulCharRange[4];
|
||
TCHAR achVendID[4];
|
||
WORD wfsSelection;
|
||
WORD wusFirstCharIndex;
|
||
WORD wusLastCharIndex;
|
||
WORD wusTypoAscender;
|
||
WORD wusTypeoDescender;
|
||
WORD wwsTypoLineGap;
|
||
WORD wusWinAscent;
|
||
WORD wusWinDescent;
|
||
};
|
||
typedef OS_2TableClass* LPOS_2TABLE;
|
||
|
||
/* The string block is a dynamically allocated section of the
|
||
* TRUETYPE info block. We don't have any idea how big these guys
|
||
* can be until we probe and dig into the file
|
||
*/
|
||
|
||
typedef struct _tagStrings {
|
||
LPTSTR m_lpszCopyright;
|
||
LPTSTR m_lpszTrademark;
|
||
LPTSTR m_lpszVersion;
|
||
} InfoStrings_t, FAR* LPInfoStrings;
|
||
|
||
class far TTFInfoClass {
|
||
public :
|
||
TTFInfoClass () { vClear (); };
|
||
~TTFInfoClass () { vFree (); };
|
||
VOID vFree( ) { if (m_lpInfoStrings.m_lpszCopyright)
|
||
delete[] m_lpInfoStrings.m_lpszCopyright;
|
||
if( m_lpInfoStrings.m_lpszTrademark )
|
||
delete[] m_lpInfoStrings.m_lpszTrademark;
|
||
if( m_lpInfoStrings.m_lpszVersion )
|
||
delete[] m_lpInfoStrings.m_lpszVersion;
|
||
|
||
vClear (); };
|
||
|
||
BOOL bLoadInfo( HDC hDC );
|
||
// BOOL bGrowTTFInfo (WORD wLen, LPWORD, LPWORD);
|
||
|
||
private : // routines
|
||
|
||
VOID vClear( ) { memset (this, 0, sizeof(*this) ); };
|
||
|
||
public : // fields
|
||
InfoStrings_t m_lpInfoStrings; // The OS2 table we've allocated
|
||
};
|
||
|
||
class FontInfoClass {
|
||
public : // routines
|
||
|
||
FontInfoClass () { vClear(); };
|
||
VOID vClear () { m_bValid = FALSE; vFree (); };
|
||
VOID vFree () { m_xTTFInfo.vFree(); };
|
||
|
||
LPTSTR lpGetTrademark ()
|
||
{ LPTSTR lp = NULL;
|
||
if( m_bValid )
|
||
lp = m_xTTFInfo.m_lpInfoStrings.m_lpszTrademark;
|
||
return lp; };
|
||
|
||
LPTSTR lpGetCopyright ()
|
||
{ LPTSTR lp = NULL;
|
||
if( m_bValid )
|
||
lp = m_xTTFInfo.m_lpInfoStrings.m_lpszCopyright;
|
||
return lp; };
|
||
|
||
void vGetVersion( UINT id, PTSTR szVersion );
|
||
BOOL bGetFontInfo( CFontClass* lpFontRec );
|
||
BOOL bValid( ) { return m_bValid; };
|
||
|
||
private : // fields
|
||
BOOL m_bValid;
|
||
TTFInfoClass m_xTTFInfo;
|
||
OS_2TableClass m_OS_2Table;
|
||
};
|
||
#endif
|
||
|
||
|
||
|
||
/****************************************************************************
|
||
* $lgb$
|
||
* 1.0 7-Mar-94 eric Initial revision.
|
||
* $lge$
|
||
*
|
||
****************************************************************************/
|
||
|
||
|