Пример #1
0
FileItem::FileItem(const QString & name, const QString & path ) :
	QTreeWidgetItem( QStringList( name ), TypeFileItem ),
	m_path( path )
{
	determineFileType();
	initPixmaps();
}
Пример #2
0
void MainWindow::saveImage(const QString &fileName)
{
	canvas->unselectAll();

	FileType fileType = determineFileType(fileName);
	QSize imageDimension(canvas->sceneRect().width(), canvas->sceneRect().height());

	QPainter *painter = new QPainter();
	QPrinter *printer = new QPrinter();
	printer->setPaperSize(5.0*imageDimension, QPrinter::Point);
	printer->setFullPage(true);
	printer->setOutputFileName(fileName);

	// The vector graphics formats still seem to rasterize radial gradients, so I
	// use antialiasing to keep them looking pretty
	if(fileType == SVG){
		QSvgGenerator *svgGen = new QSvgGenerator();
		svgGen->setSize(5.0*imageDimension);
		svgGen->setFileName(fileName);
		painter->begin(svgGen);
		painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
		painter->setRenderHint(QPainter::Antialiasing, true);
		painter->setRenderHint(QPainter::HighQualityAntialiasing, true);
		canvas->render(painter);
		painter->end();
		delete svgGen;
	}else if(fileType == PNG || fileType == TIFF){
		QImage *image = new QImage(5.0*imageDimension, QImage::Format_ARGB32);
		painter->begin(image);
		painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
		painter->setRenderHint(QPainter::Antialiasing, true);
		painter->setRenderHint(QPainter::HighQualityAntialiasing, true);
		canvas->render(painter);
		painter->end();
		image->save(fileName);
		delete image;
	}else if(fileType == PDF){
		printer->setOutputFormat(QPrinter::PdfFormat);
		painter->begin(printer);
		painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
		painter->setRenderHint(QPainter::Antialiasing, true);
		painter->setRenderHint(QPainter::HighQualityAntialiasing, true);
		canvas->render(painter);
		painter->end();
	}else if(fileType == PostScript){
		printer->setOutputFormat(QPrinter::PostScriptFormat);
		painter->begin(printer);
		painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
		painter->setRenderHint(QPainter::Antialiasing, true);
		painter->setRenderHint(QPainter::HighQualityAntialiasing, true);
		canvas->render(painter);
		painter->end();
	}else{
		QString message("Unsupported file type:\n\n");
		message += fileName;
		message += "\n\nSupported extensions are\n.pdf, .svg, .ps, .eps, .png, .tiff, .tif, .chmvp";
		error(message, __FILE__, __LINE__);
		return;
	}

	delete painter;
	delete printer;
}