で各文字のイメージを取得できるようになったので、
- 一文字を描画する関数 draw_char
- 文字列を描画する関数 draw_string
void Main(void) { ..snip.. draw_string(bootInfo->vram, bootInfo->scrnx, 8, 8, "ABC 123", COLOR_WHITE); draw_string(bootInfo->vram, bootInfo->scrnx, 31, 31, "Tiny OS.", COLOR_BLACK); draw_string(bootInfo->vram, bootInfo->scrnx, 32, 32, "Tiny OS.", COLOR_WHITE); ..snip.. } void draw_char(char *vram, int width, int x, int y, char c, char color) { int i, j; char img; char *vram_aux; char *font; font = hankaku_font + c * 16; vram += y * width + x; for (i = 0; i < 16; i++) { img = font[i]; for (j = 0; j < 8; j++) { if ((img & 0x80) != 0) vram[j] = color; img <<= 1; } vram += width; } } void draw_string(char *vram, int width, int x, int y, char *string, char color) { char c; while ((c = *(string++)) != 0) { draw_char(vram, width, x, y, c, color); x += 8; } }
次は変数の値をsprintfで表示できるようにするのだけど、sprintfを作るのは面倒なので、Haribote OSのものをそのまま使うことにしよう。
0 件のコメント:
コメントを投稿