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

📄 create.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 2 页
字号:
			      DefaultColormap(display, DefaultScreen(display)),			      "black",			      &s_bdr_color, &color_def)	     ) ;    else ;    def_val = XGetDefault(display, def_env, "SelectionBorderWidth");    if (def_val != NULL) s_bdr_width = atoi(def_val);        def_val = XGetDefault(display, def_env, "SelectionSpread");    if (def_val != NULL) s_spread = atof(def_val);    /*     * Create and store the inactive pattern pixmap.     */    switch (inact_pnum)       {  case 0:	  inact_bitmap = XCreateBitmapFromData(					       display,					       RootWindow(display, DefaultScreen(display)), 					       dimple1_bits, 					       16, 16					       );	  break;  case 1:	  inact_bitmap = XCreateBitmapFromData(					       display, 					       RootWindow(display, DefaultScreen(display)), 					       dimple3_bits, 					       16,16);	  break;  case 2:	  inact_bitmap = XCreateBitmapFromData(					       display, RootWindow(display, DefaultScreen(display)), 					       gray1_bits, 16, 16);	  break;  case 3:	  inact_bitmap = XCreateBitmapFromData(					       display, 					       RootWindow(display, DefaultScreen(display)), 					       gray3_bits, 16, 16);	  break;  case 4:	  inact_bitmap = XCreateBitmapFromData(					       display, 					       RootWindow(display, DefaultScreen(display)), 					       cross_weave_bits, 16, 16);	  break;  default:	  break;	        }    if (inact_bitmap == NULL) {	_XMErrorCode = XME_STORE_BITMAP;	return(NULL);    }    /*     * Load the mouse cursor.     */	      switch (menu_style) {        case LEFT:	    cursor = XCreateBitmapFromData(display,					   RootWindow(display,						      DefaultScreen(display)),					   left_ptr_bits,					   left_ptr_width,					   left_ptr_height);	    cursor_mask = XCreateBitmapFromData(display,					        RootWindow(display,						      DefaultScreen(display)),					        left_ptrmsk_bits,					        left_ptrmsk_width,					        left_ptrmsk_height);	    mouse_cursor = XCreatePixmapCursor(					       display,					       cursor, cursor_mask, 					       &mouse_color, &bkgnd_color,					       left_ptr_x_hot,					       left_ptr_y_hot					       );	    XFreePixmap(display, cursor);	    XFreePixmap(display, cursor_mask);	    	    break;        case RIGHT:	    cursor = XCreateBitmapFromData(display,					   RootWindow(display,						      DefaultScreen(display)),					   right_ptr_bits,					   right_ptr_width,					   right_ptr_height);	    cursor_mask = XCreateBitmapFromData(display,					        RootWindow(display,						      DefaultScreen(display)),					        right_ptrmsk_bits,					        right_ptrmsk_width,					        right_ptrmsk_height);	    mouse_cursor = XCreatePixmapCursor(					       display,					       cursor, cursor_mask,					       &mouse_color, &bkgnd_color,					       right_ptr_x_hot,					       right_ptr_y_hot					       );	    XFreePixmap(display, cursor);	    XFreePixmap(display, cursor_mask);	    	    break;        case CENTER:	    cursor = XCreateBitmapFromData(display,					   RootWindow(display,						      DefaultScreen(display)),					   cntr_ptr_bits,					   cntr_ptr_width,					   cntr_ptr_height);	    cursor_mask = XCreateBitmapFromData(display,					        RootWindow(display,						      DefaultScreen(display)),					        cntr_ptrmsk_bits,					        cntr_ptrmsk_width,					        cntr_ptrmsk_height);	    mouse_cursor = XCreatePixmapCursor(					       display,					       cursor, cursor_mask,					       &mouse_color, &bkgnd_color,					       cntr_ptr_x_hot,					       cntr_ptr_y_hot					       );	    XFreePixmap(display, cursor);	    XFreePixmap(display, cursor_mask);	    	break; default:	/* Error! Invalid style parameter. */	_XMErrorCode = XME_STYLE_PARAM;	return(NULL);    }    if (mouse_cursor == _X_FAILURE) {	_XMErrorCode = XME_CREATE_CURSOR;	return(NULL);    }    /*     * Open the pane and selection fonts.     */        p_fnt_info = XLoadQueryFont(display, p_fnt_name);    if (p_fnt_info == NULL) {	_XMErrorCode = XME_OPEN_FONT;	return(NULL);	    }    s_fnt_info = XLoadQueryFont(display, s_fnt_name);    if (s_fnt_info == NULL) {	_XMErrorCode = XME_OPEN_FONT;	return(NULL);    }    /*     * Calculate the fixed padding value in pixels for each font.     */    p_fnt_height = p_fnt_info->max_bounds.ascent + p_fnt_info->max_bounds.descent;    s_fnt_height = s_fnt_info->max_bounds.ascent + s_fnt_info->max_bounds.descent;    p_fnt_pad = s_spread * p_fnt_height;    s_fnt_pad = s_spread * s_fnt_height;    /*     * Calculate fixed height and offset requirements.     */    flag_height = p_fnt_height + (p_fnt_pad << 1);    p_height = 0;    p_y_off = flag_height + p_bdr_width;    p_x_off = p_y_off * p_spread;    s_height = s_fnt_height + (s_fnt_pad << 1) + (s_bdr_width << 1);    s_y_off = s_height;    s_x_off = p_x_off;    /*     * Set up the pane list header.     */    pane->next = pane;    pane->prev = pane;    pane->type = PL_HEADER;    pane->serial = -1;    /*     * Initialize the internal pane and selection creation queues.     */    _XMWinQueInit();        /*     * Create pane, active, and inactive GC's.     */    values = (XGCValues *)malloc(sizeof(XGCValues));    valuemask = (GCForeground | GCBackground | GCFont | GCLineWidth);    /*     * First, pane.     */    values->foreground = p_frg_color.pixel;    values->background = bkgnd_color.pixel;    values->font = p_fnt_info->fid;    values->line_width = p_bdr_width;        pane_GC = XCreateGC(			display, 			RootWindow(display, DefaultScreen(display)),			valuemask,			values);    /*     * Then normal video selection.     */    values->foreground = s_frg_color.pixel;    values->background = bkgnd_color.pixel;    values->font = s_fnt_info->fid;    values->line_width = s_bdr_width;    normal_select_GC = XCreateGC(display, 				 RootWindow(display, DefaultScreen(display)),				 valuemask,				 values);    /*     * Inverse video selection.     */    values->foreground = bkgnd_color.pixel;		    values->background = s_frg_color.pixel;    values->font = s_fnt_info->fid;    values->line_width = s_bdr_width;    inverse_select_GC = XCreateGC(display, 				  RootWindow(display, DefaultScreen(display)),				  valuemask,				  values);    stipple_pixmap = XCreateBitmapFromData(display,					   RootWindow(display,						      DefaultScreen(display)),					   stipple_bits,							   stipple_width,							   stipple_height);	        /*     * Finally, inactive pane header and selections     */    valuemask |= (GCFillStyle | GCStipple);    values->foreground = s_frg_color.pixel;    values->background = bkgnd_color.pixel;    values->font = s_fnt_info->fid;    values->line_width = s_bdr_width;    values->fill_style = FillStippled;    values->stipple = stipple_pixmap;	    inact_GC = XCreateGC(display, 			 RootWindow(display, DefaultScreen(display)),			 valuemask,			 values);    valuemask |= (GCGraphicsExposures);    values->graphics_exposures = False;    inact_GC_noexpose = XCreateGC (display,     				   RootWindow (display, 					       DefaultScreen (display)),				   valuemask, values);    /*     * Construct the XMenu object.     */    /* -------------------- Menu data -------------------- */    menu->menu_style = menu_style;    menu->menu_mode = menu_mode;    menu->freeze = freeze;    menu->aeq = 0;    menu->recompute = 1;    menu->parent = parent;    menu->height = 0;    menu->width = 0;    menu->mouse_cursor = mouse_cursor;    menu->assoc_tab = assoc_tab;    menu->p_list = pane;    /* -------------------- Pane window data -------------------- */    menu->p_style = p_style;    menu->p_events = DEF_P_EVENTS;    menu->p_fnt_info = p_fnt_info;    menu->p_fnt_pad = p_fnt_pad;    menu->p_spread = p_spread;    menu->p_bdr_width = p_bdr_width;    menu->flag_height = flag_height;    menu->p_width = 0;    menu->p_height = p_height;    menu->p_x_off = p_x_off;    menu->p_y_off = p_y_off;    menu->p_count = 0;    menu->pane_GC = pane_GC;    menu->x_pos = 0;    menu->y_pos = 0;    /* -------------------- Selection window data -------------------- */    menu->s_style = s_style;    menu->s_events = DEF_S_EVENTS;    menu->s_fnt_info = s_fnt_info;    menu->s_fnt_pad = s_fnt_pad;    menu->s_spread = s_spread;    menu->s_bdr_width = s_bdr_width;		/* unnecessary */    menu->s_width = 0;    menu->s_height = s_height;    menu->s_x_off = s_x_off;    menu->s_y_off = s_y_off;    menu->s_count = 0;    menu->normal_select_GC = normal_select_GC;    menu->inverse_select_GC = inverse_select_GC;    menu->inact_GC = inact_GC;    /* -------------------- Color data -------------------- */    menu->p_bdr_color = p_bdr_color.pixel;    menu->s_bdr_color = s_bdr_color.pixel;    menu->p_frg_color = p_frg_color.pixel;    menu->s_frg_color = s_frg_color.pixel;    menu->bkgnd_color = bkgnd_color.pixel;    /* -------------------- Pixmap data -------------------- */    menu->p_bdr_pixmap = NULL;    menu->s_bdr_pixmap = NULL;    menu->p_frg_pixmap = NULL;    menu->s_frg_pixmap = NULL;    menu->bkgnd_pixmap = NULL;    if (DisplayPlanes (display, DefaultScreen (display)) == 1)	menu->inact_pixmap = inact_bitmap;    else    {	int loop;		menu->inact_pixmap = XCreatePixmap (display,					    parent,					    16,					    16,					    DisplayPlanes (display,							   DefaultScreen (display)));	if (menu->inact_pixmap == NULL)	{	    _XMErrorCode = XME_STORE_BITMAP;	    return(NULL);	}	XCopyPlane (display, inact_bitmap, menu->inact_pixmap, 		    inact_GC_noexpose, 0, 0, 16, 16, 0, 0, 1);/*	for (loop = 0;	     loop < DisplayPlanes (display, DefaultScreen (display));	     loop++)	{	    XCopyPlane (display,			inact_bitmap,			menu->inact_pixmap,			inact_GC,			0,			0,			16,			16,			0,			0,			(1 << loop));	}*/    }    /*     * Return the completed XMenu.     */    _XMErrorCode = XME_NO_ERROR;    return(menu);}

⌨️ 快捷键说明

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