Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/***************************************************************************
* 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$ * ****************************************************************************/
|