File indexing completed on 2024-04-28 07:27:50
0001 // SPDX-FileCopyrightText: 2015 Aleix Pol <aleixpol@kde.org> 0002 // SPDX-License-Identifier: GPL-2.0-or-later 0003 0004 #ifndef GRAPH3DITEM_H 0005 #define GRAPH3DITEM_H 0006 0007 #include <QQuickFramebufferObject> 0008 #include "plotter3d_es.h" 0009 #include <qqmlregistration.h> 0010 0011 class Graph3DItem; 0012 0013 class Plotter3DRenderer : public QObject, public Analitza::Plotter3DES 0014 { 0015 public: 0016 explicit Plotter3DRenderer(Graph3DItem* item); 0017 0018 int currentPlot() const override { return 0; } 0019 void modelChanged() override {} 0020 void renderGL() override; 0021 0022 QQuickWindow* window() const; 0023 QImage grabImage() override; 0024 0025 private: 0026 Graph3DItem * m_item; 0027 }; 0028 0029 class Graph3DItem : public QQuickFramebufferObject 0030 { 0031 Q_OBJECT 0032 QML_NAMED_ELEMENT(Graph3DView) 0033 Q_PROPERTY(QStringList filters READ filters CONSTANT) 0034 Q_PROPERTY(QAbstractItemModel* model READ model WRITE setModel NOTIFY modelChanged) 0035 public: 0036 explicit Graph3DItem(QQuickItem* parent = Q_NULLPTR); 0037 ~Graph3DItem() override; 0038 0039 QAbstractItemModel* model() const; 0040 void setModel(QAbstractItemModel* model); 0041 0042 QQuickFramebufferObject::Renderer * createRenderer() const override; 0043 0044 Q_SCRIPTABLE QStringList addFunction(const QString& expression, const QSharedPointer<Analitza::Variables>& vars = {}); 0045 Q_SCRIPTABLE void rotate(qreal x, qreal y); 0046 Q_SCRIPTABLE void scale(qreal s); 0047 Q_SCRIPTABLE void resetViewport(); 0048 0049 Q_SCRIPTABLE bool save(const QUrl &url); 0050 0051 QStringList filters() const; 0052 0053 Q_SIGNALS: 0054 void modelChanged(QAbstractItemModel* model); 0055 0056 private: 0057 Plotter3DRenderer *m_plotter; 0058 }; 0059 0060 #endif