Skip to content

Commit 244d287

Browse files
committed
Simplified font handling on the C side via macro magic.
1 parent 1b47ba6 commit 244d287

File tree

1 file changed

+29
-138
lines changed

1 file changed

+29
-138
lines changed

cbits/HsGLUT.c

Lines changed: 29 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -106,152 +106,43 @@ hs_GLUT_getProcAddress(const char *name)
106106

107107
/* -------------------------------------------------------------------------- */
108108
#if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__WATCOMC__)
109-
110-
void*
111-
hs_GLUT_glutStrokeRoman(void)
112-
{
113-
return ((void *)0x0000);
114-
}
115-
116-
void*
117-
hs_GLUT_glutStrokeMonoRoman(void)
118-
{
119-
return ((void *)0x0001);
120-
}
121-
122-
void*
123-
hs_GLUT_glutBitmap9By15(void)
124-
{
125-
return ((void *)0x0002);
126-
}
127-
128-
void*
129-
hs_GLUT_glutBitmap8By13(void)
130-
{
131-
return ((void *)0x0003);
132-
}
133-
134-
void*
135-
hs_GLUT_glutBitmapTimesRoman10(void)
136-
{
137-
return ((void *)0x0004);
138-
}
139-
140-
void*
141-
hs_GLUT_glutBitmapTimesRoman24(void)
142-
{
143-
return ((void *)0x0005);
144-
}
145-
146-
void*
147-
hs_GLUT_glutBitmapHelvetica10(void)
148-
{
149-
return ((void *)0x0006);
150-
}
151-
152-
void*
153-
hs_GLUT_glutBitmapHelvetica12(void)
154-
{
155-
return ((void *)0x0007);
156-
}
157-
158-
void*
159-
hs_GLUT_glutBitmapHelvetica18(void)
160-
{
161-
return ((void *)0x0008);
162-
}
163-
109+
#define INIT_FONT(name,num) hs_##name = ((void*)(num))
164110
#else
165-
166-
void*
167-
hs_GLUT_glutStrokeRoman(void)
168-
{
169-
return hs_GLUT_getProcAddress("glutStrokeRoman");
170-
}
171-
172-
void*
173-
hs_GLUT_glutStrokeMonoRoman(void)
174-
{
175-
return hs_GLUT_getProcAddress("glutStrokeMonoRoman");
176-
}
177-
178-
void*
179-
hs_GLUT_glutBitmap9By15(void)
180-
{
181-
return hs_GLUT_getProcAddress("glutBitmap9By15");
182-
}
183-
184-
void*
185-
hs_GLUT_glutBitmap8By13(void)
186-
{
187-
return hs_GLUT_getProcAddress("glutBitmap8By13");
188-
}
189-
190-
void*
191-
hs_GLUT_glutBitmapTimesRoman10(void)
192-
{
193-
return hs_GLUT_getProcAddress("glutBitmapTimesRoman10");
194-
}
195-
196-
void*
197-
hs_GLUT_glutBitmapTimesRoman24(void)
198-
{
199-
return hs_GLUT_getProcAddress("glutBitmapTimesRoman24");
200-
}
201-
202-
void*
203-
hs_GLUT_glutBitmapHelvetica10(void)
204-
{
205-
return hs_GLUT_getProcAddress("glutBitmapHelvetica10");
206-
}
207-
208-
void*
209-
hs_GLUT_glutBitmapHelvetica12(void)
210-
{
211-
return hs_GLUT_getProcAddress("glutBitmapHelvetica12");
212-
}
213-
214-
void*
215-
hs_GLUT_glutBitmapHelvetica18(void)
216-
{
217-
return hs_GLUT_getProcAddress("glutBitmapHelvetica18");
218-
}
219-
111+
#define INIT_FONT(name,num) hs_##name = hs_GLUT_getProcAddress(#name)
220112
#endif
221113

