|
|
/**************************************************************************\
* * Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved. * * Abstract: * * Font family API related declarations * * Revision History: * * * 06/30/1999 cameronb * Created it. * \**************************************************************************/
#ifndef _GDIPLUS_FONT_FAMILY_H
#define _GDIPLUS_FONT_FAMILY_H
inline FontFamily::FontFamily() : nativeFamily (NULL), lastResult (Ok) { }
inline FontFamily::FontFamily( IN const WCHAR* name, IN const FontCollection* fontCollection ) { nativeFamily = NULL; lastResult = DllExports::GdipCreateFontFamilyFromName( name, fontCollection ? fontCollection->nativeFontCollection : NULL, &nativeFamily ); #ifndef DCR_USE_NEW_135429
if ((INT) lastResult >= 10) lastResult = NotFound; #endif
}
// private method
inline FontFamily::FontFamily( IN GpFontFamily *nativeOrig, IN Status status ) { lastResult = status; nativeFamily = nativeOrig; }
// Generic font family access
inline const FontFamily * FontFamily::GenericSansSerif() { if (GenericSansSerifFontFamily != NULL) { return GenericSansSerifFontFamily; }
GenericSansSerifFontFamily = (FontFamily*) GenericSansSerifFontFamilyBuffer;
GenericSansSerifFontFamily->lastResult = DllExports::GdipGetGenericFontFamilySansSerif( &(GenericSansSerifFontFamily->nativeFamily) );
#ifndef DCR_USE_NEW_135429
if ((INT) GenericSansSerifFontFamily->lastResult >= 10) GenericSansSerifFontFamily->lastResult = NotFound; #endif
return GenericSansSerifFontFamily; }
inline const FontFamily * FontFamily::GenericSerif() { if (GenericSerifFontFamily != NULL) { return GenericSerifFontFamily; }
GenericSerifFontFamily = (FontFamily*) GenericSerifFontFamilyBuffer;
GenericSerifFontFamily->lastResult = DllExports::GdipGetGenericFontFamilySerif( &(GenericSerifFontFamily->nativeFamily) );
#ifndef DCR_USE_NEW_135429
if ((INT) GenericSerifFontFamily->lastResult >= 10) GenericSerifFontFamily->lastResult = NotFound; #endif
return GenericSerifFontFamily; }
inline const FontFamily * FontFamily::GenericMonospace() { if (GenericMonospaceFontFamily != NULL) { return GenericMonospaceFontFamily; }
GenericMonospaceFontFamily = (FontFamily*) GenericMonospaceFontFamilyBuffer;
GenericMonospaceFontFamily->lastResult = DllExports::GdipGetGenericFontFamilyMonospace( &(GenericMonospaceFontFamily->nativeFamily) );
#ifndef DCR_USE_NEW_135429
if ((INT) GenericMonospaceFontFamily->lastResult >= 10) GenericMonospaceFontFamily->lastResult = NotFound; #endif
return GenericMonospaceFontFamily; }
inline FontFamily::~FontFamily() { DllExports::GdipDeleteFontFamily (nativeFamily); }
inline FontFamily * FontFamily::Clone() const { GpFontFamily * clonedFamily = NULL;
SetStatus(DllExports::GdipCloneFontFamily (nativeFamily, &clonedFamily));
return new FontFamily(clonedFamily, lastResult); }
inline Status FontFamily::GetFamilyName( IN WCHAR name[LF_FACESIZE], IN LANGID language ) const { return SetStatus(DllExports::GdipGetFamilyName(nativeFamily, name, language)); }
inline BOOL FontFamily::IsStyleAvailable(IN INT style) const { BOOL StyleAvailable; Status status;
status = SetStatus(DllExports::GdipIsStyleAvailable(nativeFamily, style, &StyleAvailable));
if (status != Ok) StyleAvailable = FALSE;
return StyleAvailable; }
inline UINT16 FontFamily::GetEmHeight(IN INT style) const { UINT16 EmHeight;
SetStatus(DllExports::GdipGetEmHeight(nativeFamily, style, &EmHeight));
return EmHeight; }
inline UINT16 FontFamily::GetCellAscent(IN INT style) const { UINT16 CellAscent;
SetStatus(DllExports::GdipGetCellAscent(nativeFamily, style, &CellAscent));
return CellAscent; }
inline UINT16 FontFamily::GetCellDescent(IN INT style) const { UINT16 CellDescent;
SetStatus(DllExports::GdipGetCellDescent(nativeFamily, style, &CellDescent));
return CellDescent; }
inline UINT16 FontFamily::GetLineSpacing(IN INT style) const { UINT16 LineSpacing;
SetStatus(DllExports::GdipGetLineSpacing(nativeFamily, style, &LineSpacing));
return LineSpacing;
}
#ifdef TEXTV2
// The following APIs return data from the font OS/2 table
inline INT16 FontFamily::GetTypographicAscent(IN INT style) const { INT16 TypographicAscent;
SetStatus(DllExports::GdipGetTypographicAscent(nativeFamily, style, &TypographicAscent));
return TypographicAscent; }
inline INT16 FontFamily::GetTypographicDescent(IN INT style) const { INT16 TypographicDescent;
SetStatus(DllExports::GdipGetTypographicDescent(nativeFamily, style, &TypographicDescent));
return TypographicDescent; }
inline INT16 FontFamily::GetTypographicLineGap(IN INT style) const { INT16 TypographicLineGap;
SetStatus(DllExports::GdipGetTypographicLineGap(nativeFamily, style, &TypographicLineGap));
return TypographicLineGap; }
#endif
///////////////////////////////////////////////////////////
// GetLastStatus - return last error code and clear error code
inline Status FontFamily::GetLastStatus() const { Status lastStatus = lastResult; lastResult = Ok;
return lastStatus; }
// protected method
inline Status FontFamily::SetStatus(Status status) const { if (status != Ok) return (lastResult = status); else return status; }
#endif
|