| 192 | } |
| 193 | |
| 194 | void Plot1DWidget::saveAsImage() |
| 195 | { |
| 196 | QString filter = "Raster images *.bmp *.png *.jpg *.gif (*.bmp *.png *.jpg *.gif);;Vector images *.svg (*.svg)"; |
| 197 | QString sel_filter; |
| 198 | QString file_name = QFileDialog::getSaveFileName(this, "Save File", "", filter, &sel_filter); |
| 199 | |
| 200 | bool x_visible = x_scrollbar_->isVisible(); |
| 201 | bool y_visible = y_scrollbar_->isVisible(); |
| 202 | x_scrollbar_->hide(); |
| 203 | y_scrollbar_->hide(); |
| 204 | |
| 205 | if (sel_filter.contains(".svg", Qt::CaseInsensitive)) // svg vector format |
| 206 | { |
| 207 | QSvgGenerator generator; |
| 208 | generator.setFileName(file_name); |
| 209 | generator.setSize(QSize(this->width(), this->height())); |
| 210 | generator.setViewBox(QRect(0, 0, this->width() - 1, this->height() - 1)); |
| 211 | generator.setTitle(file_name); |
| 212 | generator.setDescription("TOPPView generated SVG"); |
| 213 | QPainter painter; |
| 214 | painter.begin(&generator); |
| 215 | |
| 216 | painter.save(); |
| 217 | painter.translate(QPoint(y_axis_->pos())); |
| 218 | y_axis_->paint(&painter, new QPaintEvent(y_axis_->contentsRect())); |
| 219 | painter.restore(); |
| 220 | |
| 221 | painter.save(); |
| 222 | painter.translate(QPoint(canvas_->pos())); |
| 223 | dynamic_cast<Plot1DCanvas*>(canvas_)->paint(&painter, new QPaintEvent(canvas_->contentsRect())); |
| 224 | painter.restore(); |
| 225 | |
| 226 | painter.save(); |
| 227 | painter.translate(QPoint(x_axis_->pos())); |
| 228 | x_axis_->paint(&painter, new QPaintEvent(x_axis_->contentsRect())); |
| 229 | painter.restore(); |
| 230 | |
| 231 | painter.end(); |
| 232 | x_scrollbar_->setVisible(x_visible); |
| 233 | y_scrollbar_->setVisible(y_visible); |
| 234 | } |
| 235 | else // raster graphics formats |
| 236 | { |
| 237 | QPixmap pixmap = this->grab(); |
| 238 | x_scrollbar_->setVisible(x_visible); |
| 239 | y_scrollbar_->setVisible(y_visible); |
| 240 | pixmap.save(file_name); |
| 241 | } |
| 242 | } |
| 243 | |
| 244 | } //namespace |
nothing calls this directly
no test coverage detected