で各文字のイメージを取得できるようになったので、
- 一文字を描画する関数 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 件のコメント:
コメントを投稿