Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+146
@@ -0,0 +1,146 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Interface of GeoImage
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "abstract_single_point_map_object.h"
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
namespace SituationMap
|
||||
{
|
||||
|
||||
/**
|
||||
* @brief The GeoImage class supports displaying image proxies like a small dot.
|
||||
* By clicking of the proxy the image and an optional description will be displayed.
|
||||
*/
|
||||
class GeoImage : public virtual AbstractSinglePointMapObject
|
||||
{
|
||||
public:
|
||||
|
||||
struct GeoImageData
|
||||
{
|
||||
MarkerSymbolType proxyMarker = MarkerSymbolType::Undefined; ///< if not set, a Diamond will be used
|
||||
int proxyMarkerSize = 20;
|
||||
QColor proxyMarkerColor = Qt::red;
|
||||
QImage proxyImage; ///< if not set, marker will be used
|
||||
QSize proxyImageDefaultSize;
|
||||
|
||||
QImage mainImage;
|
||||
QString description;
|
||||
bool pinEnabled = false;
|
||||
|
||||
/**
|
||||
* @brief operator== Compare two objects
|
||||
* @param other to be compared with
|
||||
* @return true if identical, otherwise false.
|
||||
*/
|
||||
bool operator==(const GeoImageData &other) const
|
||||
{
|
||||
return ((this->description == other.description) &&
|
||||
(this->mainImage == other.mainImage) &&
|
||||
(this->proxyImage == other.proxyImage) &&
|
||||
(this->proxyMarkerSize == other.proxyMarkerSize) &&
|
||||
(this->proxyMarkerColor== other.proxyMarkerColor) &&
|
||||
(this->proxyMarker == other.proxyMarker)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief operator!= Compare two objects
|
||||
* @param other to be compared with
|
||||
* @return true if NOT identical, otherwise false.
|
||||
*/
|
||||
bool operator!=(const GeoImageData &other) const
|
||||
{
|
||||
return !(*this == other);
|
||||
}
|
||||
|
||||
QString toString() const
|
||||
{
|
||||
QString str = QLatin1String("GeoImage(");
|
||||
if (proxyImage.isNull())
|
||||
str.append(QLatin1String("noProxyImage, "));
|
||||
else
|
||||
str.append(QLatin1String("withProxyImage, "));
|
||||
|
||||
if (mainImage.isNull())
|
||||
str.append(QLatin1String("noMainImage, "));
|
||||
else
|
||||
str.append(QLatin1String("withMainImage, "));
|
||||
|
||||
str.append(QStringLiteral("desc='%1')").arg(description));
|
||||
|
||||
return str;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
* Don't use "= default" because of bug in VS2015 JT 2016/11/7
|
||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
|
||||
GeoImage() : AbstractSinglePointMapObject() {;} ///< Contructor
|
||||
|
||||
virtual ~GeoImage() = default; ///< Destructor
|
||||
|
||||
/*! \name Set data in one call */
|
||||
//@{
|
||||
virtual GeoImageData geoImageData() const = 0;
|
||||
virtual void setGeoImageData(const GeoImageData &geoImageData) = 0;
|
||||
//@}
|
||||
|
||||
/*! \name Set data separately */
|
||||
//@{
|
||||
virtual MarkerSymbolType proxyMarker() const = 0;
|
||||
virtual void setProxyMarker(const MarkerSymbolType &proxyMarker) = 0;
|
||||
virtual int proxyMarkerSize() const = 0;
|
||||
virtual void setProxyMarkerSize(int proxyMarkerSize) = 0;
|
||||
virtual QColor proxyMarkerColor() const = 0;
|
||||
virtual void setProxyMarkerColor(const QColor &proxyMarkerColor) = 0;
|
||||
|
||||
virtual QImage proxyImage() const = 0;
|
||||
virtual QSize proxyImageDefaultSize() const = 0;
|
||||
|
||||
/**
|
||||
* @brief setProxyImage to set a proxy image be displayed on the map (instead of marker)
|
||||
* @param proxyImage proxy image be displayed on the map
|
||||
* @param proxyImageDefaultSize default size image if (user) scale is 1.0.
|
||||
* The image will be scaled to the proxyImageDefaultSize * scale.
|
||||
* To ensure that the image will be displayed with high resolution, the proxyImage must have this resolution.
|
||||
* Example:
|
||||
* Set an image of QSize(100,100), and set a proxyImageDefaultSize of QSize(20,20).
|
||||
* Initially (scale = 1.0) the image will be downscaled to QSize(20,20).
|
||||
* If the uses increases the scale to 4.0, the image will be scaled to QSize(80,80)
|
||||
* This should ensure a good image quality.
|
||||
*/
|
||||
virtual void setProxyImage(const QImage &proxyImage, const QSize &proxyImageDefaultSize) = 0;
|
||||
|
||||
|
||||
virtual QImage mainImage() const = 0;
|
||||
virtual void setMainImage(const QImage &mainImage) = 0;
|
||||
|
||||
virtual QString description() const = 0;
|
||||
virtual void setDescription(const QString &description) = 0;
|
||||
|
||||
// for better visibility at 3D
|
||||
virtual void setPinEnabled(bool enablePin) = 0;
|
||||
virtual bool isPinEnabled() const = 0;
|
||||
//@}
|
||||
|
||||
|
||||
/*! \name Create default widget */
|
||||
//@{
|
||||
virtual QWidget *createWidget(QWidget *parent = nullptr) const = 0;
|
||||
//@}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
} // namespace SituationMap
|
||||
Reference in new issue
Block a user