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*   GdiplusFontFamily.h
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Abstract:
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*   Font family API related declarations
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov\**************************************************************************/
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _GDIPLUS_FONT_FAMILY_H
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _GDIPLUS_FONT_FAMILY_H
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::FontFamily() :
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    nativeFamily (NULL),
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult    (Ok)
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::FontFamily(
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN const WCHAR*          name,
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN const FontCollection* fontCollection
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov)
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    nativeFamily = NULL;
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipCreateFontFamilyFromName(
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        name,
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        fontCollection ? fontCollection->nativeFontCollection : NULL,
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        &nativeFamily
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    );
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_135429
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ((INT) lastResult >= 10)
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        lastResult = NotFound;
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// private method
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::FontFamily(
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN GpFontFamily *nativeOrig,
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN Status status
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov)
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult    = status;
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    nativeFamily = nativeOrig;
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Generic font family access
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline const FontFamily *
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GenericSansSerif()
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (GenericSansSerifFontFamily != NULL)
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GenericSansSerifFontFamily;
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GenericSansSerifFontFamily =
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        (FontFamily*) GenericSansSerifFontFamilyBuffer;
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GenericSansSerifFontFamily->lastResult =
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        DllExports::GdipGetGenericFontFamilySansSerif(
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov            &(GenericSansSerifFontFamily->nativeFamily)
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        );
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_135429
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ((INT) GenericSansSerifFontFamily->lastResult >= 10)
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GenericSansSerifFontFamily->lastResult = NotFound;
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return GenericSansSerifFontFamily;
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline const FontFamily *
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GenericSerif()
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (GenericSerifFontFamily != NULL)
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GenericSerifFontFamily;
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GenericSerifFontFamily =
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        (FontFamily*) GenericSerifFontFamilyBuffer;
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GenericSerifFontFamily->lastResult =
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        DllExports::GdipGetGenericFontFamilySerif(
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov            &(GenericSerifFontFamily->nativeFamily)
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        );
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_135429
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ((INT) GenericSerifFontFamily->lastResult >= 10)
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GenericSerifFontFamily->lastResult = NotFound;
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return GenericSerifFontFamily;
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline const FontFamily *
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GenericMonospace()
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (GenericMonospaceFontFamily != NULL)
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GenericMonospaceFontFamily;
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GenericMonospaceFontFamily =
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        (FontFamily*) GenericMonospaceFontFamilyBuffer;
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GenericMonospaceFontFamily->lastResult =
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        DllExports::GdipGetGenericFontFamilyMonospace(
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov            &(GenericMonospaceFontFamily->nativeFamily)
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        );
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_135429
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ((INT) GenericMonospaceFontFamily->lastResult >= 10)
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GenericMonospaceFontFamily->lastResult = NotFound;
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return GenericMonospaceFontFamily;
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline FontFamily::~FontFamily()
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    DllExports::GdipDeleteFontFamily (nativeFamily);
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline FontFamily *
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::Clone() const
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpFontFamily * clonedFamily = NULL;
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipCloneFontFamily (nativeFamily, &clonedFamily));
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return new FontFamily(clonedFamily, lastResult);
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GetFamilyName(
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN WCHAR name[LF_FACESIZE],
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN LANGID language
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov) const
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipGetFamilyName(nativeFamily,
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                   name,
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                   language));
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline BOOL
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::IsStyleAvailable(IN INT style) const
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    BOOL    StyleAvailable;
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    Status  status;
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    status = SetStatus(DllExports::GdipIsStyleAvailable(nativeFamily, style, &StyleAvailable));
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (status != Ok)
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        StyleAvailable = FALSE;
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return StyleAvailable;
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline UINT16
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GetEmHeight(IN INT style) const
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    UINT16  EmHeight;
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetEmHeight(nativeFamily, style, &EmHeight));
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return EmHeight;
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline UINT16
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GetCellAscent(IN INT style) const
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    UINT16  CellAscent;
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetCellAscent(nativeFamily, style, &CellAscent));
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return CellAscent;
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline UINT16
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GetCellDescent(IN INT style) const
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    UINT16  CellDescent;
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetCellDescent(nativeFamily, style, &CellDescent));
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return CellDescent;
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline UINT16
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GetLineSpacing(IN INT style) const
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    UINT16  LineSpacing;
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetLineSpacing(nativeFamily, style, &LineSpacing));
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return LineSpacing;
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef TEXTV2
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// The following APIs return data from the font OS/2 table
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline INT16
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GetTypographicAscent(IN INT style) const
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    INT16  TypographicAscent;
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetTypographicAscent(nativeFamily, style, &TypographicAscent));
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return TypographicAscent;
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline INT16
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GetTypographicDescent(IN INT style) const
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    INT16   TypographicDescent;
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetTypographicDescent(nativeFamily, style, &TypographicDescent));
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return TypographicDescent;
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline INT16
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GetTypographicLineGap(IN INT style) const
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    INT16   TypographicLineGap;
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetTypographicLineGap(nativeFamily, style, &TypographicLineGap));
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return TypographicLineGap;
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov///////////////////////////////////////////////////////////
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// GetLastStatus - return last error code and clear error code
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::GetLastStatus() const
254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    Status lastStatus = lastResult;
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = Ok;
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return lastStatus;
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// protected method
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontFamily::SetStatus(Status status) const
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (status != Ok)
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return (lastResult = status);
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    else
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return status;
269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
272