1 /**
2 ** fonttest.c ---- test text drawing
3 **
4 ** Copyright (c) 1995 Csaba Biegl, 820 Stirrup Dr, Nashville, TN 37221
5 ** [e-mail: csaba@vuse.vanderbilt.edu]
6 **
7 ** This is a test/demo file of the GRX graphics library.
8 ** You can use GRX test/demo files as you want.
9 **
10 ** The GRX graphics library is free software; you can redistribute it
11 ** and/or modify it under some conditions; see the "copying.grx" file
12 ** for details.
13 **
14 ** This library is distributed in the hope that it will be useful,
15 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 **
18 **/
19
20 #include <string.h>
21 #include "test.h"
22
23 int cx;
24 int cy;
25 GrColor c1;
26 GrColor c2;
27 GrColor c3;
28 GrColor c4;
29
30 char test_text[] = {
31 "QUICK BROWN FOX JUMPS OVER THE LAZY DOG, "
32 "quick brown fox jumps over the lazy dog !@#$%^&*()1234567890"
33 };
34
displayfont(GrFont * font,char * text,int len)35 void displayfont(GrFont *font,char *text,int len)
36 {
37 GrTextOption opt;
38 int ww,hh;
39 int bx,by;
40 int bw,bh;
41
42 memset(&opt,0,sizeof(opt));
43 opt.txo_font = font;
44 opt.txo_xalign = GR_ALIGN_LEFT;
45 opt.txo_yalign = GR_ALIGN_TOP;
46 GrFilledBox(0,0,GrSizeX(),GrSizeY(),GrBlack());
47 opt.txo_direct = GR_TEXT_RIGHT;
48 opt.txo_fgcolor.v = GrBlack();
49 opt.txo_bgcolor.v = c1;
50 ww = GrStringWidth(text,len,&opt);
51 hh = GrStringHeight(text,len,&opt);
52 bw = ww+2*hh;
53 bh = ww;
54 bx = cx - bw/2;
55 by = cy - bh/2;
56 GrDrawString(text,len,bx+hh,by,&opt);
57 opt.txo_direct = GR_TEXT_DOWN;
58 opt.txo_bgcolor.v = c2;
59 GrDrawString(text,len,bx+bw-hh,by,&opt);
60 opt.txo_direct = GR_TEXT_LEFT;
61 opt.txo_bgcolor.v = c3;
62 GrDrawString(text,len,bx+bw-ww-hh,by+bh-hh,&opt);
63 opt.txo_direct = GR_TEXT_UP;
64 opt.txo_bgcolor.v = c4;
65 GrDrawString(text,len,bx,by+bh-ww,&opt);
66 GrKeyRead();
67 GrClearClipBox(GrBlack());
68 opt.txo_direct = GR_TEXT_RIGHT;
69 opt.txo_fgcolor.v = c1;
70 opt.txo_bgcolor.v = GrBlack();
71 bx = GrSizeX() / 16;
72 by = GrSizeY() / 16;
73 bx = (bx + 7) & ~7;
74 while(by < GrSizeY()) {
75 GrDrawString(test_text,strlen(test_text),bx,by,&opt);
76 opt.txo_fgcolor.v ^= GR_UNDERLINE_TEXT;
77 by += hh;
78 }
79 GrKeyRead();
80 }
81
TESTFUNC(fonttest)82 TESTFUNC(fonttest)
83 {
84 GrFont *f;
85 int i;
86 char buff[100];
87 cx = GrSizeX() / 2;
88 cy = GrSizeY() / 2;
89 c1 = GrAllocColor(100,200,100);
90 c2 = GrAllocColor(150,150,100);
91 c3 = GrAllocColor(100,100,200);
92 c4 = GrAllocColor(100,180,180);
93 GrBox(GrSizeX()/16 - 2,
94 GrSizeY()/16 - 2,
95 GrSizeX() - GrSizeX()/16 + 1,
96 GrSizeY() - GrSizeY()/16 + 1,
97 GrAllocColor(250,100,100)
98 );
99 GrSetClipBox(GrSizeX()/16,
100 GrSizeY()/16,
101 GrSizeX() - GrSizeX()/16 - 1,
102 GrSizeY() - GrSizeY()/16 - 1
103 );
104 strcpy(buff,"Default GRX font");
105 displayfont(&GrDefaultFont,buff,strlen(buff));
106 strcpy(buff,"Default font scaled to 6x10");
107 displayfont(
108 GrBuildConvertedFont(
109 &GrDefaultFont,
110 (GR_FONTCVT_SKIPCHARS | GR_FONTCVT_RESIZE),
111 6,
112 10,
113 ' ',
114 'z'
115 ),
116 buff,
117 strlen(buff)
118 );
119 strcpy(buff,"Default font scaled to 12x24");
120 displayfont(
121 GrBuildConvertedFont(
122 &GrDefaultFont,
123 (GR_FONTCVT_SKIPCHARS | GR_FONTCVT_RESIZE),
124 12,
125 24,
126 ' ',
127 'z'
128 ),
129 buff,
130 strlen(buff)
131 );
132 strcpy(buff,"Default font scaled to 18x36");
133 displayfont(
134 GrBuildConvertedFont(
135 &GrDefaultFont,
136 (GR_FONTCVT_SKIPCHARS | GR_FONTCVT_RESIZE),
137 18,
138 36,
139 ' ',
140 'z'
141 ),
142 buff,
143 strlen(buff)
144 );
145 strcpy(buff,"Default font scaled to 10x20 proportional");
146 displayfont(
147 GrBuildConvertedFont(
148 &GrDefaultFont,
149 (GR_FONTCVT_SKIPCHARS | GR_FONTCVT_RESIZE | GR_FONTCVT_PROPORTION),
150 10,
151 20,
152 ' ',
153 'z'
154 ),
155 buff,
156 strlen(buff)
157 );
158 strcpy(buff,"Default font scaled to 10x20 bold");
159 displayfont(
160 GrBuildConvertedFont(
161 &GrDefaultFont,
162 (GR_FONTCVT_SKIPCHARS | GR_FONTCVT_RESIZE | GR_FONTCVT_BOLDIFY),
163 10,
164 20,
165 ' ',
166 'z'
167 ),
168 buff,
169 strlen(buff)
170 );
171 strcpy(buff,"Default font scaled to 10x20 italic");
172 displayfont(
173 GrBuildConvertedFont(
174 &GrDefaultFont,
175 (GR_FONTCVT_SKIPCHARS | GR_FONTCVT_RESIZE | GR_FONTCVT_ITALICIZE),
176 10,
177 20,
178 ' ',
179 'z'
180 ),
181 buff,
182 strlen(buff)
183 );
184 for(i = 0; i < Argc; i++) {
185 f = GrLoadFont(Argv[i]);
186 if(f) {
187 sprintf(buff,"This is font %s",Argv[i]);
188 displayfont(f,buff,strlen(buff));
189 }
190 }
191 }
192
193