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

📄 widget.c

📁 EGui是一个开源的图形系统软件,类似于QT/Embedded、GTK-FB、MicroWindow。目标是嵌入式平台整合解 决方案。基于Linux Framebuffer 设备驱动上实现。有完
💻 C
字号:
/******************************************************** * Egui code,LGPL * Function : Widget common function  * Author: asmcos@hotmail.com * Data : 2006-03-21 * $Id: widget.c,v 1.8 2006/04/14 00:53:28 hjs Exp $ ********************************************************/#include <Egui.h>#include <widget.h>void widget_show (EGui_Widget     *widget){  if (widget->func->show != NULL)    widget->func->show (widget);}void widget_draw (EGui_Widget     *widget){  if (widget->func->draw != NULL)    widget->func->draw (widget);  /* display all child */  if (widget->child)    {      EGui_Widget *c_widget;      widget_list *list;      int have_c = 1;      c_widget = widget->child;            while (have_c)	{	  if (c_widget->status != DISPLAY_NOT)	    {	      if (c_widget->func->draw)		widget_draw (c_widget);	    }	  /* find next brother */	  if (c_widget->list->next != NULL)	   {	     list = (widget_list *) c_widget->list->next;	     c_widget = list->widget;	   }	  else 	    have_c = 0;	  	}    }}void widget_draw_in (EGui_Widget  *widget){  if (widget->func->draw_in != NULL)    widget->func->draw_in (widget);}void widget_draw_out (EGui_Widget  *widget){  if (widget->func->draw_out != NULL)    widget->func->draw_out (widget);  }void widget_click_left (EGui_Widget  *widget){  if (widget->func->click_left != NULL)    widget->func->click_left (widget);}void widget_rel_left (EGui_Widget  *widget){  if (widget->func->rel_left != NULL)    widget->func->rel_left (widget);   /* user callback */  if (widget->func->user_click_left != NULL)    widget->func->user_click_left(widget); }void widget_press_key (EGui_Widget  *widget,EGui_Event *event){  if (widget->func->press_key != NULL)    widget->func->press_key (widget,event);   /* user callback */  if (widget->func->user_press_key != NULL)    widget->func->user_press_key(widget,event); }voidwidget_move (EGui_Widget *widget,int x,int y){  int old_x;  int old_y;  int width,height;  width  = widget->width  - widget->x;  height = widget->height - widget->y;  if (widget->parent)    {      old_x = widget->parent->x;      old_y = widget->parent->y;    }  else     {      old_x = widget->window->frame_w;      old_y = widget->window->title_h + old_x;    }  widget->x      = old_x  + x;  widget->y      = old_y  + y;  widget->width  = width  + widget->x;  widget->height = height + widget->y;    widget->list->vx = widget->x;  widget->list->vy = widget->y;  widget->list->vw = widget->width;  widget->list->vh = widget->height;}voidwidget_register_callback (EGui_Widget *widget, int type,			  void (* callback) ( EGui_Widget     *widget)){  switch (type)    {    case BUTTON_CLICK_LEFT:      widget->func->user_click_left = callback;      break;    default:      printf ("Don't support event callback type =%d\n",type);      break;    }}voidwidget_set_focus (EGui_Widget *widget){  focus_widget = widget;}voidwidget_set_name(EGui_Widget     *widget,char *name){  int len;    len = strlen (name);  if (len > NAME_MAX)    len = NAME_MAX;  else    widget->name[len] = '\0';  strncpy (widget->name,name,len);}void widget_free (EGui_Widget     *widget){  free(widget);}

⌨️ 快捷键说明

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