/**************************************************************************\ * * 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
By viewing downloads associated with this article you agree to the Terms of use and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.
This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)
Math Primers for Programmers