Skip to content

Commit

Permalink
显示鼠标
Browse files Browse the repository at this point in the history
  • Loading branch information
yourtion committed Sep 10, 2014
1 parent 1b91f07 commit 76c2755
Showing 1 changed file with 61 additions and 2 deletions.
63 changes: 61 additions & 2 deletions 05_day/bootpack.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ void boxfill8(unsigned char *vram, int xsize, unsigned char c, int x0, int y0, i
void init_screen(char *vram, int x, int y);
void putfont8(char *vram, int xsize, int x, int y, char c, char *font);
void putfonts8_asc(char *vram, int xsize, int x, int y, char c, unsigned char *s);

void init_mouse_cursor8(char *mouse, char bc);
void putblock8_8(char *vram, int vxsize, int pxsize, int pysize, int px0, int py0, char *buf, int bxsize);

#define COL8_000000 0
#define COL8_FF0000 1
Expand Down Expand Up @@ -40,11 +41,18 @@ struct BOOTINFO {
void HariMain(void)
{
struct BOOTINFO *binfo = (struct BOOTINFO *) 0x0ff0;
char s[40];
char s[40], mcursor[256];
int mx, my;

init_palette();
init_screen(binfo->vram, binfo->scrnx, binfo->scrny);

/* 显示鼠标 */
mx = (binfo->scrnx - 16) / 2; /* 计算画面的中心坐标*/
my = (binfo->scrny - 28 - 16) / 2;
init_mouse_cursor8(mcursor, COL8_008484);
putblock8_8(binfo->vram, binfo->scrnx, 16, 16, mx, my, mcursor, 16);

putfonts8_asc(binfo->vram, binfo->scrnx, 8, 8, COL8_FFFFFF, "ABC 123");
putfonts8_asc(binfo->vram, binfo->scrnx, 31, 31, COL8_000000, "Haribote OS.");
putfonts8_asc(binfo->vram, binfo->scrnx, 30, 30, COL8_FFFFFF, "Haribote OS.");
Expand Down Expand Up @@ -158,4 +166,55 @@ void putfonts8_asc(char *vram, int xsize, int x, int y, char c, unsigned char *s
x += 8;
}
return;
}

void init_mouse_cursor8(char *mouse, char bc)
/* マウスカーソルを準備(16x16) */
{
static char cursor[16][16] = {
"**************..",
"*OOOOOOOOOOO*...",
"*OOOOOOOOOO*....",
"*OOOOOOOOO*.....",
"*OOOOOOOO*......",
"*OOOOOOO*.......",
"*OOOOOOO*.......",
"*OOOOOOOO*......",
"*OOOO**OOO*.....",
"*OOO*..*OOO*....",
"*OO*....*OOO*...",
"*O*......*OOO*..",
"**........*OOO*.",
"*..........*OOO*",
"............*OO*",
".............***"
};
int x, y;

for (y = 0; y < 16; y++) {
for (x = 0; x < 16; x++) {
if (cursor[y][x] == '*') {
mouse[y * 16 + x] = COL8_000000;
}
if (cursor[y][x] == 'O') {
mouse[y * 16 + x] = COL8_FFFFFF;
}
if (cursor[y][x] == '.') {
mouse[y * 16 + x] = bc;
}
}
}
return;
}

void putblock8_8(char *vram, int vxsize, int pxsize,
int pysize, int px0, int py0, char *buf, int bxsize)
{
int x, y;
for (y = 0; y < pysize; y++) {
for (x = 0; x < pxsize; x++) {
vram[(py0 + y) * vxsize + (px0 + x)] = buf[y * bxsize + x];
}
}
return;
}

0 comments on commit 76c2755

Please sign in to comment.