222114
void*
223115
hs_GLUT_marshalBitmapFont(int fontID)
224116
{
225117
static int firstTime = 1;
226-
static void *h_glutBitmap9By15 = NULL;
227-
static void *h_glutBitmap8By13 = NULL;
228-
static void *h_glutBitmapTimesRoman10 = NULL;
229-
static void *h_glutBitmapTimesRoman24 = NULL;
230-
static void *h_glutBitmapHelvetica10 = NULL;
231-
static void *h_glutBitmapHelvetica12 = NULL;
232-
static void *h_glutBitmapHelvetica18 = NULL;
233-
118+
static void *hs_glutBitmap9By15 = NULL;
119+
static void *hs_glutBitmap8By13 = NULL;
120+
static void *hs_glutBitmapTimesRoman10 = NULL;
121+
static void *hs_glutBitmapTimesRoman24 = NULL;
122+
static void *hs_glutBitmapHelvetica10 = NULL;
123+
static void *hs_glutBitmapHelvetica12 = NULL;
124+
static void *hs_glutBitmapHelvetica18 = NULL;
234125

235126
if (firstTime) {
236127
firstTime = 0;
237128

238-
h_glutBitmap9By15 = hs_GLUT_glutBitmap9By15();
239-
h_glutBitmap8By13 = hs_GLUT_glutBitmap8By13();
240-
h_glutBitmapTimesRoman10 = hs_GLUT_glutBitmapTimesRoman10();
241-
h_glutBitmapTimesRoman24 = hs_GLUT_glutBitmapTimesRoman24();
242-
h_glutBitmapHelvetica10 = hs_GLUT_glutBitmapHelvetica10();
243-
h_glutBitmapHelvetica12 = hs_GLUT_glutBitmapHelvetica12();
244-
h_glutBitmapHelvetica18 = hs_GLUT_glutBitmapHelvetica18();
129+
INIT_FONT(glutBitmap9By15, 0x0002);
130+
INIT_FONT(glutBitmap8By13, 0x0003);
131+
INIT_FONT(glutBitmapTimesRoman10, 0x0004);
132+
INIT_FONT(glutBitmapTimesRoman24, 0x0005);
133+
INIT_FONT(glutBitmapHelvetica10, 0x0006);
134+
INIT_FONT(glutBitmapHelvetica12, 0x0007);
135+
INIT_FONT(glutBitmapHelvetica18, 0x0008);
245136
}
246137

247138
switch (fontID) {
248-
case 0 : return h_glutBitmap8By13;
249-
case 1 : return h_glutBitmap9By15;
250-
case 2 : return h_glutBitmapTimesRoman10;
251-
case 3 : return h_glutBitmapTimesRoman24;
252-
case 4 : return h_glutBitmapHelvetica10;
253-
case 5 : return h_glutBitmapHelvetica12;
254-
case 6 : return h_glutBitmapHelvetica18;
139+
case 0 : return hs_glutBitmap8By13;
140+
case 1 : return hs_glutBitmap9By15;
141+
case 2 : return hs_glutBitmapTimesRoman10;
142+
case 3 : return hs_glutBitmapTimesRoman24;
143+
case 4 : return hs_glutBitmapHelvetica10;
144+
case 5 : return hs_glutBitmapHelvetica12;
145+
case 6 : return hs_glutBitmapHelvetica18;
255146
}
256147
return (void*)0;
257148
}
@@ -260,19 +151,19 @@ void*
260151
hs_GLUT_marshalStrokeFont(int fontID)
261152
{
262153
static int firstTime = 1;
263-
static void *h_glutStrokeRoman = NULL;
264-
static void *h_glutStrokeMonoRoman = NULL;
154+
static void *hs_glutStrokeRoman = NULL;
155+
static void *hs_glutStrokeMonoRoman = NULL;
265156

266157
if (firstTime) {
267158
firstTime = 0;
268159

269-
h_glutStrokeRoman = hs_GLUT_glutStrokeRoman();
270-
h_glutStrokeMonoRoman = hs_GLUT_glutStrokeMonoRoman();
160+
INIT_FONT(glutStrokeRoman, 0x0000);
161+
INIT_FONT(glutStrokeMonoRoman, 0x0001);
271162
}
272163

273164
switch (fontID) {
274-
case 0 : return h_glutStrokeRoman;
275-
case 1 : return h_glutStrokeMonoRoman;
165+
case 0 : return hs_glutStrokeRoman;
166+
case 1 : return hs_glutStrokeMonoRoman;
276167
}
277168
return (void*)0;
278169
}

0 commit comments

Comments
 (0)