|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- /**************************************************************************\
- *
- * 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
|