1 #include <rfb/rfb.h>
2
3 #define FONTDIR "/usr/lib/kbd/consolefonts/"
4 #define DEFAULTFONT FONTDIR "default8x16"
5
6 static char *fontlist[50]={
7 "8x16alt", "b.fnt", "c.fnt", "default8x16", "m.fnt", "ml.fnt", "mod_d.fnt",
8 "mod_s.fnt", "mr.fnt", "mu.fnt", "r.fnt", "rl.fnt", "ro.fnt", "s.fnt",
9 "sc.fnt", "scrawl_s.fnt", "scrawl_w.fnt", "sd.fnt", "t.fnt",
10 NULL
11 };
12
13 static rfbScreenInfoPtr rfbScreen = NULL;
14 static rfbFontDataPtr curFont = NULL;
showFont(int index)15 static void showFont(int index)
16 {
17 char buffer[1024];
18
19 if(!rfbScreen) return;
20
21 if(curFont)
22 rfbFreeFont(curFont);
23
24 strcpy(buffer,FONTDIR);
25 strcat(buffer,fontlist[index]);
26 curFont = rfbLoadConsoleFont(buffer);
27
28 rfbFillRect(rfbScreen,210,30-20,210+10*16,30-20+256*20/16,0xb77797);
29 if(curFont) {
30 int i,j;
31 for(j=0;j<256;j+=16)
32 for(i=0;i<16;i++)
33 rfbDrawCharWithClip(rfbScreen,curFont,210+10*i,30+j*20/16,j+i,
34 0,0,640,480,0xffffff,0x000000);
35 }
36 }
37
main(int argc,char ** argv)38 int main(int argc,char** argv)
39 {
40 rfbFontDataPtr font;
41 rfbScreenInfoPtr s=rfbGetScreen(&argc,argv,640,480,8,3,3);
42 int i,j;
43
44 if(!s)
45 return 0;
46
47 s->frameBuffer=(char*)malloc(640*480*3);
48 rfbInitServer(s);
49
50 for(j=0;j<480;j++)
51 for(i=0;i<640;i++) {
52 s->frameBuffer[(j*640+i)*3+0]=j*256/480;
53 s->frameBuffer[(j*640+i)*3+1]=i*256/640;
54 s->frameBuffer[(j*640+i)*3+2]=(i+j)*256/(480+640);
55 }
56
57 rfbScreen = s;
58 font=rfbLoadConsoleFont(DEFAULTFONT);
59 if(!font) {
60 rfbErr("Couldn't find %s\n",DEFAULTFONT);
61 exit(1);
62 }
63
64 for(j=0;j<0 && rfbIsActive(s);j++)
65 rfbProcessEvents(s,900000);
66
67 i = rfbSelectBox(s,font,fontlist,10,20,200,300,0xffdfdf,0x602040,2,showFont);
68 rfbLog("Selection: %d: %s\n",i,(i>=0)?fontlist[i]:"cancelled");
69
70 rfbFreeFont(font);
71 free(s->frameBuffer);
72 rfbScreenCleanup(s);
73
74 return(0);
75 }
76
77