add support for Image rendering with up to 4x4 antialiasing and SSAO mode
This commit is contained in:
@ -30,6 +30,7 @@
|
||||
#include <QScreen>
|
||||
#include <QScrollArea>
|
||||
#include <QScrollBar>
|
||||
#include <QSettings>
|
||||
#include <QStatusBar>
|
||||
#include <QVBoxLayout>
|
||||
#include <QWheelEvent>
|
||||
@ -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);
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCheckBox>
|
||||
#include <QComboBox>
|
||||
#include <QCoreApplication>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QDir>
|
||||
@ -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<QLineEdit *>("xsize");
|
||||
@ -115,10 +116,14 @@ void Preferences::accept()
|
||||
field = tabWidget->findChild<QLineEdit *>("zoom");
|
||||
if (field)
|
||||
if (field->hasAcceptableInput()) settings->setValue("zoom", field->text());
|
||||
QComboBox *combo = tabWidget->findChild<QComboBox *>("anti");
|
||||
if (combo) settings->setValue("antialias", combo->currentIndex());
|
||||
QCheckBox *box = tabWidget->findChild<QCheckBox *>("ssao");
|
||||
if (box) settings->setValue("ssao", box->isChecked());
|
||||
settings->endGroup();
|
||||
|
||||
// general settings
|
||||
QCheckBox *box = tabWidget->findChild<QCheckBox *>("echo");
|
||||
box = tabWidget->findChild<QCheckBox *>("echo");
|
||||
if (box) settings->setValue("echo", box->isChecked());
|
||||
box = tabWidget->findChild<QCheckBox *>("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<QCheckBox *>("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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user