diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index a8879095ee..6551d3e1d7 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -63,7 +64,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge menuLayout->addWidget(new QPushButton("Rotate Up")); menuLayout->addWidget(new QPushButton("Rotate Down")); menuLayout->addWidget(new QComboBox); - + mainLayout->addLayout(menuLayout); mainLayout->addWidget(scrollArea); mainLayout->addWidget(buttonBox); @@ -74,12 +75,19 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QImageReader reader(fileName); reader.setAutoTransform(true); const QImage newImage = reader.read(); + if (newImage.isNull()) { QMessageBox::warning(this, QGuiApplication::applicationDisplayName(), tr("Cannot load %1: %2").arg(fileName, reader.errorString())); return; } - image = newImage; + QSettings settings; + settings.beginGroup("snapshot"); + int xsize = settings.value("xsize", 800).toInt(); + int ysize = settings.value("ysize", 600).toInt(); + settings.endGroup(); + // scale back to achieve antialiasing + image = newImage.scaled(xsize, ysize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); imageLabel->setPixmap(QPixmap::fromImage(image)); scaleFactor = 1.0; resize(image.width() + 20, image.height() + 50); diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index e62438e665..1fe7f7c3e1 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -728,11 +728,15 @@ void LammpsGui::view_image() dumpcmd += dumpfile; settings.beginGroup("snapshot"); + int aa = settings.value("antialias", 0).toInt() + 1; + int xsize = settings.value("xsize", 800).toInt() * aa; + int ysize = settings.value("ysize", 800).toInt() * aa; + dumpcmd += blank + settings.value("color", "type").toString(); dumpcmd += blank + settings.value("diameter", "type").toString(); - dumpcmd += QString(" size ") + settings.value("xsize", "800").toString(); - dumpcmd += blank + settings.value("ysize", "600").toString(); + dumpcmd += QString(" size ") + QString::number(xsize) + blank + QString::number(ysize); dumpcmd += QString(" zoom ") + settings.value("zoom", "1.0").toString(); + if (settings.value("ssao",false).toBool()) dumpcmd += QString(" ssao yes 453983 0.6"); settings.endGroup(); lammps.command(dumpcmd.toLocal8Bit()); diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index a7ee670694..423328a837 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -103,7 +104,7 @@ void Preferences::accept() if (field) if (field->hasAcceptableInput()) settings->setValue("tempdir", field->text()); - // store image width, height, and zoom + // store image width, height, zoom, and rendering settings settings->beginGroup("snapshot"); field = tabWidget->findChild("xsize"); @@ -115,10 +116,14 @@ void Preferences::accept() field = tabWidget->findChild("zoom"); if (field) if (field->hasAcceptableInput()) settings->setValue("zoom", field->text()); + QComboBox *combo = tabWidget->findChild("anti"); + if (combo) settings->setValue("antialias", combo->currentIndex()); + QCheckBox *box = tabWidget->findChild("ssao"); + if (box) settings->setValue("ssao", box->isChecked()); settings->endGroup(); // general settings - QCheckBox *box = tabWidget->findChild("echo"); + box = tabWidget->findChild("echo"); if (box) settings->setValue("echo", box->isChecked()); box = tabWidget->findChild("cite"); if (box) settings->setValue("cite", box->isChecked()); @@ -130,7 +135,6 @@ void Preferences::accept() if (box) settings->setValue("viewlog", box->isChecked()); box = tabWidget->findChild("viewchart"); if (box) settings->setValue("viewchart", box->isChecked()); - QDialog::accept(); } @@ -376,10 +380,22 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *xsize = new QLabel("Image width:"); auto *ysize = new QLabel("Image height:"); auto *zoom = new QLabel("Zoom factor:"); + auto *anti = new QLabel("Antialias:"); + auto *ssao = new QLabel("HQ Image mode:"); settings->beginGroup("snapshot"); auto *xval = new QLineEdit(settings->value("xsize", "800").toString()); auto *yval = new QLineEdit(settings->value("ysize", "600").toString()); auto *zval = new QLineEdit(settings->value("zoom", "1.0").toString()); + auto *aval = new QComboBox; + auto *sval = new QCheckBox; + sval->setCheckState(settings->value("ssao", false).toBool() ? Qt::Checked : Qt::Unchecked); + sval->setObjectName("ssao"); + aval->addItem("1x", 1); + aval->addItem("2x", 2); + aval->addItem("3x", 3); + aval->addItem("4x", 4); + aval->setCurrentIndex(settings->value("antialias", "0").toInt()); + aval->setObjectName("anti"); settings->endGroup(); auto *intval = new QIntValidator(100, 100000, this); @@ -393,12 +409,16 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : grid->addWidget(xsize, 0, 0, Qt::AlignTop); grid->addWidget(ysize, 1, 0, Qt::AlignTop); grid->addWidget(zoom, 2, 0, Qt::AlignTop); + grid->addWidget(anti, 3, 0, Qt::AlignTop); + grid->addWidget(ssao, 4, 0, Qt::AlignTop); grid->addWidget(xval, 0, 1, Qt::AlignTop); grid->addWidget(yval, 1, 1, Qt::AlignTop); grid->addWidget(zval, 2, 1, Qt::AlignTop); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 3, 0); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 3, 1); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 3, 2); + grid->addWidget(aval, 3, 1, Qt::AlignTop); + grid->addWidget(sval, 4, 1, Qt::AlignVCenter); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 5, 0); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 5, 1); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 5, 2); setLayout(grid); }