Horizon
tool_rotate_arbitrary.hpp
1 #pragma once
2 #include "core/tool.hpp"
3 #include "canvas/selectables.hpp"
4 #include "util/placement.hpp"
5 #include "tool_helper_collect_nets.hpp"
6 #include "tool_helper_save_placements.hpp"
7 
8 namespace horizon {
9 
11 public:
12  using ToolBase::ToolBase;
13  ToolResponse begin(const ToolArgs &args) override;
14  ToolResponse update(const ToolArgs &args) override;
15  bool can_begin() override;
16  bool is_specific() override
17  {
18  return true;
19  }
21  std::set<InToolActionID> get_actions() const override
22  {
23  using I = InToolActionID;
24  return {
25  I::LMB, I::CANCEL, I::RMB, I::ENTER_DATUM, I::TOGGLE_ANGLE_SNAP,
26  };
27  }
28 
29 private:
30  Coordi origin;
31  Coordi ref;
32  int iangle = 0;
33  bool snap = true;
34  double scale = 1;
35  void expand_selection();
36  void update_tip();
37  void apply_placements_rotation(int angle);
38  void apply_placements_scale(double sc);
39  enum class State { ORIGIN, ROTATE, REF, SCALE };
40  State state = State::ORIGIN;
41  class CanvasAnnotation *annotation = nullptr;
42  std::set<UUID> nets;
43  void update_airwires(bool fast);
44 };
45 } // namespace horizon
This is what a Tool receives when the user did something.
Definition: tool_pub.hpp:23
Common interface for all Tools.
Definition: tool_pub.hpp:94
Definition: tool_helper_collect_nets.hpp:7
Definition: tool_helper_save_placements.hpp:9
To signal back to the core what the Tool did, a Tool returns a ToolResponse.
Definition: tool_pub.hpp:40
Definition: tool_rotate_arbitrary.hpp:10
bool is_specific() override
Definition: tool_rotate_arbitrary.hpp:16
ToolResponse begin(const ToolArgs &args) override
Gets called right after the constructor has finished.
Definition: tool_rotate_arbitrary.cpp:89
bool can_begin() override
Definition: tool_rotate_arbitrary.cpp:113
ToolResponse update(const ToolArgs &args) override
Gets called whenever the user generated some sort of input.
Definition: tool_rotate_arbitrary.cpp:211