Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,213 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* AbstractGraphicalObject
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Own
|
||||
#include <Map/situation_map_types.h>
|
||||
#include <Map/line_style.h>
|
||||
#include <Map/fill_style.h>
|
||||
#include <Common/simple_value.h>
|
||||
|
||||
#include <Common/situation_map_logging.h>
|
||||
|
||||
// ESRI
|
||||
#include <arcgis/SimpleLineSymbol.h>
|
||||
#include <arcgis/SimpleFillSymbol.h>
|
||||
|
||||
// Qt
|
||||
#include <QPointer>
|
||||
|
||||
|
||||
// forward:
|
||||
namespace Esri
|
||||
{
|
||||
namespace ArcGISRuntime
|
||||
{
|
||||
class GeoView;
|
||||
class Graphic;
|
||||
class GraphicsOverlay;
|
||||
class Geometry;
|
||||
class Multipart;
|
||||
class SpatialReference;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
namespace SituationMap
|
||||
{
|
||||
|
||||
//forward
|
||||
class GraphicalObjectText;
|
||||
|
||||
|
||||
class SITUATIONMAP_EXPORT AbstractGraphicalObject
|
||||
{
|
||||
|
||||
public:
|
||||
AbstractGraphicalObject(const Esri::ArcGISRuntime::GeoView *geoView
|
||||
, Esri::ArcGISRuntime::GraphicsOverlay *graphicsLayer
|
||||
, const QString &debugInfo
|
||||
, const UniqueMapId &uniqueMapId);
|
||||
|
||||
virtual ~AbstractGraphicalObject();
|
||||
|
||||
AbstractGraphicalObject(const AbstractGraphicalObject &other) = delete;
|
||||
AbstractGraphicalObject &operator=(AbstractGraphicalObject &other) = delete;
|
||||
|
||||
virtual Esri::ArcGISRuntime::Graphic *graphic();
|
||||
virtual Esri::ArcGISRuntime::GraphicsOverlay *graphicsLayer();
|
||||
|
||||
virtual QString toString() const;
|
||||
|
||||
virtual UniqueMapId uniqueMapId() const;
|
||||
virtual void setUniqueMapId(UniqueMapId uniqueId);
|
||||
|
||||
virtual QString debugInfo() const;
|
||||
virtual void setDebugInfo(const QString &debugInfo);
|
||||
|
||||
virtual int drawOrder() const;
|
||||
virtual void setDrawOrder(int drawOrder);
|
||||
|
||||
// Data access:
|
||||
|
||||
// for SinglePoint:
|
||||
virtual Point3D origin() const;
|
||||
virtual void setOrigin(const Point3D &origin);
|
||||
virtual void setOrigin(const QPointF &origin); // ToDO accept this??
|
||||
|
||||
// for MultiPoint:
|
||||
virtual PositionCont positions() const;
|
||||
virtual void setPositions(const PositionCont &posCont);
|
||||
|
||||
virtual bool isSinglePoint() const;
|
||||
virtual bool isMultiPoint() const;
|
||||
virtual bool isArea() const;
|
||||
|
||||
virtual LineStyle lineStyle() const;
|
||||
virtual LineStyle &rLineStyle();
|
||||
/**
|
||||
* @brief setLineStyle (Font-)size is limited to 500.
|
||||
* (High values can lead to coredump with 'SymbolDrawHelper::create_line_image FAILED, SkBitmap is NULL or empty')
|
||||
* @param lineStyle to set.
|
||||
*/
|
||||
virtual void setLineStyle(const LineStyle &lineStyle);
|
||||
|
||||
virtual FillStyle fillStyle() const;
|
||||
virtual FillStyle &rFillStyle();
|
||||
virtual void setFillStyle(const FillStyle &fillStyle);
|
||||
|
||||
// Scale :
|
||||
virtual float scale() const;
|
||||
virtual void setScale(float scale);
|
||||
// : Scale
|
||||
|
||||
|
||||
// Visibility :
|
||||
virtual bool visibility() const;
|
||||
virtual void setVisibility(bool visibility);
|
||||
// : Visibility
|
||||
|
||||
// Selection, Picking :
|
||||
bool selected() const;
|
||||
void setSelected(bool selected);
|
||||
|
||||
bool pickable() const;
|
||||
/**
|
||||
* @brief setPickable The method allows pickable=true only if uniqueMapIdis valid.
|
||||
* @param pickable new value.
|
||||
*/
|
||||
void setPickable(bool pickable);
|
||||
// : Selection, Picking
|
||||
|
||||
|
||||
virtual Esri::ArcGISRuntime::Geometry getGraphicGeometry() const;
|
||||
|
||||
bool updateView();
|
||||
|
||||
bool addUpdateGraphic();
|
||||
|
||||
static Esri::ArcGISRuntime::SimpleLineSymbolStyle convert(const LinePattern linePattern);
|
||||
static Esri::ArcGISRuntime::SimpleFillSymbolStyle convert(const FillPattern fillPattern);
|
||||
|
||||
bool assignLineStyleToGraphic();
|
||||
bool assignFillStyleToGraphic();
|
||||
|
||||
|
||||
static int countOfPolygonFirstPart(const Esri::ArcGISRuntime::Multipart &polylinePolygon);
|
||||
|
||||
|
||||
protected:
|
||||
// Internal/Admin
|
||||
const Esri::ArcGISRuntime::SpatialReference spatialReference() const;
|
||||
|
||||
virtual bool changed()
|
||||
{
|
||||
return m_drawOrder.changed()
|
||||
|| m_positions.changed()
|
||||
|| m_visibility.changed()
|
||||
|| m_selected.changed()
|
||||
|| m_pickable.changed()
|
||||
|| m_scale.changed()
|
||||
|| m_lineStyle.changed()
|
||||
|| m_fillStyle.changed();
|
||||
}
|
||||
|
||||
virtual bool updateViewImpl() = 0;
|
||||
|
||||
virtual void resetChanged()
|
||||
{
|
||||
m_drawOrder.reset();
|
||||
m_positions.reset();
|
||||
m_visibility.reset();
|
||||
m_selected.reset();
|
||||
m_pickable.reset();
|
||||
m_scale.reset();
|
||||
m_lineStyle.reset();
|
||||
m_fillStyle.reset();
|
||||
}
|
||||
|
||||
|
||||
virtual bool create() = 0;
|
||||
|
||||
|
||||
const Esri::ArcGISRuntime::GeoView *m_geoView = nullptr;
|
||||
Esri::ArcGISRuntime::GraphicsOverlay *m_graphicsLayer = nullptr;
|
||||
Esri::ArcGISRuntime::Graphic *m_graphic = nullptr;
|
||||
SimpleValue<int> m_drawOrder = 0;
|
||||
|
||||
// Data
|
||||
UniqueMapId m_uniqueMapId;
|
||||
|
||||
|
||||
QString m_debugInfo; ///< for debugging
|
||||
|
||||
SimpleValue<PositionCont> m_positions;
|
||||
|
||||
SimpleValue<bool> m_visibility = true;
|
||||
|
||||
SimpleValue<bool> m_selected = false;
|
||||
SimpleValue<bool> m_pickable = true;
|
||||
|
||||
SimpleValue<float> m_scale = 1.0;
|
||||
|
||||
SimpleValue<LineStyle> m_lineStyle;
|
||||
SimpleValue<FillStyle> m_fillStyle;
|
||||
QPointer<Esri::ArcGISRuntime::SimpleLineSymbol> m_esriSimpleLineSymbol = nullptr;
|
||||
QPointer<Esri::ArcGISRuntime::SimpleFillSymbol> m_esriSimpleFillSymbol = nullptr;
|
||||
|
||||
private:
|
||||
LOGGER_T m_logger; ///< Interface of the Logging-Facility
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // namespace SituationMap
|
||||
|
||||
Reference in new issue
Block a user