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

📄 xwigb.c

📁 su 的源代码库
💻 C
📖 第 1 页 / 共 3 页
字号:
	/* connect to X server */	if ((dpy=XOpenDisplay(NULL))==NULL)		err("Cannot connect to display %s!\n",XDisplayName(NULL));	scr = DefaultScreen(dpy);	black = BlackPixel(dpy,scr);	white = WhitePixel(dpy,scr);		/* set endian for display */	if (!getparint("endian",&endian)){		if(BitmapBitOrder(dpy)==LSBFirst)			endian=0;		else if(BitmapBitOrder(dpy)==MSBFirst)			endian=1;		else			endian=CWPENDIAN;	}	/* set interpolation flag for display */	if (!getparint("interp",&interp))	interp = 0;	/* create window */	win = xNewWindow(dpy,xbox,ybox,wbox,hbox,(int) black,(int) white,windowtitle);			/* make GC for image */	gci = XCreateGC(dpy,win,0,NULL);	/* make sure foreground/background are black/white */	XSetForeground(dpy,gci,black);	XSetBackground(dpy,gci,white);	/* set normal event mask */	XSelectInput(dpy,win,		StructureNotifyMask |		ExposureMask |		KeyPressMask |		PointerMotionMask |		ButtonPressMask |		ButtonReleaseMask |		Button1MotionMask |		Button2MotionMask);		/* map window */	XMapWindow(dpy,win);		/* clear the window */	XClearWindow(dpy,win);						/* determine good size for axes box */	xSizeAxesBox(dpy,win,		labelfont,titlefont,style,		&x,&y,&width,&height);		/* note that image is out of date */	imageOutOfDate = 1;	/* main event loop */	while(imageOutOfDate|(~imageOutOfDate)/*True*/) {		XNextEvent(dpy,&event);		/* if window was resized */		if (event.type==ConfigureNotify &&			(event.xconfigure.width!=winwidth ||			 event.xconfigure.height!=winheight)) {			winwidth = event.xconfigure.width;			winheight = event.xconfigure.height;										/* determine good size for axes box */			xSizeAxesBox(dpy,win,				labelfont,titlefont,style,				&x,&y,&width,&height);						/* clear the window */			XClearWindow(dpy,win);						/* note that image is out of date */			imageOutOfDate = 1;		/* else if window exposed */		} else if (event.type==Expose) {						/* clear all expose events from queue */			while (XCheckTypedEvent(dpy,Expose,&event));						/* if necessary, make new image */			if (imageOutOfDate) {				if (image!=NULL) {				/*	free1(image->data); */					XDestroyImage(image);				}				image = newBitmap(dpy,width,height,					n1,d1,f1,n2,x2,z,					x1begb,x1endb,x2begb,x2endb,					xcur,clip,wt,va,					&p2beg,&p2end,endian,interp,					wigclip,style);				imageOutOfDate = 0;			}				/* draw image (before axes so grid lines visible) */			XPutImage(dpy,win,gci,image,0,0,x,y,				image->width,image->height);			/* draw curve on top of image */			for (i=0; i<curve; i++)				xDrawCurve(dpy,win,					   x,y,width,height,					   x1begb,x1endb,0.0,0.0,					   x2begb,x2endb,p2beg,p2end,					   x1curve[i],x2curve[i],npair[i],					   curvecolor[i],style);			/* draw axes on top of image */			xDrawAxesBox(dpy,win,				x,y,width,height,				x1begb,x1endb,0.0,0.0,				d1num,f1num,n1tic,grid1,label1,				x2begb,x2endb,p2beg,p2end,				d2num,f2num,n2tic,grid2,label2,				labelfont,title,titlefont,				labelcolor,titlecolor,gridcolor,				style);		/* else if key down */		} else if (event.type==KeyPress) {			XLookupString(&(event.xkey),keybuf,0,&keysym,&keystat);			if (keysym==XK_s) {				xMousePrint(event,style, mpicksfp,					    x,y,width,height,					    x1begb,x1endb,x2begb,x2endb,					    p2beg, p2end);			} else if (keysym==XK_l ) {				/* set lock */		  			     lock = 1 ;			  if (verbose) warn("zoom lock set  %d\n",lock); 			} else if (keysym==XK_u ) {				/* unset lock */		  			     lock = 0 ;			  if (verbose) warn("zoom lock released %d\n",lock); 			} else if (keysym==XK_Shift_L ) { 			     /* if (verbose) 			     fprintf(stderr,"Shift Left pressed \n");*/			} else if (keysym==XK_KP_1 || keysym==XK_1 ) { 			     mvefac=1.;			     fprintf(stderr,"Zoom/Move factor = 1 \n");			} else if (keysym==XK_KP_2 || keysym==XK_2 ) { 			     mvefac=2.;			     fprintf(stderr,"Zoom/Move factor = 2 \n");			} else if (keysym==XK_KP_3 || keysym==XK_3 ) { 			     mvefac=3.;			     if (verbose) 			     fprintf(stderr,"Zoom/Move factor = 3 \n");			} else if (keysym==XK_KP_4 || keysym==XK_4 ) { 			     mvefac=4.;			     if (verbose) 			     fprintf(stderr,"Zoom/Move factor = 4 \n");			} else if (keysym==XK_KP_5 || keysym==XK_5 ) { 			     mvefac=5.;			     if (verbose) 			     fprintf(stderr,"Zoom/Move factor = 5 \n");			} else if (keysym==XK_KP_6 || keysym==XK_6 ) { 			     mvefac=6.;			     if (verbose) 			     fprintf(stderr,"Zoom/Move factor = 6 \n");			} else if (keysym==XK_KP_7 || keysym==XK_7 ) { 			     mvefac=7.;			     if (verbose) 			     fprintf(stderr,"Zoom/Move factor = 7 \n");			} else if (keysym==XK_KP_8 || keysym==XK_8 ) { 			     mvefac=8.;			     if (verbose) 			     fprintf(stderr,"Zoom/Move factor = 8\n");			} else if (keysym==XK_KP_9 || keysym==XK_9 ) { 			     mvefac=9.;			     if (verbose) 			     fprintf(stderr,"Zoom/Move factor = 9\n");			} else if (keysym==XK_Left || keysym==XK_KP_Left ) {			 			  /* move zoom box to left by half window width */			  mve = (x2endb - x2begb)/mvefac ;			  x2begb = x2begb - mve ;			  x2endb = x2endb - mve ;			  msg="move "; 			  /* check for bounds of full window */			  if (x2begb < x2beg) {			    if ( lock ) { x2begb = x2begb + mve ;			                  x2endb = x2endb + mve ;					  msg="limit ";					  mve=0;			    } else { x2begb = x2beg ;}			  }			  			  if (verbose) fprintf(stderr,"%s %g\n",msg,mve);			  /* clear area and force an expose event */			  XClearArea(dpy,win,0,0,0,0,True);			  /* note that image is out of date */			  imageOutOfDate = 1;											} else if (keysym==XK_Right || keysym==XK_KP_Right ) {			  /* move zoom box to right by half window width*/			  mve = (x2endb - x2begb)/mvefac ;			  x2begb = x2begb + mve ;			  x2endb = x2endb + mve ;			  msg="move "; 			  /* check for bounds of full window */			  if (x2endb > x2end) {			    if ( lock ) { x2begb = x2begb - mve ;			                  x2endb = x2endb - mve ;					  msg="limit ";					  mve=0;			    } else { x2endb = x2end ;}			  }			  if (verbose) fprintf(stderr,"%s %g\n",msg,mve);			  /* clear area and force an expose event */			  XClearArea(dpy,win,0,0,0,0,True);			  /* note that image is out of date */			  imageOutOfDate = 1;											} else if (keysym==XK_Down || keysym==XK_KP_Down  ) {			  /* move zoom box down by half window height */			  mve = (x1endb - x1begb)/mvefac ;			  x1begb = x1begb + mve ;			  x1endb = x1endb + mve ;			  msg="move "; 			  /* check for bounds of full window */			  if (x1endb > x1end) {			    if ( lock ) {  x1begb = x1begb - mve ;			                   x1endb = x1endb - mve ;					  msg="limit ";					  mve=0;			    } else { x1endb = x1end ;}			  }			  if (verbose) fprintf(stderr,"%s %g\n",msg,mve);			  /* clear area and force an expose event */			  XClearArea(dpy,win,0,0,0,0,True);			  /* note that image is out of date */			  imageOutOfDate = 1;											} else if (keysym==XK_Up || keysym==XK_KP_Up ) {			  /* move zoom box down by half window height */			  mve = (x1endb - x1begb)/mvefac ;			  x1begb = x1begb - mve ;			  x1endb = x1endb - mve ;			  msg="move "; 			  /* check for bounds of full window */			  if (x1begb < x1beg) {			    if ( lock ) { x1begb = x1begb + mve ;			                  x1endb = x1endb + mve ;					  msg="limit ";					  mve=0;			    } else { x1begb = x1beg ;}			  }			  if (verbose) fprintf(stderr,"%s %g\n",msg,mve);							/* clear area and force an expose event */			XClearArea(dpy,win,0,0,0,0,True);						/* note that image is out of date */			imageOutOfDate = 1;											} else if (keysym==XK_o || keysym==XK_KP_Subtract ) {			  /* zoom out .... vertical*/			  mve = (x1endb - x1begb)/mvefac ;			  x1begb = x1begb - mve ;			  x1endb = x1endb + mve ;			  /* check for bounds of full window */			  if (x1begb < x1beg) x1begb = x1beg ;			  if (x1endb > x1end) x1endb = x1end ;			  /*   .... and horizontal */			  mve = (x2endb - x2begb)/mvefac ;			  x2begb = x2begb - mve ;			  x2endb = x2endb + mve ;			  /* check bounds of original image */			  if (x2begb < x2beg) x2begb = x2beg ;			  if (x2endb > x2end) x2endb = x2end ;			 				  /* clear area and force an expose event */		   	  XClearArea(dpy,win,0,0,0,0,True);			 			  /* note that image is out of date */			  imageOutOfDate = 1;											} else if (keysym==XK_i || keysym==XK_KP_Add ) {			  /* zoom in .... vertical*/			  mve = (x1endb - x1begb)/(2.*mvefac) ;			  x1begb = x1begb + mve ;			  x1endb = x1endb - mve ;			  /*   .... and horizontal */			  mve = (x2endb - x2begb)/(2.*mvefac) ;			  x2begb = x2begb + mve ;			  x2endb = x2endb - mve ;			  /* clear area and force an expose event */			  XClearArea(dpy,win,0,0,0,0,True);			 			  /* note that image is out of date */			  imageOutOfDate = 1;											} else if (keysym==XK_c || keysym==XK_Page_Down) {		  						/* Change clip for image */ 		       		clip += clip/10. ;				/* if (verbose) warn("clip=%g\n",clip);*/				if (verbose) fprintf(stderr,"clip=%g\n",clip); 				/* note that image is out of date */				 imageOutOfDate = 1;								 			} else if (keysym==XK_a || keysym==XK_Page_Up) {				/* Change clip for image */			        clip -= clip/10. ;				/* if (verbose) warn("clip=%g\n",clip);*/				if (verbose) fprintf(stderr,"clip=%g\n",clip);				/* note that image is out of date */				imageOutOfDate = 1;							} else if (keysym==XK_q || keysym==XK_Q) {			/* This is the exit from the event loop */				break;			} else if (keysym==XK_p || keysym==XK_P) {			/* invoke pswigb with appropriate data */				char cmdtemp[256];								char *cmdline;				float cmdfloat;				int iargc;				int nbpi;				float num;				short debug=1;				FILE *plotfp;	/*fp for plot data*/											cmdline = (char *) emalloc(n2+BUFSIZ);				strcpy(cmdline,"pswigb ");				for (iargc = 1; iargc < argc; iargc++ ) {				  /* check for options defined below *GK*/				  if (strncmp(argv[iargc], "d2num=", 5) &&				      strncmp(argv[iargc], "x1beg=", 5) && 				      strncmp(argv[iargc], "x1end=", 5) && 				      strncmp(argv[iargc], "x2beg=", 5) && 				      strncmp(argv[iargc], "x2end=", 5) && 				      strncmp(argv[iargc], "title=", 5) && 				      strncmp(argv[iargc], "label1=", 6) && 				      strncmp(argv[iargc], "label2=", 6) && 				      strncmp(argv[iargc], "style=", 5) 				      ) {				      	strcat(cmdline," ");					strcat(cmdline,argv[iargc]);                                  }				}								/* override incompatible args */				sprintf(cmdtemp," axescolor=%s",labelcolor);				strcat(cmdline,cmdtemp);				nbpi = 300; getparint("nbpi", &nbpi);				sprintf(cmdtemp," nbpi=%d",nbpi);				strcat(cmdline,cmdtemp);				cmdfloat = DisplayWidthMM(dpy,scr)/25.4;				cmdfloat /= DisplayWidth(dpy,scr);				sprintf(cmdtemp," wbox=%g", cmdfloat*width);				strcat(cmdline,cmdtemp);				sprintf(cmdtemp," xbox=%g", 0.5+cmdfloat*xbox);				strcat(cmdline,cmdtemp);				cmdfloat = DisplayHeightMM(dpy,scr)/25.4;				cmdfloat /= DisplayHeight(dpy,scr);				sprintf(cmdtemp," hbox=%g", cmdfloat*height);				strcat(cmdline,cmdtemp);				sprintf(cmdtemp," ybox=%g", 0.5+cmdfloat*ybox);				strcat(cmdline,cmdtemp);				sprintf(cmdtemp," x1beg=%g", x1begb);				strcat(cmdline,cmdtemp);				sprintf(cmdtemp," x1end=%g", x1endb);				strcat(cmdline,cmdtemp);				sprintf(cmdtemp," x2beg=%g", x2begb);				strcat(cmdline,cmdtemp);				sprintf(cmdtemp," x2end=%g", x2endb);				strcat(cmdline,cmdtemp);				num=(x2endb-x2begb)/4;				sprintf(cmdtemp," d2num=%g", num);				strcat(cmdline,cmdtemp);

⌨️ 快捷键说明

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