Files
retrobsd/share/examples/gpanel/font.c
2015-10-09 13:21:29 -07:00

95 lines
2.7 KiB
C

/*
* Draw samples of various fonts.
*/
#include <stdio.h>
#include <sys/gpanel.h>
/*
* Data from external font files.
*/
extern const struct gpanel_font_t font_lucidasans15;
extern const struct gpanel_font_t font_lucidasans11;
extern const struct gpanel_font_t font_lucidasans9;
extern const struct gpanel_font_t font_lucidasans7;
extern const struct gpanel_font_t font_verdana7;
extern const struct gpanel_font_t font_6x9;
extern const struct gpanel_font_t font_5x7;
extern const struct gpanel_font_t font_digits32;
extern const struct gpanel_font_t font_digits20;
/*
* Color constants.
*/
#define COLOR_RGB(r,g,b) ((r)<<11 | (g)<<5 | (b))
#define COLOR_BLACK 0
#define COLOR_WHITE COLOR_RGB(31, 63, 31)
#define COLOR_YELLOW COLOR_RGB(31, 63, 0)
#define COLOR_MAGENTA COLOR_RGB(31, 0, 31)
#define COLOR_CYAN COLOR_RGB(0, 63, 31)
#define COLOR_RED COLOR_RGB(31, 0, 0)
#define COLOR_GREEN COLOR_RGB(0, 63, 0)
#define COLOR_BLUE COLOR_RGB(0, 0, 31)
/*
* Screen size.
*/
int xsize, ysize;
void show(const struct gpanel_font_t *font, const char *title, int digits_only)
{
char line[100];
int x = 0, y = 0, i, color;
const char *phrase = digits_only ? "0123456789" :
"The quick brown fox jumps over the lazy dog.";
static const int colortab[] = {
COLOR_YELLOW, COLOR_CYAN, COLOR_MAGENTA,
COLOR_RED, COLOR_GREEN, COLOR_BLUE,
0,
};
gpanel_clear(COLOR_BLACK, 0, 0);
gpanel_text(&font_lucidasans15, COLOR_WHITE, COLOR_BLACK, x, y, title);
y += font_lucidasans15.height * 2;
for (i=0; y<ysize; i++) {
color = colortab[i];
if (color == 0)
color = colortab[i = 0];
gpanel_text(font, color, COLOR_BLACK, x, y, phrase);
y += font->height;
}
printf("Font %s: press Enter...", title);
fflush(stdout);
fgets(line, sizeof(line), stdin);
}
int main()
{
char *devname = "/dev/tft0";
int x, y, color;
if (gpanel_open(devname) < 0) {
printf("Cannot open %s\n", devname);
exit(-1);
}
gpanel_clear(0, &xsize, &ysize);
printf("Screen size %u x %u.\n", xsize, ysize);
printf("Draw fonts.\n");
printf("Press ^C to stop.\n");
for (;;) {
show(&font_lucidasans15, "Lucida Sans 15", 0);
show(&font_lucidasans11, "Lucida Sans 11", 0);
show(&font_lucidasans9, "Lucida Sans 9", 0);
show(&font_lucidasans7, "Lucida Sans 7", 0);
show(&font_verdana7, "Verdana 7", 0);
show(&font_6x9, "Fixed 6x9", 0);
show(&font_5x7, "Fixed 5x7", 0);
show(&font_digits32, "Digits 32", 1);
show(&font_digits20, "Digits 20", 1);
}
return 0;
}