MCPcopy Create free account
hub / github.com/KDE/labplot / exportToFile

Method exportToFile

src/frontend/datapicker/DatapickerImageView.cpp:797–891  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

795}
796
797bool DatapickerImageView::exportToFile(const QString& path, const Worksheet::ExportFormat format, const int resolution) {
798 QRectF sourceRect = scene()->sceneRect();
799 bool rc = false;
800
801 // print
802 if (format == Worksheet::ExportFormat::PDF) {
803 QPrinter printer(QPrinter::HighResolution);
804 printer.setOutputFormat(QPrinter::PdfFormat);
805 printer.setOutputFileName(path);
806 int w = Worksheet::convertFromSceneUnits(sourceRect.width(), Worksheet::Unit::Millimeter);
807 int h = Worksheet::convertFromSceneUnits(sourceRect.height(), Worksheet::Unit::Millimeter);
808 printer.setPageSize(QPageSize(QSizeF(w, h), QPageSize::Millimeter));
809 printer.setPageMargins(QMarginsF(0, 0, 0, 0), QPageLayout::Millimeter);
810 printer.setPrintRange(QPrinter::PageRange);
811 printer.setCreator(QLatin1String("LabPlot ") + QLatin1String(LVERSION));
812
813 QPainter painter(&printer);
814 painter.setRenderHint(QPainter::Antialiasing);
815 QRectF targetRect(0, 0, painter.device()->width(), painter.device()->height());
816 rc = painter.begin(&printer);
817 if (!rc)
818 return false;
819 exportPaint(&painter, targetRect, sourceRect);
820 painter.end();
821 } else if (format == Worksheet::ExportFormat::SVG) {
822#ifdef HAVE_QTSVG
823 QSvgGenerator generator;
824 generator.setFileName(path);
825 int w = Worksheet::convertFromSceneUnits(sourceRect.width(), Worksheet::Unit::Millimeter);
826 int h = Worksheet::convertFromSceneUnits(sourceRect.height(), Worksheet::Unit::Millimeter);
827 w = w * GuiTools::dpi(this).first / (GSL_CONST_CGS_INCH * Worksheet::convertToSceneUnits(1, Worksheet::Unit::Millimeter));
828 h = h * GuiTools::dpi(this).second / (GSL_CONST_CGS_INCH * Worksheet::convertToSceneUnits(1, Worksheet::Unit::Millimeter));
829
830 generator.setSize(QSize(w, h));
831 QRectF targetRect(0, 0, w, h);
832 generator.setViewBox(targetRect);
833
834 QPainter painter;
835 rc = painter.begin(&generator);
836 if (!rc)
837 return false;
838 exportPaint(&painter, targetRect, sourceRect);
839 painter.end();
840#endif
841 } else {
842 // PNG
843 // TODO add all formats supported by Qt in QImage
844 int w = Worksheet::convertFromSceneUnits(sourceRect.width(), Worksheet::Unit::Millimeter);
845 int h = Worksheet::convertFromSceneUnits(sourceRect.height(), Worksheet::Unit::Millimeter);
846 w = w * resolution / (GSL_CONST_CGS_INCH * Worksheet::convertToSceneUnits(1, Worksheet::Unit::Millimeter));
847 h = h * resolution / (GSL_CONST_CGS_INCH * Worksheet::convertToSceneUnits(1, Worksheet::Unit::Millimeter));
848 QImage image(QSize(w, h), QImage::Format_ARGB32_Premultiplied);
849 image.fill(Qt::transparent);
850 QRectF targetRect(0, 0, w, h);
851
852 QPainter painter;
853 painter.begin(&image);
854 painter.setRenderHint(QPainter::Antialiasing);

Callers

nothing calls this directly

Calls 8

heightMethod · 0.80
widthMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
setFileNameMethod · 0.45
setSizeMethod · 0.45
isEmptyMethod · 0.45
saveMethod · 0.45

Tested by

no test coverage detected