| /**************************************************************************\ | |
| * | |
| * Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved. | |
| * | |
| * Module Name: | |
| * | |
| * GdiplusFont.h | |
| * | |
| * Abstract: | |
| * | |
| * Font related declarations | |
| * | |
| \**************************************************************************/ | |
| #ifndef _GDIPLUSFONT_H | |
| #define _GDIPLUSFONT_H | |
| inline | |
| Font::Font(IN HDC hdc) | |
| { | |
| GpFont *font = NULL; | |
| lastResult = DllExports::GdipCreateFontFromDC(hdc, &font); | |
| #ifndef DCR_USE_NEW_135429 | |
| if ((INT) lastResult >= 10) | |
| lastResult = NotFound; | |
| #endif | |
| SetNativeFont(font); | |
| } | |
| #ifdef DCR_USE_NEW_127084 | |
| inline | |
| Font::Font(IN HDC hdc, | |
| IN const HFONT hfont) | |
| { | |
| GpFont *font = NULL; | |
| if (hfont) | |
| { | |
| LOGFONTA lf; | |
| if(GetObjectA(hfont, sizeof(LOGFONTA), &lf)) | |
| lastResult = DllExports::GdipCreateFontFromLogfontA(hdc, &lf, &font); | |
| else | |
| lastResult = DllExports::GdipCreateFontFromDC(hdc, &font); | |
| } | |
| else | |
| { | |
| lastResult = DllExports::GdipCreateFontFromDC(hdc, &font); | |
| } | |
| #ifndef DCR_USE_NEW_135429 | |
| if ((INT) lastResult >= 10) | |
| lastResult = NotFound; | |
| #endif | |
| SetNativeFont(font); | |
| } | |
| #endif | |
| inline | |
| Font::Font(IN HDC hdc, | |
| IN const LOGFONTW* logfont) | |
| { | |
| GpFont *font = NULL; | |
| if (logfont) | |
| { | |
| lastResult = DllExports::GdipCreateFontFromLogfontW(hdc, logfont, &font); | |
| } | |
| else | |
| { | |
| lastResult = DllExports::GdipCreateFontFromDC(hdc, &font); | |
| } | |
| #ifndef DCR_USE_NEW_135429 | |
| if ((INT) lastResult >= 10) | |
| lastResult = NotFound; | |
| #endif | |
| SetNativeFont(font); | |
| } | |
| inline | |
| Font::Font(IN HDC hdc, | |
| IN const LOGFONTA* logfont) | |
| { | |
| GpFont *font = NULL; | |
| if (logfont) | |
| { | |
| lastResult = DllExports::GdipCreateFontFromLogfontA(hdc, logfont, &font); | |
| } | |
| else | |
| { | |
| lastResult = DllExports::GdipCreateFontFromDC(hdc, &font); | |
| } | |
| #ifndef DCR_USE_NEW_135429 | |
| if ((INT) lastResult >= 10) | |
| lastResult = NotFound; | |
| #endif | |
| SetNativeFont(font); | |
| } | |
| inline | |
| Font::Font( | |
| IN const FontFamily * family, | |
| IN REAL emSize, | |
| IN INT style, | |
| IN Unit unit | |
| ) | |
| { | |
| GpFont *font = NULL; | |
| lastResult = DllExports::GdipCreateFont(family ? family->nativeFamily : NULL, | |
| emSize, | |
| style, | |
| unit, | |
| &font); | |
| #ifndef DCR_USE_NEW_135429 | |
| if ((INT) lastResult >= 10) | |
| lastResult = NotFound; | |
| #endif | |
| SetNativeFont(font); | |
| } | |
| inline | |
| Font::Font( | |
| IN const WCHAR * familyName, | |
| IN REAL emSize, | |
| IN INT style, | |
| IN Unit unit, | |
| IN const FontCollection * fontCollection | |
| ) | |
| { | |
| FontFamily family(familyName, fontCollection); | |
| GpFont * font = NULL; | |
| lastResult = family.GetLastStatus(); | |
| if (lastResult == Ok) | |
| { | |
| lastResult = DllExports::GdipCreateFont(family.nativeFamily, | |
| emSize, | |
| style, | |
| unit, | |
| &font); | |
| } | |
| #ifndef DCR_USE_NEW_135429 | |
| if ((INT) lastResult >= 10) | |
| lastResult = NotFound; | |
| #endif | |
| SetNativeFont(font); | |
| } | |
| inline Status | |
| Font::GetLogFontA(IN const Graphics *g, | |
| OUT LOGFONTA *logfontA) const | |
| { | |
| return SetStatus(DllExports::GdipGetLogFontA(nativeFont, g ? g->nativeGraphics : NULL, logfontA)); | |
| } | |
| inline Status | |
| Font::GetLogFontW(IN const Graphics *g, | |
| OUT LOGFONTW *logfontW) const | |
| { | |
| return SetStatus(DllExports::GdipGetLogFontW(nativeFont, g ? g->nativeGraphics : NULL, logfontW)); | |
| } | |
| inline Font* | |
| Font::Clone() const | |
| { | |
| GpFont *cloneFont = NULL; | |
| SetStatus(DllExports::GdipCloneFont(nativeFont, &cloneFont)); | |
| return new Font(cloneFont, lastResult); | |
| } | |
| inline | |
| Font::~Font() | |
| { | |
| DllExports::GdipDeleteFont(nativeFont); | |
| } | |
| // Operations | |
| inline BOOL | |
| Font::IsAvailable() const | |
| { | |
| return (nativeFont ? TRUE : FALSE); | |
| } | |
| inline Status | |
| Font::GetFamily(OUT FontFamily *family) const | |
| { | |
| if (family == NULL) | |
| { | |
| return SetStatus(InvalidParameter); | |
| } | |
| Status status = DllExports::GdipGetFamily(nativeFont, &(family->nativeFamily)); | |
| family->SetStatus(status); | |
| return SetStatus(status); | |
| } | |
| inline INT | |
| Font::GetStyle() const | |
| { | |
| INT style; | |
| SetStatus(DllExports::GdipGetFontStyle(nativeFont, &style)); | |
| return style; | |
| } | |
| inline REAL | |
| Font::GetSize() const | |
| { | |
| REAL size; | |
| SetStatus(DllExports::GdipGetFontSize(nativeFont, &size)); | |
| return size; | |
| } | |
| inline Unit | |
| Font::GetUnit() const | |
| { | |
| Unit unit; | |
| SetStatus(DllExports::GdipGetFontUnit(nativeFont, &unit)); | |
| return unit; | |
| } | |
| inline REAL | |
| Font::GetHeight(IN const Graphics *graphics) const | |
| { | |
| REAL height; | |
| SetStatus(DllExports::GdipGetFontHeight( | |
| nativeFont, | |
| graphics ? graphics->nativeGraphics : NULL, | |
| &height | |
| )); | |
| return height; | |
| } | |
| #ifdef DCR_USE_NEW_125467 | |
| inline REAL | |
| Font::GetHeight(IN REAL dpi = 0) const | |
| { | |
| REAL height; | |
| SetStatus(DllExports::GdipGetFontHeightGivenDPI(nativeFont, dpi, &height)); | |
| return height; | |
| } | |
| #endif | |
| // protected method | |
| inline | |
| Font::Font(IN GpFont* font, | |
| IN Status status) | |
| { | |
| lastResult = status; | |
| SetNativeFont(font); | |
| } | |
| // protected method | |
| inline VOID | |
| Font::SetNativeFont(GpFont *Font) | |
| { | |
| nativeFont = Font; | |
| } | |
| inline Status | |
| Font::GetLastStatus(void) const | |
| { | |
| return lastResult; | |
| } | |
| // protected method | |
| inline Status | |
| Font::SetStatus(IN Status status) const | |
| { | |
| if (status != Ok) | |
| return (lastResult = status); | |
| else | |
| return status; | |
| } | |
| #endif |