|
- /**************************************************************************\
- *
- * Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved.
- *
- * Module Name:
- *
- * GdiplusFontFamily.h
- *
- * Abstract:
- *
- * Font family API related declarations
- *
- \**************************************************************************/
-
- #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
|