10 #include "ImageSaveDialog.hpp"
11 #include "ImageScaler.hpp"
15 ImageSaveDialog::ImageSaveDialog(QGLWidget *newglwidget, QWidget *parent)
18 setWindowTitle(tr("Mussa Save Image"));
21 glwidget = newglwidget;
23 imageScaler = new ImageScaler();
28 tmpSize = glwidget->size();
29 imageScaler->setWidth(tmpSize.width());
30 imageScaler->setHeight(tmpSize.height());
34 saveButton = new QPushButton(tr("Save"));
35 saveButton->setDefault(true);
36 connect(saveButton, SIGNAL(clicked()),
37 this, SLOT(accept()));
40 cancelButton = new QPushButton(tr("Cancel"));
41 connect(cancelButton, SIGNAL(clicked()),
42 this, SLOT(reject()));
45 QHBoxLayout *button_layout = new QHBoxLayout;
46 button_layout->addStretch(1);
47 button_layout->addWidget(saveButton);
48 button_layout->addWidget(cancelButton);
50 QHBoxLayout *image_centerer = new QHBoxLayout;
51 image_centerer->addStretch(1);
52 image_centerer->addWidget(imageScaler);
53 image_centerer->addStretch(1);
54 QVBoxLayout *layout = new QVBoxLayout;
56 layout->addStretch(1);
57 layout->addLayout(image_centerer);
58 layout->addStretch(1);
59 layout->addLayout(button_layout);
63 void ImageSaveDialog::accept()
65 bool endDialog = true;
66 savePixmap(endDialog);
72 void ImageSaveDialog::reject()
77 void ImageSaveDialog::setSize(int width, int height)
79 imageScaler->setWidth(width);
80 imageScaler->setHeight(height);
83 QSize ImageSaveDialog::getOpenGlPixmapSize()
85 int width = imageScaler->getWidth();
86 int height = imageScaler->getHeight();
88 if (height > 0 && width > 0)
90 return QSize(width, height);
96 QPixmap ImageSaveDialog::renderOpenGlPixmap()
102 QSize size = getOpenGlPixmapSize();
105 QPixmap pixmap = glwidget->renderPixmap(size.width(), size.height());
111 void ImageSaveDialog::savePixmap(bool &endDialog)
114 filePath = QFileDialog::getSaveFileName(this,
115 "Choose a filename to save image",
117 "Images (*.png *.jpg)");
119 if (filePath.isNull()) {
122 } else if (filePath.isEmpty()) {
127 pixmap = renderOpenGlPixmap();
130 //Save pixelmap to file!
131 if (filePath.endsWith(".png"))
132 pixmap.save(filePath, "PNG");
133 else if (filePath.endsWith(".jpg"))
134 pixmap.save(filePath, "JPG");
136 filePath.append(".png");
137 pixmap.save(filePath, "PNG");