static void the_title(int x, int y) { char *t1 = "MGRX 1.0"; char *t2 = "test programs launcher"; grt_centered.txo_fgcolor.v = LIGHTGREEN; grt_centered.txo_font = grf_big; GrDrawString(t1, strlen(t1), 0 + x, 0 + y, &grt_centered); grt_centered.txo_font = grf_std; GrDrawString(t2, strlen(t2), 0 + x, 40 + y, &grt_centered); }
static void paint_animation(void) { static int pos = 620; static int ini = 0; static GrContext *grc; int ltext, wtext; if (!ini) { grc = GrCreateContext(620, 30, NULL, NULL); if (grc == NULL) return; ini = 1; } grt_left.txo_fgcolor.v = CYAN; grt_left.txo_font = grf_std; ltext = strlen(animatedtext); wtext = GrStringWidth(animatedtext, ltext, &grt_left); GrSetContext(grc); GrClearContext(DARKGRAY); GrDrawString(animatedtext, ltext, pos, 15, &grt_left); GrSetContext(grcglob); GrBitBlt(NULL, 10, 8, grc, 0, 0, 629, 29, GrWRITE); pos -= 1; if (pos <= -wtext) pos = 620; }
void ws_bmdrawtext(struct ws_bitmap *bm, int x, int y, int w, const char *txt, GrColor fg, GrColor bg) { char buffer[256]; int clen = ws_charstrlen(w); my_assert(txt != NULL); if (clen > 255) { clen = 255; } strncpy(buffer, txt, clen); buffer[clen] = 0; if (strlen(buffer) == 0) { return; } ws_private.textopt.txo_bgcolor.v = bg == -1 ? GrOR : bg; ws_private.textopt.txo_fgcolor.v = fg; GrSetContext( (GrContext *)bm->bitmap ); GrDrawString(buffer, strlen(buffer), x, y, &ws_private.textopt); GrSetContext(NULL); }
void displayfont(GrFont *font,char *text,int len) { GrTextOption opt; int ww,hh; int bx,by; int bw,bh; GrEvent ev; memset(&opt,0,sizeof(opt)); opt.txo_font = font; opt.txo_xalign = GR_ALIGN_LEFT; opt.txo_yalign = GR_ALIGN_TOP; GrFilledBox(0,0,GrSizeX(),GrSizeY(),GrBlack()); opt.txo_direct = GR_TEXT_RIGHT; opt.txo_fgcolor.v = GrBlack(); opt.txo_bgcolor.v = c1; ww = GrStringWidth(text,len,&opt); hh = GrStringHeight(text,len,&opt); bw = ww+2*hh; bh = ww; bx = cx - bw/2; by = cy - bh/2; GrDrawString(text,len,bx+hh,by,&opt); opt.txo_direct = GR_TEXT_DOWN; opt.txo_bgcolor.v = c2; GrDrawString(text,len,bx+bw-hh,by,&opt); opt.txo_direct = GR_TEXT_LEFT; opt.txo_bgcolor.v = c3; GrDrawString(text,len,bx+bw-ww-hh,by+bh-hh,&opt); opt.txo_direct = GR_TEXT_UP; opt.txo_bgcolor.v = c4; GrDrawString(text,len,bx,by+bh-ww,&opt); GrEventWaitKeyOrClick(&ev); GrClearClipBox(GrBlack()); opt.txo_direct = GR_TEXT_RIGHT; opt.txo_fgcolor.v = c1; opt.txo_bgcolor.v = GrBlack(); bx = GrSizeX() / 16; by = GrSizeY() / 16; bx = (bx + 7) & ~7; while(by < GrSizeY()) { GrDrawString(test_text,strlen(test_text),bx,by,&opt); opt.txo_fgcolor.v ^= GR_UNDERLINE_TEXT; by += hh; } GrEventWaitKeyOrClick(&ev); }
static void paint_foot(char *s) { grt_centered.txo_fgcolor.v = LIGHTGREEN; grt_centered.txo_font = grf_std; GrSetClipBox(10, 440, 630, 470); GrClearClipBox(CYAN); GrDrawString(s, strlen(s), 320, 455, &grt_centered); GrResetClipBox(); }
static void the_info(int x, int y) { char aux[81]; char sys[4] = "?"; int nsys; char *kbsysencoding; int nenc; grt_centered.txo_fgcolor.v = CYAN; grt_centered.txo_font = grf_std; nsys = GrGetLibrarySystem(); if (nsys == MGRX_VERSION_GCC_386_DJGPP) strcpy(sys, "DJ2"); else if (nsys == MGRX_VERSION_GCC_386_LINUX) strcpy(sys, "LNX"); else if (nsys == MGRX_VERSION_GCC_386_X11) strcpy(sys, "X11"); else if (nsys == MGRX_VERSION_GCC_X86_64_LINUX) strcpy(sys, "L64"); else if (nsys == MGRX_VERSION_GCC_X86_64_X11) strcpy(sys, "X64"); else if (nsys == MGRX_VERSION_GCC_386_WIN32) strcpy(sys, "W32"); nenc = GrGetKbSysEncoding(); kbsysencoding = GrStrEncoding(nenc); sprintf(aux, "Version:%x System:%s", GrGetLibraryVersion(), sys); GrDrawString(aux, strlen(aux), 0 + x, 0 + y, &grt_centered); sprintf(aux, "KbSysEncoding:%s", kbsysencoding); GrDrawString(aux, strlen(aux), 0 + x, 20 + y, &grt_centered); sprintf(aux, "VideoDriver: %s", GrCurrentVideoDriver()->name); GrDrawString(aux, strlen(aux), 0 + x, 40 + y, &grt_centered); sprintf(aux, "Mode: %dx%d %d bpp", GrCurrentVideoMode()->width, GrCurrentVideoMode()->height, GrCurrentVideoMode()->bpp); GrDrawString(aux, strlen(aux), 0 + x, 60 + y, &grt_centered); }
/* Draw text txt to x,y (left, upper edge). maximum pixel width is w. fg,bg=fore/background color. if bg=-1 background is transparent. */ void ws_drawtext(int x, int y, int w, const char *txt, int fg, int bg) { char buffer[256]; int clen = ws_charstrlen(w); my_assert(txt != NULL); if (clen > 255) { clen = 255; } strncpy(buffer, txt, clen); buffer[clen] = 0; if (strlen(buffer) == 0) { return; } ws_private.textopt.txo_bgcolor.v = bg == -1 ? GrOR : bg; ws_private.textopt.txo_fgcolor.v = fg; GrDrawString(buffer, strlen(buffer), x, y, &ws_private.textopt); }