1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-27 21:24:47 +01:00

Added hillshading lightening setting

This commit is contained in:
Martin Tůma 2024-06-15 11:24:50 +02:00
parent 8730206939
commit 96fe90cc3f
7 changed files with 16 additions and 1 deletions

View File

@ -2609,6 +2609,7 @@ void GUI::writeSettings()
WRITE(demUsername, _options.demUsername);
WRITE(demPassword, _options.demPassword);
WRITE(hillshadingAlpha, _options.hillshadingAlpha);
WRITE(hillshadingLightening, _options.hillshadingLightening);
WRITE(hillshadingBlur, _options.hillshadingBlur);
WRITE(hillshadingAzimuth, _options.hillshadingAzimuth);
WRITE(hillshadingAltitude, _options.hillshadingAltitude);
@ -2914,6 +2915,7 @@ void GUI::readSettings(QString &activeMap, QStringList &disabledPOIs,
_options.demUsername = READ(demUsername).toString();
_options.demPassword = READ(demPassword).toString();
_options.hillshadingAlpha = READ(hillshadingAlpha).toInt();
_options.hillshadingLightening = READ(hillshadingLightening).toDouble();
_options.hillshadingBlur = READ(hillshadingBlur).toInt();
_options.hillshadingAzimuth = READ(hillshadingAzimuth).toInt();
_options.hillshadingAltitude = READ(hillshadingAltitude).toInt();
@ -3017,6 +3019,7 @@ void GUI::loadOptions()
HillShading::setAzimuth(_options.hillshadingAzimuth);
HillShading::setAltitude(_options.hillshadingAltitude);
HillShading::setZFactor(_options.hillshadingZFactor);
HillShading::setLightening(_options.hillshadingLightening);
_poi->setRadius(_options.poiRadius);
@ -3158,6 +3161,7 @@ void GUI::updateOptions(const Options &options)
SET_HS_OPTION(hillshadingAzimuth, setAzimuth);
SET_HS_OPTION(hillshadingAltitude, setAltitude);
SET_HS_OPTION(hillshadingZFactor, setZFactor);
SET_HS_OPTION(hillshadingLightening, setLightening);
if (options.connectionTimeout != _options.connectionTimeout)
Downloader::setTimeout(options.connectionTimeout);

View File

@ -621,6 +621,8 @@ QWidget *OptionsDialog::createDEMPage()
_hillshadingAlpha = new PercentSlider();
_hillshadingAlpha->setValue(qRound((_options.hillshadingAlpha / 255.0)
* 100));
_hillshadingLightening = new PercentSlider();
_hillshadingLightening->setValue(_options.hillshadingLightening * 100);
_hillshadingBlur = new QSpinBox();
_hillshadingBlur->setMaximum(10);
_hillshadingBlur->setSuffix(UNIT_SPACE + tr("px"));
@ -640,6 +642,7 @@ QWidget *OptionsDialog::createDEMPage()
QFormLayout *hillshadingLayout = new QFormLayout();
hillshadingLayout->addRow(tr("Opacity:"), _hillshadingAlpha);
hillshadingLayout->addRow(tr("Lightening:"), _hillshadingLightening);
hillshadingLayout->addRow(tr("Blur radius:"), _hillshadingBlur);
hillshadingLayout->addItem(new QSpacerItem(10, 10));
hillshadingLayout->addRow(tr("Azimuth:"), _hillshadingAzimuth);
@ -987,6 +990,7 @@ void OptionsDialog::accept()
_options.demPassword = _demAuth->password();
_options.hillshadingAlpha = qRound((_hillshadingAlpha->value() / 100.0)
* 255);
_options.hillshadingLightening = _hillshadingLightening->value() / 100.0;
_options.hillshadingBlur = _hillshadingBlur->value();
_options.hillshadingAzimuth = _hillshadingAzimuth->value();
_options.hillshadingAltitude = _hillshadingAltitude->value();

View File

@ -77,6 +77,7 @@ struct Options {
int hillshadingAzimuth;
int hillshadingAltitude;
double hillshadingZFactor;
double hillshadingLightening;
// Position
QString plugin;
QMap<QString, QVariantMap> pluginParams;
@ -182,6 +183,7 @@ private:
QLineEdit *_demURL;
AuthenticationWidget *_demAuth;
PercentSlider *_hillshadingAlpha;
PercentSlider *_hillshadingLightening;
QSpinBox *_hillshadingBlur;
QSpinBox *_hillshadingAzimuth;
QSpinBox *_hillshadingAltitude;

View File

@ -245,6 +245,7 @@ SETTING(demAuthentication, "demAuthentication", false );
SETTING(demUsername, "demUsername", "" );
SETTING(demPassword, "demPassword", "" );
SETTING(hillshadingAlpha, "hillshadingAlpha", 102 );
SETTING(hillshadingLightening,"hillshadingLightening", 0.2 );
SETTING(hillshadingBlur, "hillshadingBlur", 3 );
SETTING(hillshadingAzimuth, "hillshadingAzimuth", 315 );
SETTING(hillshadingAltitude, "hillshadingAltitude", 45 );

View File

@ -197,6 +197,7 @@ public:
static const Setting demUsername;
static const Setting demPassword;
static const Setting hillshadingAlpha;
static const Setting hillshadingLightening;
static const Setting hillshadingBlur;
static const Setting hillshadingAzimuth;
static const Setting hillshadingAltitude;

View File

@ -31,6 +31,7 @@ int HillShading::_blur = 3;
int HillShading::_azimuth = 315;
int HillShading::_altitude = 45;
double HillShading::_z = 0.6;
double HillShading::_l = 0.2;
static void getConstants(double azimuth, double elevation, Constants &c)
{
@ -92,7 +93,7 @@ QImage HillShading::render(const MatrixD &m, int extend)
if (std::isnan(L))
pixel = 0;
else {
L = sqrt(L * 0.8 + 0.2);
L = sqrt(L * (1.0 - _l) + _l);
quint8 val = (L < 0) ? 0 : L * _alpha;
pixel = (_alpha - val)<<24;
}

View File

@ -16,6 +16,7 @@ public:
static void setAzimuth(int azimuth) {_azimuth = azimuth;}
static void setAltitude(int altitude) {_altitude = altitude;}
static void setZFactor(double z) {_z = z;}
static void setLightening(double b) {_l = b;}
private:
static int _alpha;
@ -23,6 +24,7 @@ private:
static int _azimuth;
static int _altitude;
static double _z;
static double _l;
};
#endif // HILLSHADING_H