Horizon
tool_generate_silkscreen.hpp
1 #pragma once
2 #include "core/tool.hpp"
3 #include "clipper/clipper.hpp"
4 
5 namespace horizon {
6 
8 public:
9  using ToolBase::ToolBase;
10  ToolResponse begin(const ToolArgs &args) override;
11  ToolResponse update(const ToolArgs &args) override;
12  bool can_begin() override;
13  bool is_specific() override
14  {
15  return false;
16  }
17 
18  class Settings : public ToolSettings {
19  public:
20  json serialize() const override;
21  void load_from_json(const json &j) override;
22  void load_defaults();
23  int64_t expand_silk = .2_mm;
24  int64_t expand_pad = .2_mm;
25  int64_t line_width = .15_mm;
26  };
27 
28  const ToolSettings *get_settings_const() const override
29  {
30  return &settings;
31  }
32 
33  std::set<InToolActionID> get_actions() const override
34  {
35  using I = InToolActionID;
36  return {
37  I::LMB,
38  I::CANCEL,
39  };
40  }
41 
42 protected:
43  ToolSettings *get_settings() override
44  {
45  return &settings;
46  }
47 
48 private:
49  bool select_polygon();
50  ToolResponse redraw_silkscreen();
51  void clear_silkscreen();
52  void restore_package_visibility();
53 
54  class GenerateSilkscreenWindow *win = nullptr;
55  Settings settings;
56  const class Polygon *pp;
57  bool package_visible;
58  ClipperLib::Path path_pkg;
59  ClipperLib::Paths pads;
60 };
61 } // namespace horizon
This is what a Tool receives when the user did something.
Definition: tool.hpp:23
Common interface for all Tools.
Definition: tool.hpp:121
Definition: tool_generate_silkscreen.hpp:18
Definition: tool_generate_silkscreen.hpp:7
ToolResponse begin(const ToolArgs &args) override
Gets called right after the constructor has finished.
Definition: tool_generate_silkscreen.cpp:149
ToolResponse update(const ToolArgs &args) override
Gets called whenever the user generated some sort of input.
Definition: tool_generate_silkscreen.cpp:221
bool can_begin() override
Definition: tool_generate_silkscreen.cpp:36
bool is_specific() override
Definition: tool_generate_silkscreen.hpp:13
To signal back to the core what the Tool did, a Tool returns a ToolResponse.
Definition: tool.hpp:42
Definition: tool.hpp:84
a class to store JSON values
Definition: json.hpp:166
zip_int64_t int64_t
zip_int64_t typedef.
Definition: zip.hpp:103