mirror of
https://github.com/yourtion/30dayMakeOS.git
synced 2026-02-02 17:49:01 +08:00
43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
int api_openwin(char *buf, int xsiz, int ysiz, int col_inv, char *title);
|
||
void api_initmalloc(void);
|
||
char *api_malloc(int size);
|
||
void api_refreshwin(int win, int x0, int y0, int x1, int y1);
|
||
void api_linewin(int win, int x0, int y0, int x1, int y1, int col);
|
||
int api_getkey(int mode);
|
||
void api_end(void);
|
||
|
||
unsigned char rgb2pal(int r, int g, int b, int x, int y);
|
||
|
||
void HariMain(void)
|
||
{
|
||
char *buf;
|
||
int win, x, y;
|
||
api_initmalloc();
|
||
buf = api_malloc(144 * 164);
|
||
win = api_openwin(buf, 144, 164, -1, "color2");
|
||
for (y = 0; y < 128; y++) {
|
||
for (x = 0; x < 128; x++) {
|
||
buf[(x + 8) + (y + 28) * 144] = rgb2pal(x * 2, y * 2, 0, x, y);
|
||
}
|
||
}
|
||
api_refreshwin(win, 8, 28, 136, 156);
|
||
api_getkey(1); /*等待按下任意键*/
|
||
api_end();
|
||
}
|
||
|
||
unsigned char rgb2pal(int r, int g, int b, int x, int y)
|
||
{
|
||
static int table[4] = { 3, 1, 0, 2 };
|
||
int i;
|
||
x &= 1; /*判断是偶数还是奇数*/
|
||
y &= 1;
|
||
i = table[x + y * 2]; /*用来生成中间色的常量*/
|
||
r = (r * 21) / 256; /* r为0~20*/
|
||
g = (g * 21) / 256;
|
||
b = (b * 21) / 256;
|
||
r = (r + i) / 4; /* r为0~5*/
|
||
g = (g + i) / 4;
|
||
b = (b + i) / 4;
|
||
return 16 + r + g * 6 + b * 36;
|
||
}
|