/* * pcfdemo - demonstrate PCF font loading for Nano-X */ #include #include #define MWINCLUDECOLORS #include "nano-X.h" GR_FONT_ID font = 0; GR_WINDOW_ID main_wid; GR_FONT_INFO finfo; static void draw_string(void) { int count = 0; int x = 10; int y = 10; unsigned char ch; int tmp = 1024; GR_GC_ID gc = GrNewGC(); GrSetGCFont(gc, font); GrSetGCForeground(gc, GR_RGB(255, 255, 255)); GrSetGCBackground(gc, GR_RGB(0, 0, 0)); printf("First char = %d, last char = %d\n", finfo.firstchar, finfo.lastchar); printf("Max width = %d, max height = %d\n", finfo.maxwidth, finfo.height); GrText(main_wid, gc, x, y, &tmp, 1, GR_TFTOP | GR_TFUC16); //this cause an assert error /* for (ch = 0; ch < 255; ch++) { if (ch < finfo.firstchar || ch > finfo.lastchar) GrFillRect(main_wid, gc, x, y, finfo.maxwidth, finfo.height); else GrText(main_wid, gc, x, y, &ch, 1, GR_TFTOP | GR_TFASCII); if (++count >= 16) { x = 0; y += finfo.height; count = 0; } else x += finfo.maxwidth + 2; } */ GrDestroyGC(gc); } static void drawFile(const char * fname){ char buf[20]; //or int... unsigned? int count = 0; int x = 0; int y = 10; unsigned char ch; FILE * pfile; GR_GC_ID gc = GrNewGC(); GrSetGCFont(gc, font); GrSetGCForeground(gc, GR_RGB(255, 255, 255)); GrSetGCBackground(gc, GR_RGB(0, 0, 0)); pfile = fopen(fname, "r"); if( pfile > 0 ){ fread(buf, 1, 20, pfile); GrText(main_wid, gc, x, y, buf, 20, GR_TFTOP | GR_TFUTF8); } GrDestroyGC(gc); } int main(int argc, char **argv) { int width, height; if (GrOpen() == -1) return (-1); font = GrCreateFont("DejaVuLGCSans", 19, 0); //This is a builtin fonts generated by convbdf if (!font) printf("Unable to load font\n"); GrGetFontInfo(font, &finfo); width = ((finfo.maxwidth + 2) * 16); height = (((finfo.lastchar - finfo.firstchar) / 16) + 5) * finfo.height; main_wid = GrNewWindowEx(GR_WM_PROPS_APPWINDOW, "builtinfont", GR_ROOT_WINDOW_ID, 0, 0, width, height, BLACK); GrSelectEvents(main_wid, GR_EVENT_MASK_EXPOSURE|GR_EVENT_MASK_CLOSE_REQ); GrMapWindow(main_wid); while (1) { GR_EVENT event; GrGetNextEvent(&event); if (event.type == GR_EVENT_TYPE_EXPOSURE) draw_string(); // drawFile("utf8.txt"); // drawFile("unicode.txt"); if(event.type == GR_EVENT_TYPE_CLOSE_REQ) { GrClose(); exit(0); } } }