1 /* -----------------------------------------------------------------------------
6 * Author(s) : David Beazley (beazley@cs.uchicago.edu)
7 * Copyright (C) 1995-1996
9 * See the file LICENSE for information on usage and redistribution.
10 * ----------------------------------------------------------------------------- */
15 static char Char_A[80] = "\
27 static char Char_B[80] = "\
39 static char Char_C[80] = "\
51 static char Char_D[80] = "\
62 static char Char_E[80] = "\
73 static char Char_F[80] = "\
84 static char Char_G[80] = "\
95 static char Char_H[80] = "\
106 static char Char_I[80] = "\
117 static char Char_J[80] = "\
128 static char Char_K[80] = "\
139 static char Char_L[80] = "\
150 static char Char_M[80] = "\
161 static char Char_N[80] = "\
172 static char Char_O[80] = "\
183 static char Char_P[80] = "\
194 static char Char_Q[80] = "\
205 static char Char_R[80] = "\
216 static char Char_S[80] = "\
227 static char Char_T[80] = "\
238 static char Char_U[80] = "\
249 static char Char_V[80] = "\
260 static char Char_W[80] = "\
271 static char Char_X[80] = "\
282 static char Char_Y[80] = "\
293 static char Char_Z[80] = "\
304 static char Char_0[80] = "\
315 static char Char_1[80] = "\
326 static char Char_2[80] = "\
337 static char Char_3[80] = "\
348 static char Char_4[80] = "\
359 static char Char_5[80] = "\
370 static char Char_6[80] = "\
381 static char Char_7[80] = "\
392 static char Char_8[80] = "\
403 static char Char_9[80] = "\
414 static char Char_MINUS[80] = "\
425 static char Char_PLUS[80] = "\
436 static char Char_EQUAL[80] = "\
447 static char Char_LPAREN[80] = "\
458 static char Char_RPAREN[80] = "\
469 static char Char_QUOTE[80] = "\
480 static char Char_COLON[80] = "\
491 static char Char_PERIOD[80] = "\
502 static char Char_COMMA[80] = "\
514 static char Char_SLASH[80] = "\
526 static char Char_SPACE[80] = "\
538 static char *GP_Font[128];
539 static int InitGP_Font = 0;
541 static void initGP_Fonts(void) {
544 for (i = 0; i < 128; i++)
545 GP_Font[i] = (char *) 0;
547 GP_Font['A'] = GP_Font['a'] = Char_A;
548 GP_Font['B'] = GP_Font['b'] = Char_B;
549 GP_Font['C'] = GP_Font['c'] = Char_C;
550 GP_Font['D'] = GP_Font['d'] = Char_D;
551 GP_Font['E'] = GP_Font['e'] = Char_E;
552 GP_Font['F'] = GP_Font['f'] = Char_F;
553 GP_Font['G'] = GP_Font['g'] = Char_G;
554 GP_Font['H'] = GP_Font['h'] = Char_H;
555 GP_Font['I'] = GP_Font['i'] = Char_I;
556 GP_Font['J'] = GP_Font['j'] = Char_J;
557 GP_Font['K'] = GP_Font['k'] = Char_K;
558 GP_Font['L'] = GP_Font['l'] = Char_L;
559 GP_Font['M'] = GP_Font['m'] = Char_M;
560 GP_Font['N'] = GP_Font['n'] = Char_N;
561 GP_Font['O'] = GP_Font['o'] = Char_O;
562 GP_Font['P'] = GP_Font['p'] = Char_P;
563 GP_Font['Q'] = GP_Font['q'] = Char_Q;
564 GP_Font['R'] = GP_Font['r'] = Char_R;
565 GP_Font['S'] = GP_Font['s'] = Char_S;
566 GP_Font['T'] = GP_Font['t'] = Char_T;
567 GP_Font['U'] = GP_Font['u'] = Char_U;
568 GP_Font['V'] = GP_Font['v'] = Char_V;
569 GP_Font['W'] = GP_Font['w'] = Char_W;
570 GP_Font['X'] = GP_Font['x'] = Char_X;
571 GP_Font['Y'] = GP_Font['y'] = Char_Y;
572 GP_Font['Z'] = GP_Font['z'] = Char_Z;
573 GP_Font['0'] = Char_0;
574 GP_Font['1'] = Char_1;
575 GP_Font['2'] = Char_2;
576 GP_Font['3'] = Char_3;
577 GP_Font['4'] = Char_4;
578 GP_Font['5'] = Char_5;
579 GP_Font['6'] = Char_6;
580 GP_Font['7'] = Char_7;
581 GP_Font['8'] = Char_8;
582 GP_Font['9'] = Char_9;
583 GP_Font['.'] = Char_PERIOD;
584 GP_Font[','] = Char_COMMA;
585 GP_Font['='] = Char_EQUAL;
586 GP_Font['-'] = Char_MINUS;
587 GP_Font['+'] = Char_PLUS;
588 GP_Font['\"'] = Char_QUOTE;
589 GP_Font['('] = Char_LPAREN;
590 GP_Font[')'] = Char_RPAREN;
591 GP_Font[':'] = Char_COLON;
592 GP_Font['/'] = Char_SLASH;
593 GP_Font[' '] = Char_SPACE;
597 /* -----------------------------------------------------------------------
598 void FrameBuffer_drawchar(FrameBuffer *f, int x, int y, Pixel fgcolor, Pixel bgcolor, char chr, int orientation)
600 Draws a character at location x, y with given color and orientation parameters.
601 Orientation can either be HORIZONTAL or VERTICAL
602 ----------------------------------------------------------------------- */
603 void FrameBuffer_drawchar(FrameBuffer *f, int x, int y, int fgcolor,
604 int bgcolor, char chr, int orientation) {
611 if (!InitGP_Font) initGP_Fonts();
614 bc = (Pixel) bgcolor;
618 if (orientation == HORIZONTAL) {
619 if ((x < f->xmin) || (x > f->xmax-8) ||
620 (y < f->ymin) || (y > f->ymax-10)) return;
622 ch = GP_Font[(int) chr];
624 p = &f->pixels[y+9][x];
625 for (i = 0; i < 10; i++) {
627 for (j = 0; j< 8; j++) {
628 if (*(ch++) == 'x') *p= c;
629 else if (bgcolor >= 0)
636 if ((x < f->xmin+10) || (x >= f->xmax) ||
637 (y < f->ymin) || (y > f->ymax-8)) return;
639 ch = GP_Font[(int) chr];
641 p = &f->pixels[y][x-9];
642 for (i = 0; i < 10; i++) {
644 for (j = 0; j< 8; j++) {
645 if (*(ch++) == 'x') *p= c;
646 else if (bgcolor >= 0)
655 /* ----------------------------------------------------------------------
656 void FrameBuffer_drawstring(FrameBuffer *f, int x, int y, int fgcolor,
657 int bgcolor, char *text, int orientation)
659 Draws an ASCII string on the framebuffer. Can be oriented either horizontally
661 ---------------------------------------------------------------------- */
663 void FrameBuffer_drawstring(FrameBuffer *f, int x, int y, int fgcolor, int bgcolor, char *text, int orientation) {
667 int xpixels, ypixels;
676 if (orientation == HORIZONTAL) {
677 x1 = x; y1= y1- 10*xpixels;
679 y1 = y; x1= x1 + 10*ypixels;
682 FrameBuffer_drawchar(f, x1,y1,fgcolor, bgcolor,*c, orientation);
683 if (orientation == HORIZONTAL) {
685 if (x1 >= (xpixels-8)) {
690 if (y1 >= (ypixels-8)) {
691 y1 = y; x1 = x1 + 10;}
692 if (x1 > (xpixels-10)) return;