Horizon
Loading...
Searching...
No Matches
tool_paste.hpp
1#pragma once
2#include "core/tool.hpp"
3#include "tool_helper_merge.hpp"
4#include "tool_helper_move.hpp"
5#include "nlohmann/json.hpp"
6
7namespace horizon {
8
9class ToolPaste : public ToolHelperMove, public ToolHelperMerge {
10public:
11 ToolPaste(IDocument *c, ToolID tid);
12 ToolResponse begin(const ToolArgs &args) override;
13 ToolResponse update(const ToolArgs &args) override;
14 bool can_begin() override;
15 bool is_specific() override;
16
17 std::set<InToolActionID> get_actions() const override
18 {
19 using I = InToolActionID;
20 return {
21 I::LMB, I::CANCEL, I::RMB, I::ROTATE, I::MIRROR, I::RESTRICT,
22 };
23 }
24
25private:
26 void fix_layer(int &la);
27 Coordi shift;
28 const class BoardPackage *target_pkg = nullptr;
29 const class PastedPackage *ref_pkg = nullptr;
30 json paste_data;
31 class Picture *pic = nullptr;
32 ToolResponse begin_paste(const json &j, const Coordi &cursor_pos);
33 ToolResponse really_begin_paste(const json &j, const Coordi &cursor_pos);
34 bool pool_update_pending = false;
35 void transform(Coordi &c) const;
36 void transform(class Placement &p, ObjectType type) const;
37 void update_tip();
38 std::set<UUID> nets;
39 void update_airwires();
40};
41} // namespace horizon
Definition board_package.hpp:13
Definition idocument.hpp:5
Definition pasted_package.hpp:9
Definition picture.hpp:10
Definition placement.hpp:8
This is what a Tool receives when the user did something.
Definition tool_pub.hpp:23
Definition tool_helper_merge.hpp:5
Definition tool_helper_move.hpp:6
Definition tool_paste.hpp:9
ToolResponse update(const ToolArgs &args) override
Gets called whenever the user generated some sort of input.
Definition tool_paste.cpp:806
bool can_begin() override
Definition tool_paste.cpp:34
bool is_specific() override
Definition tool_paste.cpp:44
ToolResponse begin(const ToolArgs &args) override
Gets called right after the constructor has finished.
Definition tool_paste.cpp:753
To signal back to the core what the Tool did, a Tool returns a ToolResponse.
Definition tool_pub.hpp:40
a class to store JSON values
Definition json.hpp:177