5 uint rgb_int2char_list [16] = {
\r
23 char cursor[24][24] = {
\r
24 "***.....................",
\r
25 "*O**....................",
\r
26 "*OO**...................",
\r
27 "*OOO**..................",
\r
28 "*OOOO**.................",
\r
29 "*OOOOO**................",
\r
30 "*OOOOOO**...............",
\r
31 "*OOOOOOO**..............",
\r
32 "*OOOOOOOO**.............",
\r
33 "*OOOOOOOOO**............",
\r
34 "*OOOOOOOOOO**...........",
\r
35 "*OOOOOOOOOOO**..........",
\r
36 "*OOOOOOOOOOOO**.........",
\r
37 "*OOOOOOOOOOOOO**........",
\r
38 "*OOOOOOOOOOOOOO**.......",
\r
39 "*OOOOOOOOOOOOOOO**......",
\r
40 "*OOOOOOOOOOOOOOOO**.....",
\r
41 "*OOOOOO*************....",
\r
42 "*OOOOO**................",
\r
43 "*OOOO**.................",
\r
44 "*OOO**..................",
\r
45 "*OO**...................",
\r
46 "*O**....................",
\r
47 "***.....................",
\r
50 void putfonts_asc_sht_i(UI_Sheet *sht, int x, int y, uint c, uint bc, const uchar *s)
\r
54 boxfill_i(sht->buf, sht->bxsize, bc, x, y, x + l * 8, y + 16);
\r
55 putfonts_asc_i(sht->buf, sht->bxsize, x, y, c, s);
\r
56 sheet_refresh(sht, x, y, x + l * 8, y + 16);
\r
60 void putfonts_asc_sht_i_no_bc(UI_Sheet *sht, int x, int y, uint c, const uchar *s)
\r
64 putfonts_asc_i(sht->buf, sht->bxsize, x, y, c, s);
\r
65 sheet_refresh(sht, x, y, x + l * 8, y + 16);
\r
69 void init_screen_i(void *desktop, void *taskbar, void *mousecursor)
\r
73 bpp = system.data.info.vesa.BitsPerPixel;
\r
78 init_desktop_i(desktop);
\r
79 init_taskbar_i(taskbar);
\r
80 init_mousecursor_i(mousecursor);
\r
85 void init_desktop_i(void *vrami)
\r
90 bpp = system.data.info.vesa.BitsPerPixel;
\r
91 xsize = system.data.info.boot.scrnx;
\r
92 ysize = system.data.info.boot.scrny;
\r
95 init_desktop8(vrami, xsize, ysize);
\r
96 } else if(bpp == 16){
\r
97 init_desktop16(vrami, xsize, ysize);
\r
98 } else if(bpp == 32){
\r
99 init_desktop32(vrami, xsize, ysize);
\r
104 void init_taskbar_i(void *vrami)
\r
109 bpp = system.data.info.vesa.BitsPerPixel;
\r
110 xsize = system.data.info.boot.scrnx;
\r
113 init_taskbar8(vrami, xsize);
\r
114 } else if(bpp == 16){
\r
115 init_taskbar16(vrami, xsize);
\r
116 } else if(bpp == 32){
\r
117 init_taskbar32(vrami, xsize);
\r
122 void init_mousecursor_i(void *vrami)
\r
126 bpp = system.data.info.vesa.BitsPerPixel;
\r
129 init_mouse_cursor8(vrami);
\r
130 } else if(bpp == 16){
\r
131 init_mouse_cursor16(vrami);
\r
132 } else if(bpp == 32){
\r
133 init_mouse_cursor32(vrami);
\r
138 uint mix_color(uint c0, uint c1)
\r
140 float r0,g0,b0,r1,g1,b1,alpha;
\r
144 b0 = (float)(cc >> 24);
\r
146 g0 = (float)(cc >> 24);
\r
148 r0 = (float)(cc >> 24);
\r
151 b1 = (float)(cc >> 24);
\r
153 g1 = (float)(c1 >> 24);
\r
155 r1 = (float)(c1 >> 24);
\r
157 alpha = (float)(c1 >> 24);
\r
159 r1 = r1 * (alpha / 255) + r0 * (1 - (alpha / 255));
\r
160 g1 = g1 * (alpha / 255) + g0 * (1 - (alpha / 255));
\r
161 b1 = b1 * (alpha / 255) + b0 * (1 - (alpha / 255));
\r
174 void point_i(void *vrami, int x, int y, uint c, int xsize)
\r
176 uint cc = 0x00000000;
\r
178 if(system.data.info.vesa.BitsPerPixel == 8){
\r
179 cc = rgb_int2char(c);
\r
180 } else if(system.data.info.vesa.BitsPerPixel == 16){
\r
181 cc = rgb_int2short(c);
\r
182 } else if(system.data.info.vesa.BitsPerPixel == 32){
\r
185 point_bpp(vrami, x, y, cc, xsize, system.data.info.vesa.BitsPerPixel);
\r
189 void point_bpp(void *vrami, int x, int y, uint c, int xsize, uint bpp)
\r
197 buf8[y * xsize + x] = (uchar)c;
\r
198 } else if(bpp == 16){
\r
200 buf16[y * xsize + x] = (ushort)c;
\r
201 } else if(bpp == 32){
\r
203 buf32[y * xsize + x] = (uint)c;
\r
209 void boxfill_i(void *vrami, int xsize, uint c, int x0, int y0, int x1, int y1)
\r
211 uint cc = 0x00000000;
\r
213 if(system.data.info.vesa.BitsPerPixel == 8){
\r
214 cc = rgb_int2char(c);
\r
215 } else if(system.data.info.vesa.BitsPerPixel == 16){
\r
216 cc = rgb_int2short(c);
\r
217 } else if(system.data.info.vesa.BitsPerPixel == 32){
\r
220 boxfill_bpp(vrami, xsize, cc, x0, y0, x1, y1, system.data.info.vesa.BitsPerPixel);
\r
224 void boxfill_bpp(void *vrami, int xsize, uint c, int x0, int y0, int x1, int y1, uint bpp)
\r
227 boxfill8(vrami, xsize, c, x0, y0, x1, y1);
\r
228 } else if(bpp == 16){
\r
229 boxfill16(vrami, xsize, c, x0, y0, x1, y1);
\r
230 } else if(bpp == 32){
\r
231 boxfill32(vrami, xsize, c, x0, y0, x1, y1);
\r
237 void putfonts_asc_i(void *vrami, int xsize, int x, int y, uint c, const uchar *s)
\r
239 if(system.data.info.vesa.BitsPerPixel == 8){
\r
240 uchar c8 = rgb_int2char(c);
\r
241 for (; *s != 0x00; s++) {
\r
242 putfont8(vrami, xsize, x, y, c8, hankaku + *s * 16);
\r
246 } else if(system.data.info.vesa.BitsPerPixel == 16){
\r
247 ushort c16 = rgb_int2short(c);
\r
248 for (; *s != 0x00; s++) {
\r
249 putfont16(vrami, xsize, x, y, c16, hankaku + *s * 16);
\r
253 } else if(system.data.info.vesa.BitsPerPixel == 32){
\r
254 for (; *s != 0x00; s++) {
\r
255 putfont32(vrami, xsize, x, y, c, hankaku + *s * 16);
\r
263 void putblock_i(void *vrami, int vxsize, int pxsize, int pysize, int px0, int py0, void *buf, int bxsize)
\r
265 if(system.data.info.vesa.BitsPerPixel == 8){
\r
266 putblock8_8(vrami, vxsize, pxsize, pysize, px0, py0, buf, bxsize);
\r
267 } else if(system.data.info.vesa.BitsPerPixel == 16){
\r
268 putblock16_16(vrami, vxsize, pxsize, pysize, px0, py0, buf, bxsize);
\r
269 } else if(system.data.info.vesa.BitsPerPixel == 32){
\r
270 putblock32_32(vrami, vxsize, pxsize, pysize, px0, py0, buf, bxsize);
\r
276 void putblock_i_convert(void *to, int xsize, int px0, int py0, int px1, int py1, void *from, int tobpp, int frombpp)
\r
282 for(y = py0; y < py1; y++){
\r
283 for(x = px0; x < px1; x++){
\r
284 ((uint *)to)[(xsize * y) + x] = rgb_int2char_list[((uchar *)from)[(xsize * y) + x]];
\r
293 void line_i(void *vrami, int xsize, int x0, int y0, int x1, int y1, uint c)
\r
295 int i, x, y, len, dx, dy;
\r
301 if(dx < 0) dx = -dx;
\r
302 if(dy < 0) dy = -dy;
\r
305 if(x0 > x1) dx = -1024;
\r
307 if(y0 <= y1) dy = ((y1 - y0 + 1) << 10) / len;
\r
308 else dy = ((y1 - y0 - 1) << 10) / len;
\r
311 if(y0 > y1) dy = -1024;
\r
313 if(x0 <= x1) dx = ((x1 - x0 + 1) << 10) / len;
\r
314 else dx = ((x1 - x0 - 1) << 10) / len;
\r
316 for(i = 0; i < len; i++){
\r
317 point_i(vrami, x >> 10, y >> 10, c, xsize);
\r
325 void line_bpp(void *vrami, int xsize, int x0, int y0, int x1, int y1, uint c, uint bpp)
\r
327 int i, x, y, len, dx, dy;
\r
333 if(dx < 0) dx = -dx;
\r
334 if(dy < 0) dy = -dy;
\r
337 if(x0 > x1) dx = -1024;
\r
339 if(y0 <= y1) dy = ((y1 - y0 + 1) << 10) / len;
\r
340 else dy = ((y1 - y0 - 1) << 10) / len;
\r
343 if(y0 > y1) dy = -1024;
\r
345 if(x0 <= x1) dx = ((x1 - x0 + 1) << 10) / len;
\r
346 else dx = ((x1 - x0 - 1) << 10) / len;
\r
348 for(i = 0; i < len; i++){
\r
349 point_bpp(vrami, x >> 10, y >> 10, c, xsize, bpp);
\r
357 void draw_hexagon_i(void *vrami, int xsize, int a, int x, int y, uint c)
\r
363 n = (1773 * m) >> 10;
\r
366 line_i(vrami, xsize, x , y - a, x + n, y - m, c);
\r
367 line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);
\r
368 line_i(vrami, xsize, x + n, y + m, x , y + a, c);
\r
369 line_i(vrami, xsize, x , y + a, x - n, y + m, c);
\r
370 line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);
\r
371 line_i(vrami, xsize, x - n, y - m, x , y - a, c);
\r
376 void draw_chnos_logo(void *vrami, int xsize, int a, int x, int y)
\r
378 int n, m, oldx, oldy;
\r
386 n = (1773 * m) >> 10;
\r
394 line_i(vrami, xsize, x , y - a, x + n, y - m, c);
\r
395 line_i(vrami, xsize, x + n, y + m, x , y + a, c);
\r
396 line_i(vrami, xsize, x - n, y - m, x , y - a, c);
\r
401 line_i(vrami, xsize, x , y - a, x + n, y - m, c);
\r
402 line_i(vrami, xsize, x + n, y - m, x , y , c);
\r
403 line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);
\r
404 line_i(vrami, xsize, x + n, y + m, x , y + a, c);
\r
405 line_i(vrami, xsize, x , y + a, x , y , c);
\r
406 line_i(vrami, xsize, x , y + a, x - n, y + m, c);
\r
407 line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);
\r
408 line_i(vrami, xsize, x - n, y - m, x , y , c);
\r
409 line_i(vrami, xsize, x - n, y - m, x , y - a, c);
\r
414 line_i(vrami, xsize, x , y - a, x + n, y - m, c);
\r
415 line_i(vrami, xsize, x + n, y - m, x , y , c);
\r
416 line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);
\r
417 line_i(vrami, xsize, x + n, y + m, x , y + a, c);
\r
418 line_i(vrami, xsize, x , y + a, x , y , c);
\r
419 line_i(vrami, xsize, x , y + a, x - n, y + m, c);
\r
420 line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);
\r
421 line_i(vrami, xsize, x - n, y - m, x , y , c);
\r
422 line_i(vrami, xsize, x - n, y - m, x , y - a, c);
\r
427 line_i(vrami, xsize, x , y - a, x + n, y - m, c);
\r
428 line_i(vrami, xsize, x , y + a, x - n, y + m, c);
\r
429 line_i(vrami, xsize, x - n, y - m, x , y - a, c);
\r
440 line_i(vrami, xsize, x , y - a, x + n, y - m, c);
\r
441 line_i(vrami, xsize, x + n, y - m, x , y , c);
\r
442 line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);
\r
443 line_i(vrami, xsize, x + n, y + m, x , y + a, c);
\r
444 line_i(vrami, xsize, x , y + a, x , y , c);
\r
445 line_i(vrami, xsize, x , y + a, x - n, y + m, c);
\r
446 line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);
\r
447 line_i(vrami, xsize, x - n, y - m, x , y , c);
\r
448 line_i(vrami, xsize, x - n, y - m, x , y - a, c);
\r
453 line_i(vrami, xsize, x , y - a, x + n, y - m, c);
\r
458 line_i(vrami, xsize, x , y - a, x + n, y - m, c);
\r
459 line_i(vrami, xsize, x + n, y - m, x , y , c);
\r
460 line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);
\r
461 line_i(vrami, xsize, x + n, y + m, x , y + a, c);
\r
462 line_i(vrami, xsize, x , y + a, x , y , c);
\r
463 line_i(vrami, xsize, x , y + a, x - n, y + m, c);
\r
464 line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);
\r
465 line_i(vrami, xsize, x - n, y - m, x , y , c);
\r
466 line_i(vrami, xsize, x - n, y - m, x , y - a, c);
\r
477 line_i(vrami, xsize, x - n, y - m, x , y - a, c);
\r
482 line_i(vrami, xsize, x , y - a, x + n, y - m, c);
\r
483 line_i(vrami, xsize, x + n, y - m, x , y , c);
\r
484 line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);
\r
485 line_i(vrami, xsize, x + n, y + m, x , y + a, c);
\r
486 line_i(vrami, xsize, x , y + a, x , y , c);
\r
487 line_i(vrami, xsize, x , y + a, x - n, y + m, c);
\r
488 line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);
\r
489 line_i(vrami, xsize, x - n, y - m, x , y , c);
\r
490 line_i(vrami, xsize, x - n, y - m, x , y - a, c);
\r
495 line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);
\r
500 line_i(vrami, xsize, x , y - a, x + n, y - m, c);
\r
501 line_i(vrami, xsize, x + n, y - m, x , y , c);
\r
502 line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);
\r
503 line_i(vrami, xsize, x + n, y + m, x , y + a, c);
\r
504 line_i(vrami, xsize, x , y + a, x , y , c);
\r
505 line_i(vrami, xsize, x , y + a, x - n, y + m, c);
\r
506 line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);
\r
507 line_i(vrami, xsize, x - n, y - m, x , y , c);
\r
508 line_i(vrami, xsize, x - n, y - m, x , y - a, c);
\r
510 putfonts_asc_i(vrami, xsize, oldx + n + 8, oldy, 0x00FF00, "CHNOSProject");
\r
515 uchar rgb_int2char (uint c32)
\r
518 for(i = 0;i < 15; i++) {
\r
519 if(rgb_int2char_list[i] == c32) {
\r
526 ushort rgb_int2short (uint c32)
\r
531 c[3] = (c32 << 24) >> 24;
\r
532 c[2] = (c32 << 16) >> 24;
\r
533 c[1] = (c32 << 8) >> 24;
\r
534 c[0] = (c32 >> 24);
\r
536 c16 = ((c[1] >> 3) << 11 | (c[2] >> 2) << 5 | (c[3] >> 3));
\r
541 void col_pat(void *vrami, int xsize, int ysize)
\r
547 boxfill_i(vrami,xsize,0x000000,x,y,x+20,y+40);
\r
548 boxfill_i(vrami,xsize,mix_color(0x000000,0x7fff0000),x+20,y,x+40,y+40);
\r
550 boxfill_i(vrami,xsize,0xFF0000,x,y,x+20,y+40);
\r
551 boxfill_i(vrami,xsize,mix_color(0x7fff0000,0x7f00ff00),x+20,y,x+40,y+40);
\r
553 boxfill_i(vrami,xsize,0x00FF00,x,y,x+20,y+40);
\r
554 boxfill_i(vrami,xsize,mix_color(0x7f00ff00,0x7fffff00),x+20,y,x+40,y+40);
\r
556 boxfill_i(vrami,xsize,0xFFFF00,x,y,x+20,y+40);
\r
557 boxfill_i(vrami,xsize,mix_color(0x7fffff00,0x7f0000ff),x+20,y,x+40,y+40);
\r
561 boxfill_i(vrami,xsize,0x0000FF,x,y,x+40,y+40);
\r
562 boxfill_i(vrami,xsize,mix_color(0x7f0000ff,0x7fff00ff),x+20,y,x+40,y+40);
\r
564 boxfill_i(vrami,xsize,0xFF00FF,x,y,x+40,y+40);
\r
565 boxfill_i(vrami,xsize,mix_color(0x7fff00ff,0x7f00ffff),x+20,y,x+40,y+40);
\r
567 boxfill_i(vrami,xsize,0x00FFFF,x,y,x+40,y+40);
\r
568 boxfill_i(vrami,xsize,mix_color(0x7f00ffff,0x7fffffff),x+20,y,x+40,y+40);
\r
570 boxfill_i(vrami,xsize,0xFFFFFF,x,y,x+40,y+40);
\r
571 boxfill_i(vrami,xsize,mix_color(0x7fffffff,0x7fc6c6c6),x+20,y,x+40,y+40);
\r
575 boxfill_i(vrami,xsize,0xC6C6C6,x,y,x+40,y+40);
\r
576 boxfill_i(vrami,xsize,mix_color(0x7fc6c6c6,0x7fff0000),x+20,y,x+40,y+40);
\r
578 boxfill_i(vrami,xsize,0x840000,x,y,x+40,y+40);
\r
579 boxfill_i(vrami,xsize,mix_color(0x7fff0000,0x7f008400),x+20,y,x+40,y+40);
\r
581 boxfill_i(vrami,xsize,0x008400,x,y,x+40,y+40);
\r
582 boxfill_i(vrami,xsize,mix_color(0x7f008400,0x7f848400),x+20,y,x+40,y+40);
\r
584 boxfill_i(vrami,xsize,0x848400,x,y,x+40,y+40);
\r
585 boxfill_i(vrami,xsize,mix_color(0x7f848400,0x7f000084),x+20,y,x+40,y+40);
\r
589 boxfill_i(vrami,xsize,0x000084,x,y,x+40,y+40);
\r
590 boxfill_i(vrami,xsize,mix_color(0x000000,0x7fff0000),x+20,y,x+40,y+40);
\r
592 boxfill_i(vrami,xsize,0x840084,x,y,x+40,y+40);
\r
593 boxfill_i(vrami,xsize,mix_color(0x7fff0000,0x7f840084),x+20,y,x+40,y+40);
\r
595 boxfill_i(vrami,xsize,0x008484,x,y,x+40,y+40);
\r
596 boxfill_i(vrami,xsize,mix_color(0x7f840084,0x7f008484),x+20,y,x+40,y+40);
\r
598 boxfill_i(vrami,xsize,0x848484,x,y,x+40,y+40);
\r
599 boxfill_i(vrami,xsize,mix_color(0x07f008484,0x7f848484),x+20,y,x+40,y+40);
\r