summaryrefslogtreecommitdiff
path: root/src/location/declarativemaps/qdeclarativepolylinemapitem_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/declarativemaps/qdeclarativepolylinemapitem_p.h')
-rw-r--r--src/location/declarativemaps/qdeclarativepolylinemapitem_p.h120
1 files changed, 30 insertions, 90 deletions
diff --git a/src/location/declarativemaps/qdeclarativepolylinemapitem_p.h b/src/location/declarativemaps/qdeclarativepolylinemapitem_p.h
index 3aa0f96b..9cd20ea5 100644
--- a/src/location/declarativemaps/qdeclarativepolylinemapitem_p.h
+++ b/src/location/declarativemaps/qdeclarativepolylinemapitem_p.h
@@ -59,8 +59,6 @@
QT_BEGIN_NAMESPACE
-class MapPolylineNode;
-
class Q_LOCATION_PRIVATE_EXPORT QDeclarativeMapLineProperties : public QObject
{
Q_OBJECT
@@ -86,53 +84,23 @@ private:
QColor color_;
};
-class Q_LOCATION_PRIVATE_EXPORT QGeoMapPolylineGeometry : public QGeoMapItemGeometry
-{
-public:
- QGeoMapPolylineGeometry();
-
- void updateSourcePoints(const QGeoMap &map,
- const QList<QDoubleVector2D> &path,
- const QGeoCoordinate geoLeftBound);
-
- void updateScreenPoints(const QGeoMap &map,
- qreal strokeWidth,
- bool adjustTranslation = true);
-
- void clearSource();
-
- bool contains(const QPointF &point) const override;
-
- QList<QList<QDoubleVector2D> > clipPath(const QGeoMap &map,
- const QList<QDoubleVector2D> &path,
- QDoubleVector2D &leftBoundWrapped);
-
- void pathToScreen(const QGeoMap &map,
- const QList<QList<QDoubleVector2D> > &clippedPaths,
- const QDoubleVector2D &leftBoundWrapped);
-
-public:
- QVector<qreal> srcPoints_;
- QVector<QPainterPath::ElementType> srcPointTypes_;
-
-#ifdef QT_LOCATION_DEBUG
- QList<QDoubleVector2D> m_wrappedPath;
- QList<QList<QDoubleVector2D>> m_clippedPaths;
-#endif
-
- friend class QDeclarativeCircleMapItem;
- friend class QDeclarativePolygonMapItem;
- friend class QDeclarativeRectangleMapItem;
-};
-
+class QDeclarativePolylineMapItemPrivate;
class Q_LOCATION_PRIVATE_EXPORT QDeclarativePolylineMapItem : public QDeclarativeGeoMapItemBase
{
Q_OBJECT
+ Q_ENUMS(Backend)
Q_PROPERTY(QJSValue path READ path WRITE setPath NOTIFY pathChanged)
Q_PROPERTY(QDeclarativeMapLineProperties *line READ line CONSTANT)
+ Q_PROPERTY(Backend backend READ backend WRITE setBackend NOTIFY backendChanged REVISION 15)
public:
+ enum Backend {
+ Software = 0,
+ OpenGLLineStrip = 1,
+ OpenGLExtruded = 2,
+ };
+
explicit QDeclarativePolylineMapItem(QQuickItem *parent = 0);
~QDeclarativePolylineMapItem();
@@ -159,70 +127,42 @@ public:
QDeclarativeMapLineProperties *line();
+ Backend backend() const;
+ void setBackend(Backend b);
+
Q_SIGNALS:
void pathChanged();
-
-protected:
- void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
- void setPathFromGeoList(const QList<QGeoCoordinate> &path);
- void updatePolish() override;
+ void backendChanged();
protected Q_SLOTS:
void markSourceDirtyAndUpdate();
void updateAfterLinePropertiesChanged();
virtual void afterViewportChanged(const QGeoMapViewportChangeEvent &event) override;
-private:
- void regenerateCache();
- void updateCache();
+protected:
+ void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
+ void setPathFromGeoList(const QList<QGeoCoordinate> &path);
+ void updatePolish() override;
+ void componentComplete() override;
+ void updateLineStyleParameter(QGeoMapParameter *p, const char *propertyName);
+ void updateLineStyleParameter(QGeoMapParameter *p, const char *propertyName, bool update);
#ifdef QT_LOCATION_DEBUG
public:
#endif
- QGeoPath geopath_;
- QList<QDoubleVector2D> geopathProjected_;
- QDeclarativeMapLineProperties line_;
- QColor color_;
- bool dirtyMaterial_;
- QGeoMapPolylineGeometry geometry_;
- bool updatingGeometry_;
-};
+ QGeoPath m_geopath;
+ QDeclarativeMapLineProperties m_line;
-//////////////////////////////////////////////////////////////////////
-
-class Q_LOCATION_PRIVATE_EXPORT VisibleNode
-{
-public:
- VisibleNode();
- virtual ~VisibleNode();
+ Backend m_backend = Software;
+ bool m_dirtyMaterial;
+ bool m_updatingGeometry;
- bool subtreeBlocked() const;
- void setSubtreeBlocked(bool blocked);
- bool visible() const;
- void setVisible(bool visible);
+ QScopedPointer<QDeclarativePolylineMapItemPrivate> m_d;
- bool m_blocked : 1;
- bool m_visible : 1;
-};
-
-class Q_LOCATION_PRIVATE_EXPORT MapItemGeometryNode : public QSGGeometryNode, public VisibleNode
-{
-public:
- ~MapItemGeometryNode() override;
- bool isSubtreeBlocked() const override;
-};
-
-class Q_LOCATION_PRIVATE_EXPORT MapPolylineNode : public MapItemGeometryNode
-{
-public:
- MapPolylineNode();
- ~MapPolylineNode() override;
-
- void update(const QColor &fillColor, const QGeoMapItemGeometry *shape);
-
-private:
- QSGFlatColorMaterial fill_material_;
- QSGGeometry geometry_;
+ friend class QDeclarativePolylineMapItemPrivate;
+ friend class QDeclarativePolylineMapItemPrivateCPU;
+ friend class QDeclarativePolylineMapItemPrivateOpenGLLineStrip;
+ friend class QDeclarativePolylineMapItemPrivateOpenGLExtruded;
};
QT_END_NAMESPACE