2#include "core/tool.hpp"
9class PNS_HORIZON_IFACE;
11class MEANDER_PLACER_BASE;
21 using ToolBase::ToolBase;
30 json serialize()
const override;
31 void load_from_json(
const json &j)
override;
33 bool remove_loops =
true;
34 bool fix_all_segments =
false;
35 enum class Mode { WALKAROUND, PUSH, BEND, STRAIGHT };
36 Mode mode = Mode::WALKAROUND;
37 static const std::map<Mode, std::string> mode_names;
39 enum class CornerMode { MITERED_45, ROUNDED_45, MITERED_90, ROUNDED_90 };
40 CornerMode corner_mode = CornerMode::MITERED_45;
41 static const std::map<CornerMode, std::string> corner_mode_names;
51 void apply_settings()
override;
53 std::set<InToolActionID> get_actions()
const override
55 using I = InToolActionID;
61 I::LENGTH_TUNING_LENGTH,
62 I::LENGTH_TUNING_AMPLITUDE_INC,
63 I::LENGTH_TUNING_AMPLITUDE_DEC,
64 I::LENGTH_TUNING_SPACING_INC,
65 I::LENGTH_TUNING_SPACING_DEC,
68 I::SELECT_VIA_DEFINITION,
72 I::TRACK_WIDTH_DEFAULT,
74 I::CLEARANCE_OFFSET_DEFAULT,
75 I::DELETE_LAST_SEGMENT,
76 I::TOGGLE_CORNER_STYLE,
86 class CanvasGL *canvas =
nullptr;
87 ToolWrapper *wrapper =
nullptr;
89 enum class State { START, ROUTING };
90 State state = State::START;
92 Board *board =
nullptr;
93 const class BoardRules *rules =
nullptr;
96 class Track *get_track(
const std::set<SelectableRef> &sel);
97 class Via *get_via(
const std::set<SelectableRef> &sel);
99 bool settings_window_visible =
false;
100 void update_settings_window();
101 void update_via_settings();
103 UUID via_definition_uuid;
Base class for Single trace & Differential pair meandering tools, as both of them share a lot of code...
Definition pns_meander_placer_base.h:47
Definition pns_horizon_iface.hpp:66
Definition pns_router.h:116
a class to store JSON values
Definition json.hpp:177