| #pragma once |
| |
| #ifndef SCHEMATICVIEWER_H |
| #define SCHEMATICVIEWER_H |
| |
| |
| #include "toonz/tstageobjectid.h" |
| |
| |
| #include "tfx.h" |
| |
| |
| #include <QGraphicsScene> |
| #include <QGraphicsView> |
| |
| |
| #include <set> |
| |
| #undef DVAPI |
| #undef DVVAR |
| #ifdef TOONZQT_EXPORTS |
| #define DVAPI DV_EXPORT_API |
| #define DVVAR DV_EXPORT_VAR |
| #else |
| #define DVAPI DV_IMPORT_API |
| #define DVVAR DV_IMPORT_VAR |
| #endif |
| |
| |
| |
| |
| |
| class SchematicNode; |
| class SchematicPort; |
| class SchematicLink; |
| class ToonzScene; |
| class StageSchematicScene; |
| class FxSchematicScene; |
| class TXsheetHandle; |
| class TObjectHandle; |
| class TColumnHandle; |
| class TFxHandle; |
| class TSceneHandle; |
| class TFrameHandle; |
| class TFx; |
| class TLevel; |
| class TSelection; |
| class TApplication; |
| class QToolBar; |
| class QToolButton; |
| class QAction; |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| class DVAPI SchematicScene : public QGraphicsScene { |
| Q_OBJECT |
| |
| public: |
| SchematicScene(QWidget *parent); |
| ~SchematicScene(); |
| |
| void clearAllItems(); |
| |
| virtual QGraphicsItem *getCurrentNode() { return 0; } |
| virtual void reorderScene() = 0; |
| virtual void updateScene() = 0; |
| |
| protected: |
| QList<SchematicLink *> m_highlightedLinks; |
| enum GridDimension { eLarge, eSmall }; |
| |
| protected: |
| |
| bool isAnEmptyZone(const QRectF &rect); |
| |
| |
| |
| QVector<SchematicNode *> getPlacedNode(SchematicNode *node); |
| |
| void showEvent(QShowEvent *se); |
| void hideEvent(QHideEvent *se); |
| |
| protected slots: |
| |
| virtual void onSelectionSwitched(TSelection *, TSelection *) {} |
| }; |
| |
| |
| |
| |
| |
| |
| |
| class DVAPI SchematicSceneViewer final : public QGraphicsView { |
| Q_OBJECT |
| |
| public: |
| SchematicSceneViewer(QWidget *parent); |
| ~SchematicSceneViewer(); |
| |
| void zoomQt(bool zoomin, bool resetZoom); |
| |
| QPointF getOldScenePos() { return m_oldScenePos; } |
| |
| protected: |
| void mousePressEvent(QMouseEvent *me) override; |
| void mouseMoveEvent(QMouseEvent *me) override; |
| void mouseReleaseEvent(QMouseEvent *me) override; |
| void keyPressEvent(QKeyEvent *ke) override; |
| void wheelEvent(QWheelEvent *me) override; |
| void showEvent(QShowEvent *se) override; |
| |
| protected slots: |
| |
| void fitScene(); |
| void centerOnCurrent(); |
| void reorderScene(); |
| void normalizeScene(); |
| |
| private: |
| Qt::MouseButton m_buttonState; |
| QPoint m_oldWinPos; |
| QPointF m_oldScenePos; |
| bool m_firstShowing; |
| |
| private: |
| void changeScale(const QPoint &winPos, qreal scaleFactor); |
| }; |
| |
| |
| |
| |
| |
| |
| |
| class DVAPI SchematicViewer final : public QWidget { |
| Q_OBJECT |
| |
| public: |
| SchematicViewer(QWidget *parent); |
| ~SchematicViewer(); |
| |
| void setSchematicScene(SchematicScene *scene); |
| void setApplication(TApplication *app); |
| bool isStageSchematicViewed(); |
| void setStageSchematicViewed(bool isStageSchematic); |
| |
| public slots: |
| |
| void updateSchematic(); |
| |
| signals: |
| |
| void showPreview(TFxP); |
| void doCollapse(const QList<TFxP> &); |
| void doCollapse(QList<TStageObjectId>); |
| void doExplodeChild(const QList<TFxP> &); |
| void doExplodeChild(QList<TStageObjectId>); |
| void editObject(); |
| |
| protected slots: |
| |
| void onSceneChanged(); |
| void onSceneSwitched(); |
| void updateScenes(); |
| void changeNodeSize(); |
| |
| private: |
| SchematicSceneViewer *m_viewer; |
| StageSchematicScene *m_stageScene; |
| FxSchematicScene *m_fxScene; |
| |
| TSceneHandle *m_sceneHandle; |
| |
| QToolBar *m_stageToolbar, *m_commonToolbar, *m_fxToolbar, *m_swapToolbar; |
| |
| QAction *m_fitSchematic, *m_centerOn, *m_reorder, *m_normalize, *m_nodeSize, |
| *m_changeScene; |
| |
| bool m_fullSchematic, m_maximizedNode; |
| |
| private: |
| void createToolbars(); |
| void createActions(); |
| |
| void setStageSchematic(); |
| void setFxSchematic(); |
| }; |
| |
| #endif |