QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgsskyboxsettings.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsskyboxsettings.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 "qgsskyboxsettings.h"
17 
18 #include <QDomDocument>
19 
20 #include "qgsreadwritecontext.h"
21 #include "qgssymbollayerutils.h"
22 
24  : mSkyboxType( other.mSkyboxType )
25  , mPanoramicTexturePath( other.mPanoramicTexturePath )
26  , mCubeMapFacesPaths( other.mCubeMapFacesPaths )
27 {
28 
29 }
30 
32 {
33  this->mSkyboxType = rhs.mSkyboxType;
34  this->mPanoramicTexturePath = rhs.mPanoramicTexturePath;
35  this->mCubeMapFacesPaths = rhs.mCubeMapFacesPaths;
36  return *this;
37 }
38 
39 void QgsSkyboxSettings::readXml( const QDomElement &element, const QgsReadWriteContext &context )
40 {
41  const QgsPathResolver &pathResolver = context.pathResolver();
42  const QString skyboxTypeStr = element.attribute( QStringLiteral( "skybox-type" ) );
43  if ( skyboxTypeStr == QLatin1String( "Distinct Faces" ) )
45  else if ( skyboxTypeStr == QLatin1String( "Panoramic Texture" ) )
47  mPanoramicTexturePath = pathResolver.readPath( element.attribute( QStringLiteral( "panoramic-texture-path" ) ) );
48  mCubeMapFacesPaths.clear();
49  mCubeMapFacesPaths[ QStringLiteral( "posX" ) ] = pathResolver.readPath( element.attribute( QStringLiteral( "posX-texture-path" ) ) );
50  mCubeMapFacesPaths[ QStringLiteral( "posY" ) ] = pathResolver.readPath( element.attribute( QStringLiteral( "posY-texture-path" ) ) );
51  mCubeMapFacesPaths[ QStringLiteral( "posZ" ) ] = pathResolver.readPath( element.attribute( QStringLiteral( "posZ-texture-path" ) ) );
52  mCubeMapFacesPaths[ QStringLiteral( "negX" ) ] = pathResolver.readPath( element.attribute( QStringLiteral( "negX-texture-path" ) ) );
53  mCubeMapFacesPaths[ QStringLiteral( "negY" ) ] = pathResolver.readPath( element.attribute( QStringLiteral( "negY-texture-path" ) ) );
54  mCubeMapFacesPaths[ QStringLiteral( "negZ" ) ] = pathResolver.readPath( element.attribute( QStringLiteral( "negZ-texture-path" ) ) );
55 }
56 
57 void QgsSkyboxSettings::writeXml( QDomElement &element, const QgsReadWriteContext &context ) const
58 {
59  switch ( mSkyboxType )
60  {
62  element.setAttribute( QStringLiteral( "skybox-type" ), QStringLiteral( "Distinct Faces" ) );
63  break;
65  element.setAttribute( QStringLiteral( "skybox-type" ), QStringLiteral( "Panoramic Texture" ) );
66  break;
67  }
68 
69  const QgsPathResolver &pathResolver = context.pathResolver();
70  element.setAttribute( QStringLiteral( "panoramic-texture-path" ), pathResolver.writePath( mPanoramicTexturePath ) );
71  element.setAttribute( QStringLiteral( "posX-texture-path" ), pathResolver.writePath( mCubeMapFacesPaths[ QStringLiteral( "posX" ) ] ) );
72  element.setAttribute( QStringLiteral( "posY-texture-path" ), pathResolver.writePath( mCubeMapFacesPaths[ QStringLiteral( "posY" ) ] ) );
73  element.setAttribute( QStringLiteral( "posZ-texture-path" ), pathResolver.writePath( mCubeMapFacesPaths[ QStringLiteral( "posZ" ) ] ) );
74  element.setAttribute( QStringLiteral( "negX-texture-path" ), pathResolver.writePath( mCubeMapFacesPaths[ QStringLiteral( "negX" ) ] ) );
75  element.setAttribute( QStringLiteral( "negY-texture-path" ), pathResolver.writePath( mCubeMapFacesPaths[ QStringLiteral( "negY" ) ] ) );
76  element.setAttribute( QStringLiteral( "negZ-texture-path" ), pathResolver.writePath( mCubeMapFacesPaths[ QStringLiteral( "negZ" ) ] ) );
77 }
QgsReadWriteContext
The class is used as a container of context for various read/write operations on other objects.
Definition: qgsreadwritecontext.h:34
qgsreadwritecontext.h
qgssymbollayerutils.h
QgsSkyboxSettings
Contains the configuration of a skybox entity.
Definition: qgsskyboxsettings.h:36
qgsskyboxsettings.h
QgsSkyboxSettings::writeXml
void writeXml(QDomElement &element, const QgsReadWriteContext &context) const
Writes settings to a DOM element.
Definition: qgsskyboxsettings.cpp:57
QgsSkyboxEntity::DistinctTexturesSkybox
@ DistinctTexturesSkybox
Definition: qgsskyboxentity.h:52
QgsPathResolver::writePath
QString writePath(const QString &filename) const
Prepare a filename to save it to the project file.
Definition: qgspathresolver.cpp:225
QgsSkyboxSettings::readXml
void readXml(const QDomElement &element, const QgsReadWriteContext &context)
Reads settings from a DOM element.
Definition: qgsskyboxsettings.cpp:39
QgsSkyboxEntity::PanoramicSkybox
@ PanoramicSkybox
Definition: qgsskyboxentity.h:51
QgsPathResolver::readPath
QString readPath(const QString &filename) const
Turn filename read from the project file to an absolute path.
Definition: qgspathresolver.cpp:37
QgsPathResolver
Resolves relative paths into absolute paths and vice versa. Used for writing.
Definition: qgspathresolver.h:31
QgsSkyboxSettings::operator=
QgsSkyboxSettings & operator=(QgsSkyboxSettings const &rhs)
delete assignment operator
Definition: qgsskyboxsettings.cpp:31
QgsSkyboxSettings::QgsSkyboxSettings
QgsSkyboxSettings()=default
default constructor
QgsReadWriteContext::pathResolver
const QgsPathResolver & pathResolver() const
Returns path resolver for conversion between relative and absolute paths.
Definition: qgsreadwritecontext.cpp:47