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

📄 xpwin.c

📁 seismic software,very useful
💻 C
字号:
/* Copyright (c) Colorado School of Mines, 1990./* All rights reserved.                       *//**************************************************************************Read Encapsulated PostScript from standard input and display in an X window***************************************************************************AUTHOR:  Dave Hale, Colorado School of Mines, 07/25/90**************************************************************************/#include <stdio.h>#include <signal.h>#include <X11/X.h>#include <X11/Xlib.h>#include <DPS/XDPS.h>#include <DPS/XDPSlib.h>#include <DPS/dpsXclient.h>#define LBUF	1000main(){	float llx,lly,urx,ury;	int width,height,i;	char buf[LBUF],string[256];	char *scalestring="0.88889 1.10769 scale\n"; /* 72/81, 72/65 */	Display *dpy;	XEvent ev;	GC gc;	Window win;	DPSContext ctxt;	/* open display */	if ((dpy=XOpenDisplay(NULL))==NULL) {		fprintf(stderr,"Cannot connect to display %s\n",			XDisplayName(NULL));		exit(-1);	}		/* determine window size */	fgets(buf,LBUF,stdin);	sscanf(buf,"%*s %s",string);	string[3] = '\0';	if (strcmp(string,"EPS")!=0) {		width = 612;		height = 792;	} else {		while(fgets(buf,LBUF,stdin)!=NULL) { 			if (buf[0]!='%' || buf[1]!='%') continue;			sscanf(buf,"%s",string);			if (strcmp(string,"%%BoundingBox:")==0) {				sscanf(buf,"%*s %s",string);				if (strcmp(string,"(atend)")==0) {					width = 612;					height = 792;				} else {					sscanf(buf,"%*s %f %f %f %f",						&llx,&lly,&urx,&ury);					width = urx-llx;					height = ury-lly;				}				break;			} else if (strcmp(string,"%%EndComments")==0) {				width = 612;				height = 792;				break;			}		}	}		/* create and map window */	win = XCreateSimpleWindow(dpy,DefaultRootWindow(dpy),		100,100,width,height,1,                BlackPixel(dpy,DefaultScreen(dpy)),		WhitePixel(dpy,DefaultScreen(dpy)));	XMapWindow(dpy,win);		/* create graphics context */	gc = XCreateGC(dpy,RootWindow(dpy,DefaultScreen(dpy)),0,NULL);	XSetForeground(dpy,gc,BlackPixel(dpy,DefaultScreen(dpy)));	XSetBackground(dpy,gc,WhitePixel(dpy,DefaultScreen(dpy)));	/* create and set Display PostScript context */	ctxt = XDPSCreateSimpleContext(dpy,win,gc,0,height,		DPSDefaultTextBackstop,DPSDefaultErrorProc,NULL);	if (ctxt==NULL) {		fprintf(stderr,"Cannot create DPS context\n");		exit(-1);	}	DPSSetContext(ctxt);	DPSWaitContext(ctxt);	for (i=0; i<1000000; ++i);  /* KLUDGE synchronization */		/* scale */	/* no longer necessary, as of AIX Version 3.003? */	/*	DPSWriteData(ctxt,scalestring,strlen(scalestring));	*/	/* read PostScript from standard input and write to window */	while (fgets(buf,LBUF,stdin)!=NULL) {		sscanf(buf,"%s",string);		if (strcmp(string,"showpage")==0) break;		DPSWriteData(ctxt,buf,strlen(buf));	}	DPSFlushContext(ctxt);	/* any key press to exit */	XSelectInput(dpy,win,KeyPressMask);	while(True) {            XNextEvent(dpy,&ev);	    if (ev.type==KeyPress) break;	}	/* clean up */	DPSDestroySpace(DPSSpaceFromContext(ctxt));	XFlush(dpy);}

⌨️ 快捷键说明

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