2 #include "common/common.hpp"
3 #include "canvas/selectables.hpp"
4 #include "canvas/target.hpp"
5 #include "tool_data.hpp"
6 #include "nlohmann/json_fwd.hpp"
7 #include "document/documents.hpp"
8 #include "imp/in_tool_action.hpp"
15 enum class ToolEventType { NONE, MOVE, ACTION, LAYER_CHANGE, DATA };
25 ToolEventType type = ToolEventType::NONE;
27 std::set<SelectableRef> selection;
28 bool keep_selection =
false;
29 InToolActionID action = InToolActionID::NONE;
33 std::unique_ptr<ToolData> data =
nullptr;
45 std::unique_ptr<ToolData> data =
nullptr;
46 enum class Result { NOP, END, COMMIT, REVERT };
47 Result result = Result::NOP;
62 static ToolResponse revert()
64 return ToolResponse(Result::REVERT);
70 static ToolResponse next(Result res, ToolID t, std::unique_ptr<ToolData> data =
nullptr)
74 r.data = std::move(data);
86 virtual void load_from_json(
const json &j) = 0;
87 virtual json serialize()
const = 0;
125 void set_transient();
126 virtual ToolID get_tool_id_for_settings()
const
138 virtual void apply_settings()
142 virtual std::set<InToolActionID> get_actions()
const
176 std::set<SelectableRef> selection;
184 class ImpInterface *imp =
nullptr;
186 bool is_transient =
false;
187 virtual ToolSettings *get_settings()