Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+166
@@ -0,0 +1,166 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Interface-Implementation of DangerArea
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
// Own
|
||||
#include "cube_impl.h"
|
||||
#include <Map/coord_translation_functor.h>
|
||||
#include <Map/party_id_to_color_functor.h>
|
||||
#include <MapImpl/map_impl.h>
|
||||
#include <GraphicalObjects/graphical_object_cube.h>
|
||||
|
||||
|
||||
|
||||
// ESRI
|
||||
#include <arcgis/GraphicsOverlay.h>
|
||||
#include <arcgis/Renderer.h>
|
||||
#include <arcgis/PolygonBuilder.h>
|
||||
|
||||
|
||||
// Qt
|
||||
|
||||
|
||||
|
||||
namespace SituationMap
|
||||
{
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// class CubeImpl
|
||||
//-----------------------------------------------------------------------------
|
||||
CubeImpl::CubeImpl(const QString &debugInfo)
|
||||
: Cube() // Interface
|
||||
, BaseClass(debugInfo) // Implementation
|
||||
, m_logger(getLogger("CubeImpl"))
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
}
|
||||
|
||||
CubeImpl::~CubeImpl()
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
}
|
||||
|
||||
double CubeImpl::height() const
|
||||
{
|
||||
return m_height;
|
||||
}
|
||||
void CubeImpl::setHeight(double height)
|
||||
{
|
||||
m_height = height;
|
||||
}
|
||||
|
||||
|
||||
bool CubeImpl::updateViewImpl()
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START"
|
||||
<< " symbol=" << m_symbol.value().sidc
|
||||
<< " visibility=" << m_visibility
|
||||
<< " visiTechn=" << m_visibilityTechnical
|
||||
<< " visiTact=" << m_visibilityTactical;
|
||||
|
||||
// pre-condition
|
||||
Esri::ArcGISRuntime::Renderer *curRenderer = nullptr;
|
||||
if (m_graphicsLayer)
|
||||
curRenderer = m_graphicsLayer->renderer();
|
||||
if (!curRenderer)
|
||||
{
|
||||
ERROR_LOG(m_logger) << LOGFUNCTION << " no ArcGISRuntime::Renderer, layername='" << m_logicalLayerName << "'";
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// Destroy if invisible :
|
||||
// 13.09.2018, Norbert Thoden
|
||||
// Regarding ESRI Case #02170796 - [BOS] Crash with Destruction of 3D Scene
|
||||
// To reduce likelihood of crash:
|
||||
// Destroy GraphicalObject (GO, m_mainGraphicalObject) if it becomes invisible
|
||||
// With V100.3.0 the behaviour does not change.
|
||||
// (switching cubes for 180 bldgs on and off)
|
||||
//
|
||||
if (m_visibility)
|
||||
{
|
||||
if (!m_mainGraphicalObject)
|
||||
{
|
||||
m_mainGraphicalObject = new GraphicalObjectCube(m_mapImpl->getEsriGeoView(),
|
||||
m_graphicsLayer,
|
||||
m_debugInfo + QStringLiteral("#GOCube"),
|
||||
m_uniqueMapId);
|
||||
}
|
||||
} else {
|
||||
delete m_mainGraphicalObject;
|
||||
m_mainGraphicalObject = nullptr;
|
||||
return true;
|
||||
}
|
||||
// : Destroy if invisible
|
||||
|
||||
|
||||
GraphicalObjectCube *goCube = static_cast<GraphicalObjectCube *>(m_mainGraphicalObject);
|
||||
if (goCube)
|
||||
{
|
||||
// in former times: partyName was used
|
||||
// it´s replaced by more flexible ExtrusionColorName:
|
||||
// const QString &partyName = m_mapImpl->partyIdToColorFunctor().partyIdToName(m_party.partyId.value());
|
||||
// goCube->setPartyName(partyName);
|
||||
|
||||
const QColor &partyColor= m_mapImpl->partyIdToColorFunctor().partyIdToColor(m_party.partyId.value());
|
||||
if (m_party.partyId.value() > -2) //Use Default: White or TeamColor
|
||||
{
|
||||
goCube->setExtrusionColorName( partyColor.name() );
|
||||
}
|
||||
else // Use given Color //need to be prepared in layerfactory!
|
||||
{
|
||||
goCube->setExtrusionColorName( majorColor().name() );
|
||||
}
|
||||
|
||||
goCube->setPositions(m_positions.positionsTranslated());
|
||||
goCube->setHeight(m_height);
|
||||
}
|
||||
else
|
||||
{
|
||||
ERROR_LOG(m_logger) << LOGFUNCTION << " no m_mainGraphicalObject";
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool success = BaseClass::updateViewImpl();
|
||||
if (!success)
|
||||
ERROR_LOG(m_logger) << LOGFUNCTION << " updateViewImpl failed";
|
||||
|
||||
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CubeImpl::init(MapImpl *mapImpl, const QString &logicalLayerName)
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||||
|
||||
bool success = BaseClass::init(mapImpl, logicalLayerName);
|
||||
|
||||
// create underlying object (to save most attributes only there)
|
||||
if (!m_mainGraphicalObject)
|
||||
{
|
||||
m_mainGraphicalObject = new GraphicalObjectCube(m_mapImpl->getEsriGeoView(),
|
||||
m_graphicsLayer,
|
||||
m_debugInfo + QStringLiteral("#GOCube"),
|
||||
m_uniqueMapId);
|
||||
//this MapObject is not very typical, therefore set some attributes:
|
||||
this->setPickable(false);
|
||||
this->setScaleEnable(false);
|
||||
}
|
||||
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} // namespace SituationMap
|
||||
Reference in new issue
Block a user