/* QGL GLWidget Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef GLWIDGET_H #define GLWIDGET_H #include class QGLView; class ObjectBase; class Scene; class GLWidget: public QWidget { Q_OBJECT Q_PROPERTY(qreal lineWidth READ lineWidth WRITE setLineWidth) Q_PROPERTY(qreal FOV READ FOV WRITE setFOV) Q_PROPERTY(qreal depthStart READ depthStart WRITE setDepthStart) Q_PROPERTY(bool grabMouse READ isGrabMouseEnabled WRITE setGrabMouseEnabled) Q_PROPERTY(bool mouseRotate READ isMouseRotateEnabled WRITE setMouseRotateEnabled) Q_PROPERTY(bool mouseSelection READ isMouseSelectionEnabled WRITE setMouseSelectionEnabled) Q_PROPERTY(bool cameraOrbit READ isCameraOrbit WRITE setCameraOrbit) Q_PROPERTY(bool hoverHalo READ isHoverHaloEnabled WRITE setHoverHaloEnabled) Q_PROPERTY(QColor hoverHaloColor READ hoverHaloColor WRITE setHoverHaloColor) Q_PROPERTY(qreal hoverHaloFillAlpha READ hoverHaloFillAlpha WRITE setHoverHaloFillAlpha) Q_PROPERTY(bool selectionHalo READ isSelectionHaloEnabled WRITE setSelectionHaloEnabled) Q_PROPERTY(QColor selectionHaloColor READ selectionHaloColor WRITE setSelectionHaloColor) Q_PROPERTY(qreal selectionHaloFillAlpha READ selectionHaloFillAlpha WRITE setSelectionHaloFillAlpha) public: explicit GLWidget(QWidget * parent = nullptr); QGLView * view() { return view_; } QColor backColor() const; qreal lineWidth() const; qreal FOV() const; qreal depthStart() const; QColor ambientColor() const; bool isLightEnabled() const; bool isGrabMouseEnabled() const; bool isMouseRotateEnabled() const; bool isMouseSelectionEnabled() const; bool isCameraOrbit() const; bool isHoverHaloEnabled() const; QColor hoverHaloColor() const; qreal hoverHaloFillAlpha() const; bool isSelectionHaloEnabled() const; QColor selectionHaloColor() const; qreal selectionHaloFillAlpha() const; Scene * scene(); void addObject(ObjectBase * o); QByteArray saveCamera(); void restoreCamera(const QByteArray & ba); public slots: void stop(); void start(float freq = 0.0); void setLineWidth(const qreal & arg); void setFOV(const qreal & arg); void setDepthStart(const qreal & arg); void setLightEnabled(const bool & arg); void setGrabMouseEnabled(const bool & arg); void setMouseRotateEnabled(const bool & arg); void setMouseSelectionEnabled(const bool & arg); void setCameraOrbit(const bool & arg); void setHoverHaloEnabled(const bool & arg); void setHoverHaloColor(const QColor & arg); void setHoverHaloFillAlpha(const qreal & arg); void setSelectionHaloEnabled(const bool & arg); void setSelectionHaloColor(const QColor & arg); void setSelectionHaloFillAlpha(const qreal & arg); private slots: void viewDoubleClicked(); private: QWidget * container; QGLView * view_; QLayout * lay; }; #endif // GLWIDGET_H