Horizon
tool_paste.hpp
1 #pragma once
2 #include "core.hpp"
3 #include "tool_helper_merge.hpp"
4 #include "tool_helper_move.hpp"
5 #include "nlohmann/json.hpp"
6 
7 namespace horizon {
8 
9 class ToolPaste : public ToolHelperMove, public ToolHelperMerge {
10 public:
11  ToolPaste(Core *c, ToolID tid);
12  ToolResponse begin(const ToolArgs &args) override;
13  ToolResponse update(const ToolArgs &args) override;
14  bool can_begin() override
15  {
16  if (tool_id == ToolID::PASTE)
17  return true;
18  else
19  return core.r->selection.size();
20  }
21  bool is_specific() override
22  {
23  return tool_id == ToolID::DUPLICATE;
24  }
25 
26 private:
27  void fix_layer(int &la);
28  void apply_shift(Coordi &c, const Coordi &cursor_pos);
29  Coordi shift;
30  json paste_data;
31  ToolResponse begin_paste(const json &j, const Coordi &cursor_pos);
32  void update_tip();
33 };
34 } // namespace horizon
horizon::ToolPaste::update
ToolResponse update(const ToolArgs &args) override
Gets called whenever the user generated some sort of input.
Definition: tool_paste.cpp:401
horizon::ToolPaste::is_specific
bool is_specific() override
Definition: tool_paste.hpp:21
horizon::ToolHelperMove
Definition: tool_helper_move.hpp:6
horizon::ToolPaste::begin
ToolResponse begin(const ToolArgs &args) override
Gets called right after the constructor has finished.
Definition: tool_paste.cpp:359
horizon::ToolPaste::can_begin
bool can_begin() override
Definition: tool_paste.hpp:14
horizon::Coord
Your typical coordinate class.
Definition: common.hpp:72
horizon::Core
Where Tools and and documents meet.
Definition: core.hpp:240
horizon::ToolPaste
Definition: tool_paste.hpp:9
nlohmann::basic_json
a class to store JSON values
Definition: json.hpp:161
horizon::ToolResponse
To signal back to the core what the Tool did, a Tool returns a ToolResponse.
Definition: core.hpp:52
horizon::ToolArgs
This is what a Tool receives when the user did something.
Definition: core.hpp:26
horizon::ToolHelperMerge
Definition: tool_helper_merge.hpp:5