208 lines
4.2 KiB
C
208 lines
4.2 KiB
C
/**************************************************************************\
|
|
*
|
|
* 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
|