1 /***************************************************************************
2 qgsskyboxrenderingsettingswidget.cpp
3 --------------------------------------
4 Date : August 2020
5 Copyright : (C) 2020 by Belgacem Nedjima
6 Email : gb uderscore nedjima at esi dot dz
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16 #include "qgsskyboxrenderingsettingswidget.h"
17
18 #include <QCheckBox>
19 #include <QLineEdit>
20 #include "qgs3dmapsettings.h"
21 #include "qgis.h"
22
QgsSkyboxRenderingSettingsWidget(QWidget * parent)23 QgsSkyboxRenderingSettingsWidget::QgsSkyboxRenderingSettingsWidget( QWidget *parent )
24 : QWidget( parent )
25 {
26 setupUi( this );
27
28 // To future maintainers: make sure the order of added items is the same as the order at QgsSkyboxEntity::SkyboxType
29 skyboxTypeComboBox->addItem( tr( "Panoramic Texture" ) );
30 skyboxTypeComboBox->addItem( tr( "Distinct Faces" ) );
31 connect( skyboxTypeComboBox, qgis::overload<int>::of( &QComboBox::currentIndexChanged ), this, &QgsSkyboxRenderingSettingsWidget::showSkyboxSettings );
32
33 showSkyboxSettings( 0 );
34 }
35
setSkyboxSettings(const QgsSkyboxSettings & skyboxSettings)36 void QgsSkyboxRenderingSettingsWidget::setSkyboxSettings( const QgsSkyboxSettings &skyboxSettings )
37 {
38 switch ( skyboxSettings.skyboxType() )
39 {
40 case QgsSkyboxEntity::PanoramicSkybox:
41 skyboxTypeComboBox->setCurrentIndex( 0 ); // "Panoramic Texture"
42 break;
43 case QgsSkyboxEntity::DistinctTexturesSkybox:
44 skyboxTypeComboBox->setCurrentIndex( 1 ); // "Distinct Faces"
45 break;
46 }
47
48 panoramicTextureImageSource->setSource( skyboxSettings.panoramicTexturePath() );
49 QMap<QString, QString> cubeMapFaces = skyboxSettings.cubeMapFacesPaths();
50 posXImageSource->setSource( cubeMapFaces[ QStringLiteral( "posX" ) ] );
51 posYImageSource->setSource( cubeMapFaces[ QStringLiteral( "posY" ) ] );
52 posZImageSource->setSource( cubeMapFaces[ QStringLiteral( "posZ" ) ] );
53 negXImageSource->setSource( cubeMapFaces[ QStringLiteral( "negX" ) ] );
54 negYImageSource->setSource( cubeMapFaces[ QStringLiteral( "negY" ) ] );
55 negZImageSource->setSource( cubeMapFaces[ QStringLiteral( "negZ" ) ] );
56 }
57
toSkyboxSettings()58 QgsSkyboxSettings QgsSkyboxRenderingSettingsWidget::toSkyboxSettings()
59 {
60 QgsSkyboxSettings settings;
61 settings.setSkyboxType( static_cast< QgsSkyboxEntity::SkyboxType >( skyboxTypeComboBox->currentIndex() ) );
62 settings.setPanoramicTexturePath( panoramicTextureImageSource->source() );
63 settings.setCubeMapFace( QStringLiteral( "posX" ), posXImageSource->source() );
64 settings.setCubeMapFace( QStringLiteral( "posY" ), posYImageSource->source() );
65 settings.setCubeMapFace( QStringLiteral( "posZ" ), posZImageSource->source() );
66 settings.setCubeMapFace( QStringLiteral( "negX" ), negXImageSource->source() );
67 settings.setCubeMapFace( QStringLiteral( "negY" ), negYImageSource->source() );
68 settings.setCubeMapFace( QStringLiteral( "negZ" ), negZImageSource->source() );
69 return settings;
70 }
71
showSkyboxSettings(int)72 void QgsSkyboxRenderingSettingsWidget::showSkyboxSettings( int )
73 {
74 QgsSkyboxEntity::SkyboxType type = static_cast< QgsSkyboxEntity::SkyboxType >( skyboxTypeComboBox->currentIndex() );
75 const bool isPanoramic = type == QgsSkyboxEntity::PanoramicSkybox;
76 const bool isDistinctFaces = type == QgsSkyboxEntity::DistinctTexturesSkybox;
77
78 panoramicTextureLabel->setVisible( isPanoramic );
79 panoramicTextureImageSource->setVisible( isPanoramic );
80
81 negXImageSourceLabel->setVisible( isDistinctFaces );
82 negXImageSource->setVisible( isDistinctFaces );
83 negYImageSourceLabel->setVisible( isDistinctFaces );
84 negYImageSource->setVisible( isDistinctFaces );
85 negZImageSourceLabel->setVisible( isDistinctFaces );
86 negZImageSource->setVisible( isDistinctFaces );
87 posXImageSourceLabel->setVisible( isDistinctFaces );
88 posXImageSource->setVisible( isDistinctFaces );
89 posYImageSourceLabel->setVisible( isDistinctFaces );
90 posYImageSource->setVisible( isDistinctFaces );
91 posZImageSourceLabel->setVisible( isDistinctFaces );
92 posZImageSource->setVisible( isDistinctFaces );
93
94 }
95