1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**************************************************************************\
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Copyright (c) 2000, Microsoft Corp.  All Rights Reserved.
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Module Name:
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*   GdiplusFontCollection.h
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Abstract:
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*   Font collections (Installed and Private)
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov\**************************************************************************/
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _GDIPLUSFONTCOLL_H
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _GDIPLUSFONTCOLL_H
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontCollection::FontCollection()
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    nativeFontCollection = NULL;
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontCollection::~FontCollection()
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline INT
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontCollection::GetFamilyCount() const
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    INT numFound = 0;
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipGetFontCollectionFamilyCount(
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                             nativeFontCollection, &numFound);
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return numFound;
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontCollection::GetFamilies(
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN INT           numSought,
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    OUT FontFamily * gpfamilies,
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    OUT INT *        numFound
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov) const
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (numSought <= 0 || gpfamilies == NULL || numFound == NULL)
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return SetStatus(InvalidParameter);
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    *numFound = 0;
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpFontFamily **nativeFamilyList = new GpFontFamily*[numSought];
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (nativeFamilyList == NULL)
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return SetStatus(OutOfMemory);
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    Status status = SetStatus(DllExports::GdipGetFontCollectionFamilyList(
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        nativeFontCollection,
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        numSought,
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        nativeFamilyList,
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        numFound
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ));
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (status == Ok)
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        for (INT i = 0; i < *numFound; i++)
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        {
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov            DllExports::GdipCloneFontFamily(nativeFamilyList[i],
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                            &gpfamilies[i].nativeFamily);
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        }
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    delete [] nativeFamilyList;
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return status;
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status FontCollection::GetLastStatus () const
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return lastResult;
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// protected method
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFontCollection::SetStatus(IN Status status) const
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = status;
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return lastResult;
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovInstalledFontCollection::InstalledFontCollection()
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    nativeFontCollection = NULL;
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipNewInstalledFontCollection(&nativeFontCollection);
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovInstalledFontCollection::~InstalledFontCollection()
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef DCR_USE_NEW_235072
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovInstalledFontCollection::InstallFontFile(IN const WCHAR* filename)
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipInstallFontFile(nativeFontCollection, filename));
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovInstalledFontCollection::UninstallFontFile(IN const WCHAR* filename)
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipUninstallFontFile(nativeFontCollection, filename));
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovPrivateFontCollection::PrivateFontCollection()
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    nativeFontCollection = NULL;
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipNewPrivateFontCollection(&nativeFontCollection);
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovPrivateFontCollection::~PrivateFontCollection()
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    DllExports::GdipDeletePrivateFontCollection(&nativeFontCollection);
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovPrivateFontCollection::AddFontFile(IN const WCHAR* filename)
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipPrivateAddFontFile(nativeFontCollection, filename));
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovPrivateFontCollection::AddMemoryFont(IN const void* memory,
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                     IN INT length)
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipPrivateAddMemoryFont(
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        nativeFontCollection,
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        memory,
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        length));
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif // _GDIPLUSFONTCOLL_H
150