void MultiLayer::exportToEPS(const QString& fname, int res, QPrinter::Orientation o, QPrinter::PageSize pageSize, QPrinter::ColorMode col) { QPrinter printer; printer.setResolution(res); printer.setPageSize(pageSize); printer.setColorMode(col); printer.setOrientation(o); printer.setFullPage(TRUE); printer.setOutputToFile (TRUE); printer.setOutputFileName(fname); QPainter paint(&printer); QPaintDeviceMetrics pdmTo(&printer); int dpiy = pdmTo.logicalDpiY(); int margin = (int) ( (0.5/2.54)*dpiy ); // 5 mm margins QSize size = canvas->size(); double scaleFactorX=(double)(pdmTo.width() - 2*margin)/(double)size.width(); double scaleFactorY=(double)(pdmTo.height() - 2*margin)/(double)size.height(); for (int i=0;i<(int)graphsList->count();i++) { Graph *gr=(Graph *)graphsList->at(i); Plot *myPlot= (Plot *)gr->plotWidget(); PrintFilter filter(myPlot); filter.setOptions(QwtPlotPrintFilter::PrintAll | QwtPlotPrintFilter::PrintTitle | QwtPlotPrintFilter::PrintCanvasBackground); QPoint pos=gr->pos(); pos=QPoint(int(margin + pos.x()*scaleFactorX),int(margin + pos.y()*scaleFactorY)); int width=int(myPlot->frameGeometry().width()*scaleFactorX); int height=int(myPlot->frameGeometry().height()*scaleFactorY); QRect rect = QRect(pos,QSize(width,height)); if (myPlot->paletteBackgroundColor() != QColor(white)) paint.fillRect(rect, myPlot->paletteBackgroundColor()); int lw = myPlot->lineWidth(); if ( lw > 0) { myPlot->printFrame(&paint, rect); rect.moveBy ( lw, lw); rect.setWidth(rect.width() - 2*lw); rect.setHeight(rect.height() - 2*lw); } myPlot->print(&paint, rect, filter); } if (hasOverlapingLayers()) updateTransparency(); }
/* *Function: Print *Inputs:none *Outputs:none *Returns:none */ void GraphPaneData::Print() { IT_IT("GraphPaneData::Print"); QPrinter prt; prt.setDocName(tr("Pen Trace")); prt.setCreator(tr(SYSTEM_NAME)); prt.setOrientation(QPrinter::Landscape); prt.setOutputFileName("~out.ps"); prt.setOutputToFile(false); // if(prt.setup(this)) { // // Handle the case of no printer being selected // if(!prt.printerName().isEmpty()) { QPainter p; p.begin(&prt); QPaintDeviceMetrics metrics(p.device()); // int dpix = metrics.logicalDpiX() ; // inch border int dpiy = metrics.logicalDpiY() ; // QRect body(dpix, dpiy, metrics.width() - dpix*6, metrics.height() - dpiy*2); TheGraph.Plot(p,body,Qt::white); // QFont font("times", 8); p.setFont(font); // p.drawText( body.left() ,body.top(), Title); // p.end(); // } else { QMessageBox::information(this,tr("Print Graph Error"),tr("No Printer Selected!")); }; }; };
bool QmvList::printSet() { QmvClass *cls = editor->shuttleClass(); if ( !cls || (cls->count() < 1) ) return FALSE; QPrinter printer; printer.setOutputFileName( cls->relationName() + ".ps"); printer.setOutputToFile(FALSE); // printer dialog if ( printer.setup(this) ) { if ( cls->printReport( &printer ) ) { QMessageBox::information(0, "printSet:information", tr("Printing has completed.\n\n %1") .arg(cls->relationTitle()), "OK", 0 ); return TRUE; } else { QMessageBox::warning( 0, "printSet:warning", tr("Printing failed.\n\n %1") .arg(cls->relationTitle()), "OK", 0 ); return FALSE; } } else { QMessageBox::information(0, "printSet:information", tr("Printing has been aborted.\n\n %1") .arg(cls->relationTitle()), "OK", 0 ); return FALSE; } }
/// Writes all the relevant data into the tdf file. void ExportEPS::doExport() { using namespace std; // code adapted from Umbrello bool exportSuccessful; QRect textrect; //out->close(); // print the image to a normal postscript file, // do not clip so that everything ends up in the file // regardless of "paper size" // because we want to work with postscript // user-coordinates, set to the resolution // of the printer (which should be 72dpi here) QPrinter *printer; printer = new QPrinter(QPrinter::ScreenResolution); printer->setOutputToFile(true); printer->setOutputFormat(QPrinter::PostScriptFormat); printer->setOutputFileName(fileName); printer->setColorMode(QPrinter::Color); printer->setFontEmbeddingEnabled(true); // do not call printer.setup(); because we want no user // interaction here QPainter *painter = new QPainter(printer); // make sure the widget sizes will be according to the // actually used printer font, important for getDiagramRect() // and the actual painting //view->forceUpdateWidgetFontMetrics(painter); if (!scrollview) { delete painter; delete printer; exportSuccessful = FALSE; } Draw* draw = new Draw(scrollview, options); QRect rect = draw->getBoundingBox(machine, painter); rect.setWidth(rect.width()+10); rect.setHeight(rect.height()+10); painter->translate(-rect.x(),-rect.y()); //view->getDiagram(rect,*painter); int resolution = printer->resolution(); if (scrollview) scrollview->getDrawArea()->getSelection()->deselectAll(machine); draw->drawStates(machine, painter, 0, 0, 1.0); draw->drawTransitions(machine, painter, 0, 0, 1.0); if (machine->getDrawITrans()) draw->drawInitialTransition(machine, machine->getInitialTransition(), painter, 0, 0, 1.0, textrect, FALSE); // delete painter and printer before we try to open and fix the file delete painter; delete printer; delete draw; // modify bounding box from screen to eps resolution. rect.setWidth( int(ceil(rect.width() * 72.0/resolution)) ); rect.setHeight( int(ceil(rect.height() * 72.0/resolution)) ); exportSuccessful = fixEPS(fileName,rect); // next painting will most probably be to a different device (i.e. the screen) //view->forceUpdateWidgetFontMetrics(0); if (scrollview) scrollview->getDrawArea()->reset(); //return exportSuccessful; }
void Clamp::print() { #if 1 QPrinter printer; #else QPrinter printer(QPrinter::HighResolution); #if QT_VERSION < 0x040000 printer.setOutputToFile(true); printer.setOutputFileName("/tmp/FI.ps"); printer.setColorMode(QPrinter::Color); #else printer.setOutputFileName("/tmp/FI.pdf"); #endif #endif QString docName = splot->title().text(); if (!docName.isEmpty()) { docName.replace(QRegExp(QString::fromLatin1("\n")), tr(" -- ")); printer.setDocName(docName); } printer.setCreator("RTXI"); printer.setOrientation(QPrinter::Landscape); #if QT_VERSION >= 0x040000 QPrintDialog dialog(&printer); if ( dialog.exec() ) { #else if (printer.setup()) { #endif /* RTXIPrintFilter filter; if (printer.colorMode() == QPrinter::GrayScale) { int options = QwtPlotPrintFilter::PrintAll; filter.setOptions(options); filter.color(QColor(29, 100, 141), QwtPlotPrintFilter::CanvasBackground); filter.color(Qt::white, QwtPlotPrintFilter::CurveSymbol); } */ // splot->print(printer, filter); QwtPlotRenderer *renderer = new QwtPlotRenderer; renderer->renderTo(splot, printer); } } void Clamp::exportSVG() { QString fileName = "FI.svg"; std::cout<<"flag 0"<<std::endl; #if QT_VERSION < 0x040000 std::cout<<"flag 1"<<std::endl; #ifndef QT_NO_FILEDIALOG std::cout<<"flag 2"<<std::endl; fileName = QFileDialog::getSaveFileName("FI.svg", "SVG Documents (*.svg)", this); #endif std::cout<<"flag 3"<<std::endl; if (!fileName.isEmpty()) { // enable workaround for Qt3 misalignments QwtPainter::setSVGMode(true); QPicture picture; QPainter p(&picture); // splot->print(&p, QRect(0, 0, 800, 600)); QwtPlotRenderer *renderer = new QwtPlotRenderer; renderer->renderTo(splot, p, QRect(0, 0, 800, 600)); p.end(); picture.save(fileName, "svg"); } #elif QT_VERSION >= 0x040300 std::cout<<"flag 4"<<std::endl; #ifdef QT_SVG_LIB std::cout<<"flag 5"<<std::endl; #ifndef QT_NO_FILEDIALOG std::cout<<"flag 6"<<std::endl; fileName = QFileDialog::getSaveFileName(this, "Export File Name", QString(), "SVG Documents (*.svg)"); #endif std::cout<<"flag 7"<<std::endl; if ( !fileName.isEmpty() ) { QSvgGenerator generator; generator.setFileName(fileName); generator.setSize(QSize(800, 600)); // splot->print(generator); } #endif #endif }