From a4df9b35169d337fec4ceb6b0c3d4c3b7aabb553 Mon Sep 17 00:00:00 2001 From: Ivan Mahonin Date: Aug 28 2023 15:47:15 +0000 Subject: #assistants: draw replicators --- diff --git a/toonz/sources/include/tools/tool.h b/toonz/sources/include/tools/tool.h index 2be17c8..b88b32d 100644 --- a/toonz/sources/include/tools/tool.h +++ b/toonz/sources/include/tools/tool.h @@ -301,14 +301,18 @@ public: }; enum ToolHints //! Misc flags related with tool - { HintNone = 0, - HintAssistants = 1 << 0, //!< Draw asistants when tool active - HintGuidelines = 1 << 1, //!< Draw asistant guidelines - HintAssistantsEnabled = 1 << 2, //!< Tool will use assisnats + { HintNone = 0, + HintAssistants = 1 << 0, //!< Draw asistants when tool active + HintAssistantsGuidelines = 1 << 1, //!< Draw asistant guidelines + HintAssistantsEnabled = 1 << 2, //!< Mark active assistants + HintReplicators = 1 << 3, //!< Draw replicators + HintReplicatorsEnabled = 1 << 4, //!< Mark active replicators HintAssistantsAll = HintAssistants - | HintGuidelines + | HintAssistantsGuidelines | HintAssistantsEnabled, + HintReplicatorsAll = HintReplicators + | HintReplicatorsEnabled, }; public: diff --git a/toonz/sources/tnztools/editassistantstool.cpp b/toonz/sources/tnztools/editassistantstool.cpp index ce4bb8d..edacf7a 100644 --- a/toonz/sources/tnztools/editassistantstool.cpp +++ b/toonz/sources/tnztools/editassistantstool.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include // TnzLib includes @@ -201,7 +202,7 @@ public: ToolType getToolType() const override { return TTool::LevelWriteTool; } unsigned int getToolHints() const override - { return TTool::getToolHints() & ~HintAssistantsAll; } + { return TTool::getToolHints() & ~(HintAssistantsAll | HintReplicatorsAll); } int getCursorId() const override { return ToolCursor::StrokeSelectCursor; } void onImageChanged() override { @@ -607,6 +608,8 @@ public: m_currentGuidelines ); } + TImage *img = getImage(false); + // draw assistans and guidelines from other layers TAssistant::scanAssistants( this, // tool @@ -616,7 +619,16 @@ public: false, // enabled only false, // mark enabled true, // draw guidelines - nullptr ); // skip image + img ); // skip image + + // draw replicators from other layers + TReplicator::scanReplicators( + this, // tool + nullptr, // out modifiers + true, // draw + false, // enabled only + false, // mark enabled + img ); // skip image } }; diff --git a/toonz/sources/tnztools/fullcolorbrushtool.h b/toonz/sources/tnztools/fullcolorbrushtool.h index dd9b831..3924388 100644 --- a/toonz/sources/tnztools/fullcolorbrushtool.h +++ b/toonz/sources/tnztools/fullcolorbrushtool.h @@ -62,7 +62,7 @@ public: ToolType getToolType() const override { return TTool::LevelWriteTool; } unsigned int getToolHints() const override - { return TTool::getToolHints() & ~HintAssistantsAll; } + { return (TTool::getToolHints() & ~HintAssistantsAll) | HintReplicatorsEnabled; } ToolOptionsBox *createOptionsBox() override; diff --git a/toonz/sources/tnztools/tool.cpp b/toonz/sources/tnztools/tool.cpp index 0f730fe..f760950 100644 --- a/toonz/sources/tnztools/tool.cpp +++ b/toonz/sources/tnztools/tool.cpp @@ -180,7 +180,7 @@ TTool::TTool(std::string name) //------------------------------------------------------------------- unsigned int TTool::getToolHints() const - { return HintAssistants | HintGuidelines; } + { return HintAssistants | HintAssistantsGuidelines | HintReplicators; } //------------------------------------------------------------------- diff --git a/toonz/sources/tnztools/toonzrasterbrushtool.h b/toonz/sources/tnztools/toonzrasterbrushtool.h index 65bc306..826cb59 100644 --- a/toonz/sources/tnztools/toonzrasterbrushtool.h +++ b/toonz/sources/tnztools/toonzrasterbrushtool.h @@ -109,7 +109,7 @@ public: ToolType getToolType() const override { return TTool::LevelWriteTool; } unsigned int getToolHints() const override - { return TTool::getToolHints() & ~HintAssistantsAll; } + { return (TTool::getToolHints() & ~HintAssistantsAll) | HintReplicatorsEnabled; } ToolOptionsBox *createOptionsBox() override; diff --git a/toonz/sources/tnztools/toonzvectorbrushtool.h b/toonz/sources/tnztools/toonzvectorbrushtool.h index 2aff0b4..ae12706 100644 --- a/toonz/sources/tnztools/toonzvectorbrushtool.h +++ b/toonz/sources/tnztools/toonzvectorbrushtool.h @@ -100,7 +100,7 @@ public: ToolType getToolType() const override { return TTool::LevelWriteTool; } unsigned int getToolHints() const override - { return TTool::getToolHints() & ~HintAssistantsAll; } + { return (TTool::getToolHints() & ~HintAssistantsAll) | HintReplicatorsEnabled; } ToolOptionsBox *createOptionsBox() override; diff --git a/toonz/sources/toonz/sceneviewer.cpp b/toonz/sources/toonz/sceneviewer.cpp index 7b8dab6..bb1b835 100644 --- a/toonz/sources/toonz/sceneviewer.cpp +++ b/toonz/sources/toonz/sceneviewer.cpp @@ -24,6 +24,7 @@ #include "tools/toolcommandids.h" #include "tools/toolutils.h" #include "tools/assistant.h" +#include "tools/replicator.h" // TnzQt includes #include "toonzqt/icongenerator.h" @@ -1833,19 +1834,31 @@ void SceneViewer::drawOverlay() { glScaled(m_dpiScale.x, m_dpiScale.y, 1); m_pixelSize = sqrt(tglGetPixelSize2()) * getDevPixRatio(); + unsigned int hints = tool->getToolHints(); + // draw assistans and guidelines m_toolHasAssistants = false; - unsigned int hints = tool->getToolHints(); if (hints & TTool::HintAssistantsAll) { m_toolHasAssistants = TAssistant::scanAssistants( - tool, // tool - &m_toolPos, 1, // pointer positions - nullptr, // out guidelines - true, // draw - false, // enabled only - hints & TTool::HintAssistantsEnabled, // mark enabled - true, // draw guidelines - nullptr ); // skip image + tool, // tool + &m_toolPos, 1, // pointer positions + nullptr, // out guidelines + true, // draw + false, // enabled only + hints & TTool::HintAssistantsEnabled, // mark enabled + true, // draw guidelines + nullptr ); // skip image + } + + // draw replicators + if (hints & TTool::HintReplicatorsAll) { + TReplicator::scanReplicators( + tool, // tool + nullptr, // out modifiers + true, // draw + false, // enabled only + hints & TTool::HintReplicatorsEnabled, // mark enabled + nullptr ); // skip image } // draw tool diff --git a/toonz/sources/toonz/sceneviewerevents.cpp b/toonz/sources/toonz/sceneviewerevents.cpp index d0a46dd..cc4aa59 100644 --- a/toonz/sources/toonz/sceneviewerevents.cpp +++ b/toonz/sources/toonz/sceneviewerevents.cpp @@ -657,7 +657,7 @@ void SceneViewer::onMove(const TMouseEvent &event) { if (!cursorSet) setToolCursor(this, tool->getCursorId()); if ( m_toolHasAssistants - && (tool->getToolHints() & TTool::HintGuidelines) + && (tool->getToolHints() & TTool::HintAssistantsGuidelines) && !areAlmostEqual(m_toolPos, pos) ) invalidateAll(); m_toolPos = pos;