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

📄 panel_line.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lint#ifdef sccsstatic	char sccsid[] = "@(#)panel_line.c 1.1 92/07/30 Copyr 1984 Sun Micro";#endif#endif/**************************************************************************//*                            panel_line.c                                *//*              Copyright (c) 1985 by Sun Microsystems, Inc.              *//**************************************************************************/#include <suntool/panel_impl.h>static	paint(),	destroy(),	set_attr();static caddr_t get_attr();static struct panel_ops ops  =  {   panel_nullproc,			/* handle_event() */   panel_nullproc,			/* begin_preview() */   panel_nullproc,			/* update_preview() */   panel_nullproc,			/* cancel_preview() */   panel_nullproc,			/* accept_preview() */   panel_nullproc,			/* accept_menu() */   panel_nullproc,			/* accept_key() */   paint,				/* paint() */   destroy,				/* destroy() */   get_attr,				/* get_attr() */   set_attr,				/* set_attr() */   (caddr_t (*)()) panel_nullproc,	/* remove() */   (caddr_t (*)()) panel_nullproc,	/* restore() */   panel_nullproc			/* layout() */};typedef struct line_data {	/* data for a line */	int	length;}  line_data;Panel_itempanel_line(ip, avlist)register panel_item_handle	ip;Attr_avlist			avlist;{   register line_data *dp;   dp = (line_data *) LINT_CAST(calloc(1, sizeof(line_data)));   if (!dp)      return (NULL);   ip->ops       = &ops;   ip->data      = (caddr_t) dp;   ip->item_type = PANEL_LINE_ITEM;   dp->length	 = 0;   if (!set_attr(ip, avlist))      return NULL;   return (Panel_item) panel_append(ip);} /* panel_line */static intset_attr(ip, avlist)register panel_item_handle	ip;register Attr_avlist		avlist;{   register line_data		*dp = (line_data *) LINT_CAST(ip->data);   register Panel_attribute 	attr;   register Rect		*vr = &ip->value_rect;   while (attr = (Panel_attribute) *avlist++) {      switch (attr) {	 case PANEL_VALUE_DISPLAY_LENGTH:	    dp->length = (int) *avlist++;	    if (ip->layout == PANEL_HORIZONTAL) {		vr->r_width	= dp->length;		vr->r_height	= 1;	    }	    else {		vr->r_width	= 1;		vr->r_height	= dp->length;	    }   	    ip->rect = panel_enclosing_rect(&ip->label_rect, vr);	    break;	 default:	    avlist = attr_skip(attr, avlist);	    break;      }   }   return 1;} /* set_attr */static caddr_tget_attr(ip, which_attr)panel_item_handle		ip;register Panel_attribute	which_attr;/* get_attr returns the current value of which_attr.*/{   register line_data *dp = (line_data *) LINT_CAST(ip->data);   switch (which_attr) {      case PANEL_VALUE_DISPLAY_LENGTH:	 return (caddr_t) dp->length;      default:	 return panel_get_generic(ip, which_attr);   }} /* get_attr */staticdestroy(dp)line_data *dp;{   free((char *) dp);}staticpaint(ip)register panel_item_handle  ip;{   line_data		*dp = (line_data *) LINT_CAST(ip->data);   register Rect	*vr = &ip->value_rect;   panel_handle		panel = ip->panel;   register int		x1, y1;   switch (ip->layout) {      case PANEL_HORIZONTAL:         x1 = (dp->length == -1) ? 	      rect_right(&panel->rect) : vr->r_left + dp->length;	 y1 = vr->r_top;	 break;      case PANEL_VERTICAL:         y1 = (dp->length == -1) ? 	      rect_bottom(&panel->rect) : vr->r_top + dp->length;	 x1 = vr->r_left;	 break;      default:	 x1 = y1 = 0;	 break;   }   (void)panel_paint_image(panel, &ip->label, &ip->label_rect,PIX_COLOR(ip->color_index));   (void)panel_pw_vector(panel, vr->r_left, vr->r_top, x1, y1, PIX_SRC|PIX_COLOR(ip->color_index), 1);}

⌨️ 快捷键说明

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