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

📄 xframe.c

📁 fortran并行计算包
💻 C
字号:
/*   (C) 2001 by Argonne National Laboratory.       See COPYRIGHT in top-level directory.*//*   This file contains routines to draw a 3-d like frame about a given    box with a given width.  Note that we might like to use a high/low   color for highlights.   The region has 6 parameters.  These are the dimensions of the actual frame. */#include "mpe_graphics_conf.h"#include "mpetools.h"#include "basex11.h"/* 50% grey stipple pattern */static Pixmap grey50 = (Pixmap)0;         #define cboard50_width 8#define cboard50_height 8static unsigned char cboard50_bits[] = {   0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa};static PixVal HiPix=0, LoPix=0;/*    Set the colors for the highlights by name  */int XBFrameColors( XBWin, Rgn, Hi, Lo )XBWindow     *XBWin;XBDecoration *Rgn;char         *Hi, *Lo;{    Rgn->Hi = XBGetColor( XBWin, Hi, 1 );    Rgn->Lo = XBGetColor( XBWin, Lo, 1 );    Rgn->HasColor = Rgn->Hi != Rgn->Lo;    return 0;}int XBDrawFrame( XBWin, Rgn )XBWindow *XBWin;XBDecoration *Rgn;{    int    xl = Rgn->Box.x, yl = Rgn->Box.y, 	xh = Rgn->Box.xh, yh = Rgn->Box.yh,	o = Rgn->width;    XPoint high[7], low[7];    PixVal Hi, Lo;/* High polygon */    high[0].x = xl;            high[0].y = yh;    high[1].x = xl + o;        high[1].y = yh - o;    high[2].x = xh - o;        high[2].y = yh - o;    high[3].x = xh - o;        high[3].y = yl + o;    high[4].x = xh;            high[4].y = yl;    high[5].x = xh;            high[5].y = yh;    high[6].x = xl;            high[6].y = yh;     /* close path */    low[0].x  = xl;            low[0].y = yh;    low[1].x  = xl;            low[1].y = yl;    low[2].x  = xh;            low[2].y = yl;    low[3].x  = xh - o;        low[3].y = yl + o;    low[4].x  = xl + o;        low[4].y = yl + o;    low[5].x  = xl + o;        low[5].y = yh - o;    low[6].x  = xl;            low[6].y = yh;      /* close path */    if (Rgn->HasColor) {	if (Rgn->Hi) Hi = Rgn->Hi;	else         Hi = HiPix;	if (Rgn->Lo) Lo = Rgn->Lo;	else         Lo = LoPix;	XBSetPixVal( XBWin, Rgn->is_in ? Hi : Lo );	if ( o <= 1 )	    XDrawLines( XBWin->disp, XBDrawable(XBWin), XBWin->gc.set, 			high, 7, CoordModeOrigin );	else	    XFillPolygon( XBWin->disp, XBDrawable(XBWin), XBWin->gc.set, 			  high, 7, Nonconvex, CoordModeOrigin);	XBSetPixVal( XBWin, Rgn->is_in ? Lo : Hi );	if ( o <= 1 )	    XDrawLines( XBWin->disp, XBDrawable(XBWin), XBWin->gc.set, 			low, 7, CoordModeOrigin );	else	    XFillPolygon( XBWin->disp, XBDrawable(XBWin), XBWin->gc.set, 			  low, 7, Nonconvex, CoordModeOrigin);	/* We could use additional highlights here, such as lines drawn	   connecting the mitred edges. */		     }    else {	if (!grey50) 	    grey50 = XCreatePixmapFromBitmapData(XBWin->disp, XBWin->win, 						 (char *)cboard50_bits,						 cboard50_width, 						 cboard50_height, 1, 0, 1);	XBSetPixVal( XBWin, Rgn->Hi );	XFillPolygon( XBWin->disp, XBDrawable(XBWin), XBWin->gc.set, 		      high, 7, Nonconvex, CoordModeOrigin);	/* This can actually be done by using a stipple effect */	XSetFillStyle( XBWin->disp, XBWin->gc.set, FillStippled );	XSetStipple( XBWin->disp, XBWin->gc.set, grey50 );	XFillPolygon( XBWin->disp, XBDrawable(XBWin), XBWin->gc.set, 		      low, 7, Nonconvex, CoordModeOrigin);	XSetFillStyle( XBWin->disp, XBWin->gc.set, FillSolid );    }    return 0;}/*    XBClearWindow - Clear a region in a window    Input parameters:.   XBWin - window.   x,y   - upper left corner of region to clear.   w,h   - width and height of region to clear*/void XBClearWindow( XBWin, x, y, w, h )XBWindow *XBWin;int      x, y, w, h;{    XBSetPixVal(XBWin, XBWin->background );    XFillRectangle( XBWin->disp, XBDrawable(XBWin), XBWin->gc.set, 		    x, y, w, h );}/*   Set the colors for the highlights by name  */void XBFrameColorsByName( XBWin, Hi, Lo )XBWindow *XBWin;char     *Hi, *Lo;{    if (XBWin->numcolors > 2) {	HiPix = XBGetColor( XBWin, Hi, 1 );	LoPix = XBGetColor( XBWin, Lo, 1 );	/* HasColor = 1; */    }}

⌨️ 快捷键说明

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