summaryrefslogtreecommitdiff
path: root/src/location/declarativemaps/qdeclarativepolygonmapitem_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/declarativemaps/qdeclarativepolygonmapitem_p.h')
-rw-r--r--src/location/declarativemaps/qdeclarativepolygonmapitem_p.h91
1 files changed, 34 insertions, 57 deletions
diff --git a/src/location/declarativemaps/qdeclarativepolygonmapitem_p.h b/src/location/declarativemaps/qdeclarativepolygonmapitem_p.h
index 810a8d35..efc1a137 100644
--- a/src/location/declarativemaps/qdeclarativepolygonmapitem_p.h
+++ b/src/location/declarativemaps/qdeclarativepolygonmapitem_p.h
@@ -51,44 +51,29 @@
#include <QtLocation/private/qlocationglobal_p.h>
#include <QtLocation/private/qdeclarativegeomapitembase_p.h>
#include <QtLocation/private/qdeclarativepolylinemapitem_p.h>
-#include <QtLocation/private/qgeomapitemgeometry_p.h>
#include <QtPositioning/qgeopolygon.h>
-#include <QSGGeometryNode>
-#include <QSGFlatColorMaterial>
-
QT_BEGIN_NAMESPACE
-class MapPolygonNode;
-
-class Q_LOCATION_PRIVATE_EXPORT QGeoMapPolygonGeometry : public QGeoMapItemGeometry
-{
-public:
- QGeoMapPolygonGeometry();
-
- inline void setAssumeSimple(bool value) { assumeSimple_ = value; }
-
- void updateSourcePoints(const QGeoMap &map,
- const QList<QDoubleVector2D> &path);
-
- void updateScreenPoints(const QGeoMap &map, qreal strokeWidth = 0.0);
-
-protected:
- QPainterPath srcPath_;
- bool assumeSimple_;
-};
-
+class QDeclarativePolygonMapItemPrivate;
class Q_LOCATION_PRIVATE_EXPORT QDeclarativePolygonMapItem : public QDeclarativeGeoMapItemBase
{
Q_OBJECT
+ Q_ENUMS(Backend)
Q_PROPERTY(QJSValue path READ path WRITE setPath NOTIFY pathChanged)
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
Q_PROPERTY(QDeclarativeMapLineProperties *border READ border CONSTANT)
+ Q_PROPERTY(Backend backend READ backend WRITE setBackend NOTIFY backendChanged REVISION 15)
public:
- explicit QDeclarativePolygonMapItem(QQuickItem *parent = 0);
- ~QDeclarativePolygonMapItem();
+ enum Backend {
+ Software = 0,
+ OpenGL = 1
+ };
+
+ explicit QDeclarativePolygonMapItem(QQuickItem *parent = nullptr);
+ ~QDeclarativePolygonMapItem() override;
virtual void setMap(QDeclarativeGeoMap *quickMap, QGeoMap *map) override;
//from QuickItem
@@ -105,6 +90,9 @@ public:
QDeclarativeMapLineProperties *border();
+ Backend backend() const;
+ void setBackend(Backend b);
+
bool contains(const QPointF &point) const override;
const QGeoShape &geoShape() const override;
void setGeoShape(const QGeoShape &shape) override;
@@ -112,45 +100,34 @@ public:
Q_SIGNALS:
void pathChanged();
void colorChanged(const QColor &color);
-
-protected:
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
- void updatePolish() override;
+ void backendChanged();
protected Q_SLOTS:
void markSourceDirtyAndUpdate();
+ void onLinePropertiesChanged();
virtual void afterViewportChanged(const QGeoMapViewportChangeEvent &event) override;
-private:
- void regenerateCache();
- void updateCache();
-
- QGeoPolygon geopath_;
- QList<QDoubleVector2D> geopathProjected_;
- QDeclarativeMapLineProperties border_;
- QColor color_;
- bool dirtyMaterial_;
- QGeoMapPolygonGeometry geometry_;
- QGeoMapPolylineGeometry borderGeometry_;
- bool updatingGeometry_;
-};
-
-//////////////////////////////////////////////////////////////////////
-
-class Q_LOCATION_PRIVATE_EXPORT MapPolygonNode : public MapItemGeometryNode
-{
+protected:
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void updatePolish() override;
+ void setMaterialDirty() override;
+#ifdef QT_LOCATION_DEBUG
public:
- MapPolygonNode();
- ~MapPolygonNode() override;
-
- void update(const QColor &fillColor, const QColor &borderColor,
- const QGeoMapItemGeometry *fillShape,
- const QGeoMapItemGeometry *borderShape);
-private:
- QSGFlatColorMaterial fill_material_;
- MapPolylineNode *border_;
- QSGGeometry geometry_;
+#endif
+ QGeoPolygon m_geopoly;
+ QDeclarativeMapLineProperties m_border;
+ QColor m_color;
+ Backend m_backend = Software;
+ bool m_dirtyMaterial;
+// bool m_dirtyGeometry = false;
+ bool m_updatingGeometry;
+
+ QScopedPointer<QDeclarativePolygonMapItemPrivate> m_d;
+
+ friend class QDeclarativePolygonMapItemPrivate;
+ friend class QDeclarativePolygonMapItemPrivateCPU;
+ friend class QDeclarativePolygonMapItemPrivateOpenGL;
};
QT_END_NAMESPACE