Fix copy paste error in file header
[reactos.git] / rostests / apitests / gdi32api / tests / CreateFontIndirect.c
1
2 INT
3 Test_CreateFontIndirectA(PTESTINFO pti)
4 {
5 LOGFONTA logfont;
6 HFONT hFont;
7 ULONG ret;
8 ENUMLOGFONTEXDVW elfedv2;
9
10 logfont.lfHeight = 12;
11 logfont.lfWidth = 0;
12 logfont.lfEscapement = 0;
13 logfont.lfOrientation = 0;
14 logfont.lfWeight = FW_NORMAL;
15 logfont.lfItalic = 0;
16 logfont.lfUnderline = 0;
17 logfont.lfStrikeOut = 0;
18 logfont.lfCharSet = DEFAULT_CHARSET;
19 logfont.lfOutPrecision = OUT_DEFAULT_PRECIS;
20 logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
21 logfont.lfQuality = PROOF_QUALITY;
22 logfont.lfPitchAndFamily = DEFAULT_PITCH;
23 memset(logfont.lfFaceName, 'A', LF_FACESIZE);
24 hFont = CreateFontIndirectA(&logfont);
25 TEST(hFont != 0);
26
27 memset(&elfedv2, 0, sizeof(elfedv2));
28 ret = GetObjectW(hFont, sizeof(elfedv2), &elfedv2);
29 TEST(ret == sizeof(ENUMLOGFONTEXW) + 2*sizeof(DWORD));
30 TEST(elfedv2.elfEnumLogfontEx.elfLogFont.lfFaceName[LF_FACESIZE-1] == 0);
31 TEST(elfedv2.elfEnumLogfontEx.elfFullName[0] == 0);
32
33 return APISTATUS_NORMAL;
34 }
35
36 INT
37 Test_CreateFontIndirectW(PTESTINFO pti)
38 {
39 LOGFONTW logfont;
40 HFONT hFont;
41 ULONG ret;
42 ENUMLOGFONTEXDVW elfedv2;
43
44 logfont.lfHeight = 12;
45 logfont.lfWidth = 0;
46 logfont.lfEscapement = 0;
47 logfont.lfOrientation = 0;
48 logfont.lfWeight = FW_NORMAL;
49 logfont.lfItalic = 0;
50 logfont.lfUnderline = 0;
51 logfont.lfStrikeOut = 0;
52 logfont.lfCharSet = DEFAULT_CHARSET;
53 logfont.lfOutPrecision = OUT_DEFAULT_PRECIS;
54 logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
55 logfont.lfQuality = PROOF_QUALITY;
56 logfont.lfPitchAndFamily = DEFAULT_PITCH;
57 memset(logfont.lfFaceName, 'A', LF_FACESIZE * 2);
58 hFont = CreateFontIndirectW(&logfont);
59 TEST(hFont != 0);
60
61 memset(&elfedv2, 0, sizeof(elfedv2));
62 ret = GetObjectW(hFont, sizeof(elfedv2), &elfedv2);
63 TEST(ret == sizeof(ENUMLOGFONTEXW) + 2*sizeof(DWORD));
64 TEST(elfedv2.elfEnumLogfontEx.elfLogFont.lfFaceName[LF_FACESIZE-1] == ((WCHAR)'A' << 8) + 'A');
65 TEST(elfedv2.elfEnumLogfontEx.elfFullName[0] == 0);
66 /* Theres a bunch of data in elfFullName ... */
67
68 return APISTATUS_NORMAL;
69 }
70
71 INT
72 Test_CreateFontIndirectExA(PTESTINFO pti)
73 {
74 ENUMLOGFONTEXDVA elfedva, elfedva2;
75 ENUMLOGFONTEXDVW elfedvw;
76 ENUMLOGFONTEXA *penumlfa;
77 LOGFONTA *plogfonta;
78 HFONT hFont;
79 ULONG ret;
80
81 memset(&elfedva, 0, sizeof(elfedva));
82 penumlfa = &elfedva.elfEnumLogfontEx;
83 plogfonta = &elfedva.elfEnumLogfontEx.elfLogFont;
84
85 plogfonta->lfHeight = 12;
86 plogfonta->lfWidth = 0;
87 plogfonta->lfEscapement = 0;
88 plogfonta->lfOrientation = 0;
89 plogfonta->lfWeight = FW_NORMAL;
90 plogfonta->lfItalic = 0;
91 plogfonta->lfUnderline = 0;
92 plogfonta->lfStrikeOut = 0;
93 plogfonta->lfCharSet = DEFAULT_CHARSET;
94 plogfonta->lfOutPrecision = OUT_DEFAULT_PRECIS;
95 plogfonta->lfClipPrecision = CLIP_DEFAULT_PRECIS;
96 plogfonta->lfQuality = PROOF_QUALITY;
97 plogfonta->lfPitchAndFamily = DEFAULT_PITCH;
98
99 memset(plogfonta->lfFaceName, 'A', LF_FACESIZE * sizeof(WCHAR));
100 memset(penumlfa->elfFullName, 'B', LF_FULLFACESIZE * sizeof(WCHAR));
101
102 hFont = CreateFontIndirectExA(&elfedva);
103 TEST(hFont != 0);
104
105 ret = GetObjectW(hFont, sizeof(elfedvw), &elfedvw);
106 TEST(ret == sizeof(ENUMLOGFONTEXW) + 2*sizeof(DWORD));
107 TEST(elfedvw.elfEnumLogfontEx.elfLogFont.lfFaceName[LF_FACESIZE-1] == 0);
108 TEST(elfedvw.elfEnumLogfontEx.elfFullName[LF_FULLFACESIZE-1] == 0);
109
110 memset(&elfedva2, 0, sizeof(elfedva2));
111 ret = GetObjectA(hFont, sizeof(elfedva2), &elfedva2);
112 TEST(ret == sizeof(ENUMLOGFONTEXDVA));
113 TEST(elfedva2.elfEnumLogfontEx.elfLogFont.lfFaceName[LF_FACESIZE-1] == 0);
114 TEST(elfedva2.elfEnumLogfontEx.elfFullName[LF_FULLFACESIZE-1] == 0);
115
116 return APISTATUS_NORMAL;
117 }
118
119 INT
120 Test_CreateFontIndirectExW(PTESTINFO pti)
121 {
122 ENUMLOGFONTEXDVW elfedv, elfedv2;
123 ENUMLOGFONTEXDVA elfedva;
124 ENUMLOGFONTEXW *penumlfw;
125 LOGFONTW *plogfontw;
126 HFONT hFont;
127 ULONG ret;
128
129 memset(&elfedv, 0, sizeof(elfedv));
130 penumlfw = &elfedv.elfEnumLogfontEx;
131 plogfontw = &elfedv.elfEnumLogfontEx.elfLogFont;
132
133 plogfontw->lfHeight = 12;
134 plogfontw->lfWidth = 0;
135 plogfontw->lfEscapement = 0;
136 plogfontw->lfOrientation = 0;
137 plogfontw->lfWeight = FW_NORMAL;
138 plogfontw->lfItalic = 0;
139 plogfontw->lfUnderline = 0;
140 plogfontw->lfStrikeOut = 0;
141 plogfontw->lfCharSet = DEFAULT_CHARSET;
142 plogfontw->lfOutPrecision = OUT_DEFAULT_PRECIS;
143 plogfontw->lfClipPrecision = CLIP_DEFAULT_PRECIS;
144 plogfontw->lfQuality = PROOF_QUALITY;
145 plogfontw->lfPitchAndFamily = DEFAULT_PITCH;
146
147 memset(plogfontw->lfFaceName, 'A', LF_FACESIZE * sizeof(WCHAR));
148 memset(penumlfw->elfFullName, 'B', LF_FULLFACESIZE * sizeof(WCHAR));
149
150 hFont = CreateFontIndirectExW(&elfedv);
151 TEST(hFont != 0);
152
153 memset(&elfedv2, 0, sizeof(elfedv2));
154 ret = GetObjectW(hFont, sizeof(elfedv2), &elfedv2);
155 TEST(ret == sizeof(ENUMLOGFONTEXW) + 2*sizeof(DWORD));
156 TEST(elfedv2.elfEnumLogfontEx.elfLogFont.lfFaceName[LF_FACESIZE-1] == ((WCHAR)'A' << 8) + 'A');
157 TEST(elfedv2.elfEnumLogfontEx.elfFullName[LF_FULLFACESIZE-1] == ((WCHAR)'B' << 8) + 'B');
158
159 memset(&elfedva, 0, sizeof(elfedva));
160 ret = GetObjectA(hFont, sizeof(elfedva), &elfedva);
161 TEST(ret == sizeof(ENUMLOGFONTEXDVA));
162 TEST(elfedva.elfEnumLogfontEx.elfLogFont.lfFaceName[LF_FACESIZE-1] == '?');
163 TEST(elfedva.elfEnumLogfontEx.elfFullName[LF_FULLFACESIZE-1] == 0);
164
165 return APISTATUS_NORMAL;
166 }
167
168
169 INT
170 Test_CreateFontIndirect(PTESTINFO pti)
171 {
172
173 Test_CreateFontIndirectA(pti);
174 Test_CreateFontIndirectW(pti);
175 Test_CreateFontIndirectExA(pti);
176 Test_CreateFontIndirectExW(pti);
177
178
179 return APISTATUS_NORMAL;
180 }