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

📄 panel_sw.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lint#ifdef sccsstatic  char sccsid[] = "@(#)panel_sw.c 1.1 92/07/30 Copyr 1984 Sun Micro";#endif#endif/*            Copyright (c) 1986 by Sun Microsystems, Inc.                   *//* This module contains routines called by pre-notifier and * pre-wrapper code. */#include <varargs.h>#include <suntool/panel_impl.h>#ifdef KEYMAP_DEBUG#include "../../libsunwindow/win/win_keymap.h"#else#include <sunwindow/win_keymap.h>#endifstatic Panel panel_init_sw();/* VARARGS1 */Panelpanel_begin(tool, va_alist)Tool 		*tool;va_dcl{   caddr_t			avlist[ATTR_STANDARD_SIZE];   va_list			valist;   Toolsw	       		*tsw;   va_start(valist);   if (!attr_make(avlist, ATTR_STANDARD_SIZE, valist))  {      va_end(valist);      return NULL;   }   va_end(valist);   if (tsw = panel_create_sw(tool, TRUE, avlist))      return (Panel)tsw->ts_data;   else      return NULL;}Toolsw *panel_create_sw(tool, notifier_based, avlist)Tool		*tool;int              notifier_based;Attr_avlist	 avlist;{   register Panel_attribute	attr;   char				*name		= "";   int             		width		= -1;   int             		height		= -1;   int		   		y_offset	= ITEM_Y_GAP;   Pixfont			*font		= (Pixfont *) NULL;   Toolsw			*tsw;   Attr_avlist			orig_avlist	= avlist;   while(attr = (Panel_attribute) *avlist++) {      switch (attr) {	 case PANEL_ITEM_Y_GAP:	    y_offset = (int) *avlist++;	    break;	 case PANEL_FONT :	    font = (Pixfont *) LINT_CAST(*avlist++);	    break;	 default: 	    avlist = attr_skip(attr,avlist);	    break;      }   }   /* use the default font if none specified */   if (!font)      font = pw_pfsysopen();   /* convert any character units to pixel units */   attr_replace_cu(orig_avlist, font, PANEL_ITEM_X_START, y_offset, y_offset);   avlist = orig_avlist;   while(attr = (Panel_attribute) *avlist++) {      switch (attr) {	 case PANEL_NAME:	    name = (char *) *avlist++;	    break;	  case PANEL_WIDTH:            width = (int) *avlist++;            break;	 case PANEL_HEIGHT:	    height = (int) *avlist++;	    break;	 default: 	    avlist = attr_skip(attr,avlist);	    break;      }   }   /* create the tool subwindow */   tsw = tool_createsubwindow(tool, name, width, height);   if (!tsw)      return((Toolsw *)NULL);   /* set the desired attributes */   tsw->ts_data = panel_init_sw(tsw->ts_windowfd, notifier_based, orig_avlist);   if (tsw->ts_data == NULL)      return((Toolsw *)NULL);   /* set the pointer from the panel to the tool subwindow */   ((panel_handle)LINT_CAST(tsw->ts_data))->toolsw = tsw;   /* set the pointer from the panel to the tool */   ((panel_handle)LINT_CAST(tsw->ts_data))->tool = tool;   return tsw;}/*****************************************************************************//* panel_init_sw                                                              *//* allocates panel and initializes panel struct, calls set_panel to process  *//* attribute list, opens pixwin.  If 'notifier_based' is true, then          *//* registers the panel as a notifier client.                                 *//*****************************************************************************/static Panelpanel_init_sw(windowfd, notifier_based, avlist) int 		windowfd;int     	notifier_based;Attr_avlist	avlist;{   register panel_handle		panel;   if (!(panel = panel_create_panel_struct((caddr_t) 0, windowfd)))      return NULL;   if (!(panel->pixwin = pw_open_monochrome(windowfd)))       return NULL;   panel->view_pixwin = pw_region(panel->pixwin, 0, 0,                                  panel->rect.r_width,                                  panel->rect.r_height);   if (notifier_based) {      if (win_register((caddr_t)(LINT_CAST(panel)), panel->pixwin,                        panel_notify_event, panel_destroy,		       PW_FIXED_IMAGE | PW_INPUT_DEFAULT))         return NULL;      panel->status |= USING_NOTIFIER;   }   /* set the specified attributes */   (*panel->ops->set_attr)(panel, avlist);      (void)panel_set_inputmask(panel, windowfd);   return (Panel) panel;}

⌨️ 快捷键说明

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