| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| #ifndef GUI_GRAPHICSVIEW_H |
| #define GUI_GRAPHICSVIEW_H |
|
|
| #include <QGraphicsScene> |
| #include <QTime> |
| #include <Gui/MDIView.h> |
| #include <Base/Parameter.h> |
|
|
| class QUrl; |
| class QGraphicsView; |
| class QDialog; |
| class QLabel; |
| class SoCamera; |
| class SoSeparator; |
| class SoRenderManager; |
|
|
| namespace SIM { namespace Coin3D { namespace Quarter { |
| class InputDevice; |
| }}} |
|
|
| namespace Gui { |
|
|
| class SceneEventFilter : public QObject |
| { |
| Q_OBJECT |
|
|
| public: |
| SceneEventFilter(QObject * parent); |
| ~SceneEventFilter(); |
|
|
| void registerInputDevice(SIM::Coin3D::Quarter::InputDevice * device); |
| void unregisterInputDevice(SIM::Coin3D::Quarter::InputDevice * device); |
|
|
| const QPoint & globalMousePosition(void) const; |
|
|
| protected: |
| bool eventFilter(QObject * obj, QEvent * event); |
|
|
| private: |
| class Private; |
| Private* pimpl; |
| }; |
|
|
| class /*GuiExport*/ GraphicsScene : public QGraphicsScene |
| { |
| Q_OBJECT |
|
|
| public: |
| GraphicsScene(); |
| virtual ~GraphicsScene(); |
|
|
| void drawBackground(QPainter *painter, const QRectF &rect); |
|
|
| void setBackgroundColor(const QColor&); |
| void viewAll(); |
|
|
| void setSceneGraph(SoNode * node); |
| SoNode* getSceneGraph() const; |
|
|
| SceneEventFilter * |
| getEventFilter(void) const; |
|
|
| void addStateMachine(SoScXMLStateMachine * statemachine); |
| void removeStateMachine(SoScXMLStateMachine * statemachine); |
| void setNavigationModeFile(const QUrl&); |
|
|
| bool processSoEvent(const SoEvent * event); |
|
|
| SoRenderManager * |
| getSoRenderManager(void) const; |
|
|
| SoEventManager * |
| getSoEventManager(void) const; |
|
|
| protected: |
| void mousePressEvent(QGraphicsSceneMouseEvent *event); |
| void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); |
| void mouseMoveEvent(QGraphicsSceneMouseEvent *event); |
| void wheelEvent(QGraphicsSceneWheelEvent * wheelEvent); |
|
|
| private Q_SLOTS: |
| void onSceneRectChanged(const QRectF & rect); |
|
|
| private: |
| QDialog *createDialog(const QString &windowTitle) const; |
| SoCamera* searchForCamera(SoNode * root); |
|
|
| private: |
| QColor m_backgroundColor; |
|
|
| QTime m_time; |
| int m_lastTime; |
| int m_mouseEventTime; |
|
|
| float m_distance; |
|
|
| QLabel *m_labels[4]; |
| QWidget *m_modelButton; |
|
|
| mutable SoNode* sceneNode; |
| SoNode* headlight; |
|
|
| QGraphicsRectItem *m_lightItem; |
| SoRenderManager* sorendermanager; |
| SoEventManager* soeventmanager; |
| SceneEventFilter* eventfilter; |
| }; |
|
|
| class GraphicsView : public QGraphicsView |
| { |
| public: |
| GraphicsView(); |
| ~GraphicsView(); |
|
|
| protected: |
| void resizeEvent(QResizeEvent *event); |
| bool viewportEvent(QEvent* event); |
| }; |
|
|
| class /*GuiExport*/ GraphicsView3D : public Gui::MDIView |
| , public ParameterGrp::ObserverType |
| { |
| Q_OBJECT |
|
|
| public: |
| GraphicsView3D(Gui::Document* doc, QWidget* parent = 0); |
| virtual ~GraphicsView3D(); |
| GraphicsScene* getScene() |
| { return m_scene; } |
|
|
| virtual void OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::MessageType Reason); |
|
|
| private: |
| GraphicsScene *m_scene; |
| QGraphicsView *m_view; |
| ParameterGrp::handle hGrp; |
| }; |
|
|
| } |
|
|
| #endif |
|
|
|
|