/**************************************************************************\ * * Copyright (c) 1998-2001, Microsoft Corp. All Rights Reserved. * * Module Name: * * GdiplusFontFamily.h * * Abstract: * * GDI+ Font Family class * \**************************************************************************/ #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 ); } inline FontFamily::FontFamily( IN GpFontFamily *nativeOrig, IN Status status ) { lastResult = status; nativeFamily = nativeOrig; } inline const FontFamily * FontFamily::GenericSansSerif() { if (GenericSansSerifFontFamily != NULL) { return GenericSansSerifFontFamily; } GenericSansSerifFontFamily = (FontFamily*) GenericSansSerifFontFamilyBuffer; GenericSansSerifFontFamily->lastResult = DllExports::GdipGetGenericFontFamilySansSerif( &(GenericSansSerifFontFamily->nativeFamily) ); return GenericSansSerifFontFamily; } inline const FontFamily * FontFamily::GenericSerif() { if (GenericSerifFontFamily != NULL) { return GenericSerifFontFamily; } GenericSerifFontFamily = (FontFamily*) GenericSerifFontFamilyBuffer; GenericSerifFontFamily->lastResult = DllExports::GdipGetGenericFontFamilySerif( &(GenericSerifFontFamily->nativeFamily) ); return GenericSerifFontFamily; } inline const FontFamily * FontFamily::GenericMonospace() { if (GenericMonospaceFontFamily != NULL) { return GenericMonospaceFontFamily; } GenericMonospaceFontFamily = (FontFamily*) GenericMonospaceFontFamilyBuffer; GenericMonospaceFontFamily->lastResult = DllExports::GdipGetGenericFontFamilyMonospace( &(GenericMonospaceFontFamily->nativeFamily) ); 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; } inline Status FontFamily::GetLastStatus() const { Status lastStatus = lastResult; lastResult = Ok; return lastStatus; } inline Status FontFamily::SetStatus(Status status) const { if (status != Ok) return (lastResult = status); else return status; } #endif