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