Horizon
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 
7 namespace horizon {
8 
9 class ToolPaste : public ToolHelperMove, public ToolHelperMerge {
10 public:
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 
25 private:
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
_t< detail::transform_< list< Args... > >> transform
Return a new meta::list constructed by transforming all the elements in L with the unary invocable Fn...
Definition: meta.hpp:1855