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

📄 eps.cpp

📁 一种效率高
💻 CPP
字号:
#include <unistd.h>#include <stdio.h>#include <qimage.h>#include <qiodevice.h>#include <qstring.h>#include "eps.h"#define BUFLEN 200char buf[BUFLEN+1];#define BBOX "%%BoundingBox:"#define BBOX_LEN strlen(BBOX)int bbox ( const char *fileName, int *x1, int *y1, int *x2, int *y2){	FILE * file;	int a, b, c, d;	int ret = FALSE;	file = fopen (fileName, "r");	do {		if (! fgets (buf, BUFLEN, file)) break;		if (strncmp (buf, BBOX, BBOX_LEN) == 0)		{			ret = sscanf (buf, "%s %d %d %d %d", buf,				&a, &b, &c, &d);    			if (ret == 5) {				ret = TRUE;				break;			} 		}  	} while ( true );	*x1 = a;	*y1 = b;	*x2 = c;	*y2 = d;	fclose (file);	return ret;}  void kimgio_epsf_read (QImageIO *image){	FILE * ghostfd, * imagefd;	char * tmpFileName;	int x1, y1, x2, y2;	QString cmdBuf;	QString tmp;	// find bounding box	if ( bbox (image->fileName(), &x1, &y1, &x2, &y2) == 0 ) {		return;	}	// temporary file name	tmpFileName = tmpnam(NULL); 	if( tmpFileName == 0 ) {		return;	}	// x1, y1 -> translation	// x2, y2 -> new size	x2 -= x1;	y2 -= y1;	// create GS command line	cmdBuf = "gs -sOutputFile=";	cmdBuf += tmpFileName;	cmdBuf += " -q -g";	tmp.setNum( x2 );	cmdBuf += tmp;	tmp.setNum( y2 );	cmdBuf += "x";	cmdBuf += tmp;	cmdBuf += " -dNOPAUSE -sDEVICE=ppm -c "		"0 0 moveto "		"1000 0 lineto "		"1000 1000 lineto "		"0 1000 lineto "		"1 1 254 255 div setrgbcolor fill "		"0 0 0 setrgbcolor - -c showpage quit";	// run ghostview	ghostfd = popen (cmdBuf, "w");	if ( ghostfd == 0 ) {		return;	}	fprintf (ghostfd, "\n%d %d translate\n", -x1, -y1);	// write image to gs	imagefd = fopen( image->fileName(), "r" );	if ( imagefd != 0 )	{		while( fgets (buf, BUFLEN, imagefd) != 0 ) {			fputs (buf, ghostfd);		}		fclose (imagefd);  	}	pclose ( ghostfd );	// load image	QImage myimage;	bool loadstat = myimage.load (tmpFileName);	if( loadstat ) {		myimage.createHeuristicMask();		image->setImage (myimage);		image->setStatus (0);	}	unlink (tmpFileName);	return;}void kimgio_epsf_write( QImageIO * ){	// TODO: implement this	warning( "kimgio_epsf_write: not yet implemented" );}

⌨️ 快捷键说明

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