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