⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 punchbill.c

📁 linux 下svgalib编的一个界面程序示例
💻 C
字号:
#include <stdlib.h>#include <unistd.h>#include <lug.h>#include <lugfnts.h>#include <vga.h>#include <vgagl.h>#include <vgamouse.h>void move_cursor(int x, int y, int ox, int oy);void draw_cursor(int x, int y);char box[11 * 19 * 8];int main(void){   int key,       i, r, g, b,       bill_x, bill_y, button_x, button_y, x, y, ox, oy,       button;   byte *ptr;   bitmap_hdr one,              two,              three,              logo,              button1,              button2;   vga_init();   vga_setmousesupport(1);   vga_setmode(G640x480x256);   gl_setcontextvga(G640x480x256);   gl_setrgbpalette();   gl_setpalettecolor(253, 223, 223, 223); /* gray */   gl_setpalettecolor(254, 0, 0, 0);       /* black */   gl_setpalettecolor(255, 255, 255, 255); /* white */   gl_clearscreen(255);   read_gif_file("bill_1.gif", &one);   read_gif_file("bill_2.gif", &two);   read_gif_file("bill_3.gif", &three);   read_gif_file("bill_logo.gif", &logo);   read_gif_file("button_1.gif", &button1);   read_gif_file("button_2.gif", &button2);   for (i = 0, ptr = one.cmap; i < one.colors; i++)   {      r = (double)*ptr++;      g = (double)*ptr++;      b = (double)*ptr++;      gl_setpalettecolor(i, r>>2, g>>2, b>>2);   }   bill_x = (640 / 2) - (one.xsize / 2);   bill_y = (480 / 2) - (one.ysize / 2);   gl_putbox(bill_x, bill_y, one.xsize, one.ysize, one.r);   gl_putbox(30, 50, logo.xsize, logo.ysize, logo.r);   button_x = (640 / 2) - (button1.xsize / 2);   button_y = 350;   gl_putbox(button_x, button_y, button1.xsize, button1.ysize, button1.r);   gl_line(30, 0, 30, 30, 253);   gl_hline(31, 30, 610, 253);   gl_line(610, 31, 610, 479, 253);   x = ox = 50;   y = oy = 50;   draw_cursor(x, y);   while (((key = vga_getkey()) != 27) && (key != 81) && (key != 113))   {      mouse_update();      x = mouse_getx();      y = mouse_gety();      button = mouse_getbutton();      if ((x != ox) || (y != oy))      {         move_cursor(x, y, ox, oy);         ox = x;         oy = y;      }      if ((key == 10) || ((button & MOUSE_LEFTBUTTON) &&          (x >= button_x) && (x <= (button_x + button1.xsize)) &&          (y >= button_y) && (y <= (button_y + button1.ysize))))      {         gl_putbox(bill_x, bill_y, two.xsize, two.ysize, two.r);         gl_putbox(button_x, button_y, button2.xsize, button2.ysize, button2.r);         move_cursor(x, y, x, y);         usleep(50000);                  gl_putbox(bill_x, bill_y, three.xsize, three.ysize, three.r);                  gl_putbox(button_x, button_y, button1.xsize, button1.ysize, button1.r);         move_cursor(x, y, x, y);      }   }   vga_setmode(TEXT);   return 0;}void move_cursor(int x, int y, int ox, int oy){   gl_putbox(ox, oy, 11, 19, box);   gl_getbox(x, y, 11, 19, box);   draw_cursor(x, y);}void draw_cursor(int x, int y){   gl_getbox(x, y, 11, 19, box);   gl_setpixel(x, y, 254);              /* line 1 */   gl_hline(x, (y + 1), (x + 1), 254);  /* line 2 */   gl_setpixel(x, (y + 2), 254);        /* line 3 */   gl_setpixel((x + 1), (y + 2), 255);   gl_setpixel((x + 2), (y + 2), 254);   gl_setpixel(x, (y + 3), 254);        /* line 4 */   gl_hline((x + 1), (y + 3), (x + 2), 255);   gl_setpixel((x + 3), (y + 3), 254);   gl_setpixel(x, (y + 4), 254);        /* line 5 */   gl_hline((x + 1), (y + 4), (x + 3), 255);   gl_setpixel((x + 4), (y + 4), 254);   gl_setpixel(x, (y + 5), 254);        /* line 6 */   gl_hline((x + 1), (y + 5), (x + 4), 255);   gl_setpixel((x + 5), (y + 5), 254);   gl_setpixel(x, (y + 6), 254);        /* line 7 */   gl_hline((x + 1), (y + 6), (x + 5), 255);   gl_setpixel((x + 6), (y + 6), 254);   gl_setpixel(x, (y + 7), 254);        /* line 8 */   gl_hline((x + 1), (y + 7), (x + 6), 255);   gl_setpixel((x + 7), (y + 7), 254);   gl_setpixel(x, (y + 8), 254);        /* line 9 */   gl_hline((x + 1), (y + 8), (x + 7), 255);   gl_setpixel((x + 8), (y + 8), 254);   gl_setpixel(x, (y + 9), 254);        /* line 10 */   gl_hline((x + 1), (y + 9), (x + 8), 255);   gl_setpixel((x + 9), (y + 9), 254);   gl_setpixel(x, (y + 10), 254);        /* line 11 */   gl_hline((x + 1), (y + 10), (x + 5), 255);   gl_hline((x + 6), (y + 10), (x + 10), 254);   gl_setpixel(x, (y + 11), 254);       /* line 12 */   gl_hline((x + 1), (y + 11), (x + 2), 255);   gl_setpixel((x + 3), (y + 11), 254);   gl_hline((x + 4), (y + 11), (x + 5), 255);   gl_setpixel((x + 6), (y + 11), 254);   gl_setpixel(x, (y + 12), 254);       /* line 13 */   gl_setpixel((x + 1), (y + 12), 255);   gl_setpixel((x + 2), (y + 12), 254);   gl_setpixel((x + 4), (y + 12), 254);   gl_hline((x + 5), (y + 12), (x + 6), 255);   gl_setpixel((x + 7), (y + 12), 254);   gl_hline(x, (y + 13), (x + 1), 254); /* line 14 */   gl_setpixel((x + 4), (y + 13), 254);   gl_hline((x + 5), (y + 13), (x + 6), 255);   gl_setpixel((x + 7), (y + 13), 254);   gl_setpixel(x, (y + 14), 254);       /* line 15 */   gl_setpixel((x + 5), (y + 14), 254);   gl_hline((x + 6), (y + 14), (x + 7), 255);   gl_setpixel((x + 8), (y + 14), 254);   gl_setpixel((x + 5), (y + 15), 254); /* line 16 */   gl_hline((x + 6), (y + 15), (x + 7), 255);   gl_setpixel((x + 8), (y + 15), 254);   gl_setpixel((x + 6), (y + 16), 254); /* line 17 */   gl_hline((x + 7), (y + 16), (x + 8), 255);   gl_setpixel((x + 9), (y + 16), 254);   gl_setpixel((x + 6), (y + 17), 254); /* line 18 */   gl_hline((x + 7), (y + 17), (x + 8), 255);   gl_setpixel((x + 9), (y + 17), 254);   gl_hline((x + 7), (y + 18), (x + 8), 254); /* line 19 */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -