Horizon
tool_route_track.hpp
1 #pragma once
2 #include "board/track.hpp"
3 #include "board/via.hpp"
4 #include "canvas/canvas_patch.hpp"
5 #include "clipper/clipper.hpp"
6 #include "common/hole.hpp"
7 #include "core.hpp"
8 #include <deque>
9 
10 namespace horizon {
11 
12 class ToolRouteTrack : public ToolBase {
13 public:
14  ToolRouteTrack(Core *c, ToolID tid);
15  ToolResponse begin(const ToolArgs &args) override;
16  ToolResponse update(const ToolArgs &args) override;
17  bool can_begin() override;
18 
19 private:
20  Net *net = nullptr;
21  UUID net_segment;
22  int routing_layer;
23  uint64_t routing_width = 0;
24  bool routing_width_use_default = true;
25  void begin_track(const ToolArgs &args);
26  bool try_move_track(const ToolArgs &args);
27  void update_track(const Coordi &c);
28  bool check_track_path(const ClipperLib::Path &p);
29  void update_temp_track();
30  void update_tip();
31  void update_obstacles();
32  bool bend_mode = false;
33  ClipperLib::Paths obstacles;
34  ClipperLib::Path track_path;
35  ClipperLib::Path track_path_known_good;
36  Track::Connection conn_start;
37  Track::Connection conn_end;
38  std::deque<Junction *> temp_junctions;
39  std::deque<Track *> temp_tracks;
40  class BoardRules *rules;
41  CanvasPatch canvas_patch;
42 
43  Via *via = nullptr;
44 };
45 } // namespace horizon
Definition: via.hpp:16
Definition: canvas_patch.hpp:6
This is what a Tool receives when the user did something.
Definition: core.hpp:108
bool can_begin() override
Definition: tool_route_track.cpp:14
ToolResponse begin(const ToolArgs &args) override
Gets called right after the constructor has finished.
Definition: tool_route_track.cpp:19
Definition: board_rules.hpp:18
ToolResponse update(const ToolArgs &args) override
Gets called whenever the user generated some sort of input.
Definition: tool_route_track.cpp:278
Definition: tool_route_track.hpp:12
Where Tools and and documents meet.
Definition: core.hpp:249
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
To signal back to the core what the Tool did, a Tool returns a ToolResponse.
Definition: core.hpp:126
Definition: block.cpp:7
Common interface for all Tools.
Definition: core.hpp:170
Definition: net.hpp:16
Definition: track.hpp:38