1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**************************************************************************\
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Copyright (c) 1998-2000, Microsoft Corp.  All Rights Reserved.
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Module Name:
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*   GdiplusFont.h
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Abstract:
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*   Font related declarations
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov\**************************************************************************/
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _GDIPLUSFONT_H
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _GDIPLUSFONT_H
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::Font(IN HDC hdc)
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpFont *font = NULL;
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipCreateFontFromDC(hdc, &font);
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_135429
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ((INT) lastResult >= 10)
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = NotFound;
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeFont(font);
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_127084
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::Font(IN HDC hdc,
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov           IN const HFONT hfont)
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpFont *font = NULL;
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (hfont)
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        LOGFONTA lf;
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        if(GetObjectA(hfont, sizeof(LOGFONTA), &lf))
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov            lastResult = DllExports::GdipCreateFontFromLogfontA(hdc, &lf, &font);
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        else
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov            lastResult = DllExports::GdipCreateFontFromDC(hdc, &font);
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    else
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = DllExports::GdipCreateFontFromDC(hdc, &font);
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_135429
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ((INT) lastResult >= 10)
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = NotFound;
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeFont(font);
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::Font(IN HDC hdc,
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov           IN const LOGFONTW* logfont)
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpFont *font = NULL;
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (logfont)
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = DllExports::GdipCreateFontFromLogfontW(hdc, logfont, &font);
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    else
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = DllExports::GdipCreateFontFromDC(hdc, &font);
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_135429
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ((INT) lastResult >= 10)
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = NotFound;
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeFont(font);
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::Font(IN HDC hdc,
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov           IN const LOGFONTA* logfont)
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpFont *font = NULL;
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (logfont)
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = DllExports::GdipCreateFontFromLogfontA(hdc, logfont, &font);
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    else
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = DllExports::GdipCreateFontFromDC(hdc, &font);
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_135429
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ((INT) lastResult >= 10)
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = NotFound;
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeFont(font);
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::Font(
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov     IN const FontFamily * family,
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov     IN REAL         emSize,
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov     IN INT          style,
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov     IN Unit         unit
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov)
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpFont *font = NULL;
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipCreateFont(family ? family->nativeFamily : NULL,
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                    emSize,
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                    style,
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                    unit,
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                    &font);
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_135429
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ((INT) lastResult >= 10)
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = NotFound;
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeFont(font);
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::Font(
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov     IN const WCHAR *          familyName,
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov     IN REAL                   emSize,
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov     IN INT                    style,
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov     IN Unit                   unit,
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov     IN const FontCollection * fontCollection
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov)
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FontFamily family(familyName, fontCollection);
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpFont * font = NULL;
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = family.GetLastStatus();
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (lastResult == Ok)
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = DllExports::GdipCreateFont(family.nativeFamily,
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                emSize,
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                style,
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                unit,
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                &font);
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_135429
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ((INT) lastResult >= 10)
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = NotFound;
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeFont(font);
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::GetLogFontA(IN const Graphics *g,
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  OUT LOGFONTA *logfontA) const
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipGetLogFontA(nativeFont, g ? g->nativeGraphics : NULL, logfontA));
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::GetLogFontW(IN const Graphics *g,
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  OUT LOGFONTW *logfontW) const
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipGetLogFontW(nativeFont, g ? g->nativeGraphics : NULL, logfontW));
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Font*
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::Clone() const
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpFont *cloneFont = NULL;
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipCloneFont(nativeFont, &cloneFont));
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return new Font(cloneFont, lastResult);
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::~Font()
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    DllExports::GdipDeleteFont(nativeFont);
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Operations
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline BOOL
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::IsAvailable() const
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return (nativeFont ? TRUE : FALSE);
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::GetFamily(OUT FontFamily *family) const
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (family == NULL)
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return SetStatus(InvalidParameter);
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    Status status = DllExports::GdipGetFamily(nativeFont, &(family->nativeFamily));
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    family->SetStatus(status);
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(status);
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline INT
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::GetStyle() const
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    INT style;
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetFontStyle(nativeFont, &style));
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return style;
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline REAL
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::GetSize() const
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    REAL size;
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetFontSize(nativeFont, &size));
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return size;
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Unit
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::GetUnit() const
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    Unit unit;
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetFontUnit(nativeFont, &unit));
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return unit;
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline REAL
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::GetHeight(IN const Graphics *graphics) const
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    REAL height;
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetFontHeight(
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        nativeFont,
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        graphics ? graphics->nativeGraphics : NULL,
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        &height
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ));
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return height;
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef DCR_USE_NEW_125467
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline REAL
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::GetHeight(IN REAL dpi = 0) const
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    REAL height;
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetFontHeightGivenDPI(nativeFont, dpi, &height));
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return height;
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// protected method
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
269ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::Font(IN GpFont* font,
270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov           IN Status status)
271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = status;
273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeFont(font);
274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// protected method
277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline VOID
278ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::SetNativeFont(GpFont *Font)
279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    nativeFont = Font;
281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
284ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::GetLastStatus(void) const
285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return lastResult;
287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// protected method
290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
291ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFont::SetStatus(IN Status status) const
292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (status != Ok)
294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return (lastResult = status);
295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    else
296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return status;
297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
300