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 
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  bool handles_esc() override
19  {
20  return true;
21  }
22 
23  class Settings : public ToolSettings {
24  public:
25  json serialize() const override;
26  void load_from_json(const json &j) override;
27  void load_defaults();
28  int64_t expand_silk = .2_mm;
29  int64_t expand_pad = .2_mm;
30  int64_t line_width = .15_mm;
31  };
32 
33  const ToolSettings *get_settings_const() const override
34  {
35  return &settings;
36  }
37 
38 protected:
39  ToolSettings *get_settings() override
40  {
41  return &settings;
42  }
43 
44 private:
45  bool select_polygon();
46  ToolResponse redraw_silkscreen();
47  void clear_silkscreen();
48  void restore_package_visibility();
49 
50  class GenerateSilkscreenWindow *win = nullptr;
51  Settings settings;
52  const Polygon *pp;
53  bool package_visible;
54  ClipperLib::Path path_pkg;
55  ClipperLib::Paths pads;
56 };
57 } // namespace horizon
horizon::ToolSettings
Definition: tool.hpp:99
horizon::ToolGenerateSilkscreen::handles_esc
bool handles_esc() override
Definition: tool_generate_silkscreen.hpp:18
horizon::ToolGenerateSilkscreen
Definition: tool_generate_silkscreen.hpp:8
horizon::IDocument
Definition: idocument.hpp:5
horizon::ToolGenerateSilkscreen::can_begin
bool can_begin() override
Definition: tool_generate_silkscreen.cpp:40
horizon::ToolGenerateSilkscreen::begin
ToolResponse begin(const ToolArgs &args) override
Gets called right after the constructor has finished.
Definition: tool_generate_silkscreen.cpp:153
horizon::ToolGenerateSilkscreen::update
ToolResponse update(const ToolArgs &args) override
Gets called whenever the user generated some sort of input.
Definition: tool_generate_silkscreen.cpp:221
horizon::ToolGenerateSilkscreen::is_specific
bool is_specific() override
Definition: tool_generate_silkscreen.hpp:14
horizon::ToolGenerateSilkscreen::Settings
Definition: tool_generate_silkscreen.hpp:23
nlohmann::basic_json
a class to store JSON values
Definition: json.hpp:165
horizon::ToolBase
Common interface for all Tools.
Definition: tool.hpp:136
libzip::int64_t
zip_int64_t int64_t
zip_int64_t typedef.
Definition: zip.hpp:103
horizon::ToolResponse
To signal back to the core what the Tool did, a Tool returns a ToolResponse.
Definition: tool.hpp:48
horizon::ToolArgs
This is what a Tool receives when the user did something.
Definition: tool.hpp:22