GdiPlusFontFamily.h
资源名称:GDIUSE.rar [点击查看]
上传用户:jinlangri
上传日期:2022-07-17
资源大小:10774k
文件大小:6k
源码类别:
GDI/图象编程
开发平台:
Visual C++
- /**************************************************************************
- *
- * 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