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

📄 button.c

📁 EGui是一个开源的图形系统软件,类似于QT/Embedded、GTK-FB、MicroWindow。目标是嵌入式平台整合解 决方案。基于Linux Framebuffer 设备驱动上实现。有完
💻 C
字号:
/******************************************************** * Egui code,LGPL * Function : button  * Author: asmcos@hotmail.com * Data : 2006-03-22 * $Id: button.c,v 1.9 2006/04/09 23:32:28 hjs Exp $ ********************************************************/#include <Egui.h>#include <widget.h>Efont *font;EGui_Widget * new_button ( EGui_Widget *pwidget ,short x,short y,short w,short h){  EGui_Widget * button;  widget_list * list;  EGui_Wfunc  * button_wfunc;      button = (EGui_Widget *) malloc(sizeof (EGui_Widget));  if (button == NULL)    {      printf ("malloc new button failed\n ");      return (EGui_Widget * )NULL;    }  button_wfunc = (EGui_Wfunc *) malloc (sizeof(EGui_Wfunc));  if (button_wfunc == NULL)    {      printf ("malloc new botton_wfunc failed\n ");      return (EGui_Widget * )NULL;    }  memset(button_wfunc,0,sizeof(EGui_Wfunc));  button->x       = pwidget->x + x;  button->y       = pwidget->y + y;  button->width   = button->x + w;  button->height  = button->y + h;  button->type    = BUTTON;  button->func    = button_wfunc;  button->parent  = pwidget;  button->window  = pwidget->window;  button->child   = NULL;    pwidget->child   = button;  button_init (button_wfunc);  strcpy (button->name,"button");  add_newqueue (button);    return button;}void button_show (EGui_Widget * widget){  widget->status = DISPLAY_ALL;}void button_draw (EGui_Widget  * widget){  short x,y,w,h;  EGui_Window *window;  Ecolor color;  EGui_Widget * button;  button = widget;  x  = button->x;  y  = button->y;  w  = button->width ;  h  = button->height ;  window = button->window;    if (widget->status == DISPLAY_ALL)    {      int i = 0;      new_color( window,&color,0xA0A0A0);      Egui_rect (x+i,y+i,w-i-2,h-i-2, &color, window);            i++;      new_color( window,&color,0xF0F0F0);      /* left vertical */      Egui_line (x+i,y+i,x+i,h-i-2, &color, window);      /* up horizontal */      Egui_line (x+i,y+i,w-i-2,y+i, &color, window);            new_color( window,&color,0x808080);      /* right vertical */      Egui_line (w-i,y+i-1,w-i,h-i, &color, window);      /* bottom horizontal */      Egui_line (x+i-1,h-i,w-i,h-i, &color, window);           i++;      new_color(window,&color,0xDDDDDD);      Egui_fill (x+i,y+i,w-i-1,h-i-1, &color, window);            new_color(window,&color,0xFFFFFF);      Egui_drawstring(x + 6,y + 3,widget->name,font,&color,window);      new_color(window,&color,0x747474);      Egui_drawstring(x + 5,y + 2,widget->name,font,&color,window);          }  }void button_draw_out (EGui_Widget  * widget){  short x,y,w,h;  EGui_Window *window;  Ecolor color;  EGui_Widget * button;  button = widget;  x  = button->x;  y  = button->y;  w  = button->width ;  h  = button->height ;  window = button->window;  if (widget->status == DISPLAY_ALL)    {      int i = 0;      new_color( window,&color,0xA0A0A0);      Egui_rect (x+i,y+i,w-i-2,h-i-2, &color, window);            i++;      new_color( window,&color,0xF0F0F0);      /* left vertical */      Egui_line (x+i,y+i,x+i,h-i-2, &color, window);      /* up horizontal */      Egui_line (x+i,y+i,w-i-2,y+i, &color, window);            new_color( window,&color,0x808080);      /* right vertical */      Egui_line (w-i,y+i-1,w-i,h-i, &color, window);      /* bottom horizontal */      Egui_line (x+i-1,h-i,w-i,h-i, &color, window);                i++;      new_color(window,&color,0xDDDDDD);      Egui_fill (x+i,y+i,w-i-1,h-i-1, &color, window);      new_color(window,&color,0xFFFFFF);      Egui_drawstring(x + 6,y + 3,widget->name,font,&color,window);      new_color(window,&color,0x747474);      Egui_drawstring(x + 5,y + 2,widget->name,font,&color,window);    }  }voidbutton_draw_in (EGui_Widget  * widget){  short x,y,w,h;  EGui_Window *window;  Ecolor color;  EGui_Widget * button;  button = widget;  x  = button->x;  y  = button->y;  w  = button->width ;  h  = button->height ;  window = button->window;  if (widget->status == DISPLAY_ALL)    {      int i = 0;      new_color( window,&color,0x80);            Egui_rect (x+i,y+i,w-i-1 ,h-i-1, &color, window);      i++;      new_color( window,&color,0xFFFF00);      Egui_rect (x+i,y+i,w-i-1 ,h-i-1 , &color, window);    }  }voidbutton_click_left (EGui_Widget  * widget){  short x,y,w,h;  EGui_Window *window;  Ecolor color;  EGui_Widget * button;  button = widget;  x  = button->x;  y  = button->y;  w  = button->width ;  h  = button->height ;  window = button->window;  if (widget->status == DISPLAY_ALL)    {      int i = 1;              new_color(window,&color,0xA0A0A0);      Egui_fill (x+i,y+i,w-i-1,h-i-1, &color, window);      new_color(window,&color,0x0);      Egui_drawstring(x + 5,y + 2,widget->name,font,&color,window);    }  }voidbutton_rel_left (EGui_Widget  * widget){  short x,y,w,h;  EGui_Window *window;  Ecolor color;  EGui_Widget * button;  button = widget;  x  = button->x;  y  = button->y;  w  = button->width ;  h  = button->height ;  window = button->window;  if (widget->status == DISPLAY_ALL)    {      int i = 1;              new_color(window,&color,0xDDDDDD);      Egui_fill (x+i,y+i,w-i-1,h-i-1, &color, window);      new_color(window,&color,0x0);      Egui_drawstring(x + 5,y + 2,widget->name,font,&color,window);    }  }intbutton_init (EGui_Wfunc  * button_wfunc){    button_wfunc->show        = button_show;  button_wfunc->draw        = button_draw;  button_wfunc->click_left  = button_click_left;  button_wfunc->rel_left    = button_rel_left;  button_wfunc->draw_in     = button_draw_in;  button_wfunc->draw_out    = button_draw_out;  return 0;}

⌨️ 快捷键说明

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