Horizon
core_board.hpp
1 #pragma once
2 #include "block/block.hpp"
3 #include "board/board.hpp"
4 #include "core.hpp"
5 #include "nlohmann/json.hpp"
6 #include "document/document_board.hpp"
7 #include <optional>
8 
9 namespace horizon {
10 class CoreBoard : public Core, public DocumentBoard {
11 public:
12  CoreBoard(const std::string &board_filename, const std::string &block_filename, const std::string &via_dir,
13  const std::string &pictures_dir, IPool &pool);
14 
15  class Block *get_block() override;
16  class LayerProvider &get_layer_provider() override;
17 
18  bool set_property(ObjectType type, const UUID &uu, ObjectProperty::ID property,
19  const class PropertyValue &value) override;
20  bool get_property(ObjectType type, const UUID &uu, ObjectProperty::ID property,
21  class PropertyValue &value) override;
22  bool get_property_meta(ObjectType type, const UUID &uu, ObjectProperty::ID property,
23  class PropertyMeta &meta) override;
24 
25  void rebuild(bool from_undo = false) override;
26  void reload_netlist();
27 
28  const Board &get_canvas_data();
29  Board *get_board() override;
30  const Board *get_board() const;
31 
32  ViaPadstackProvider &get_via_padstack_provider() override
33  {
34  return via_padstack_provider;
35  }
36 
37  class Rules *get_rules() override;
38  FabOutputSettings &get_fab_output_settings() override
39  {
40  return fab_output_settings;
41  }
42  PDFExportSettings &get_pdf_export_settings() override
43  {
44  return pdf_export_settings;
45  }
46  STEPExportSettings &get_step_export_settings() override
47  {
48  return step_export_settings;
49  }
50  PnPExportSettings &get_pnp_export_settings() override
51  {
52  return pnp_export_settings;
53  }
54 
55  BoardColors &get_colors() override
56  {
57  return colors;
58  }
59  void update_rules() override;
60 
61  std::pair<Coordi, Coordi> get_bbox() override;
62 
63  json get_meta() override;
64 
65  const std::string &get_filename() const override;
66 
67  ObjectType get_object_type() const override
68  {
69  return ObjectType::BOARD;
70  }
71 
72  const FileVersion &get_version() const override
73  {
74  return brd->version;
75  }
76 
77  void reload_pool() override;
78 
79 private:
80  ViaPadstackProvider via_padstack_provider;
81 
82  std::optional<Block> block;
83  std::optional<Board> brd;
84 
85  BoardRules rules;
86  FabOutputSettings fab_output_settings;
87  PDFExportSettings pdf_export_settings;
88  STEPExportSettings step_export_settings;
89  PnPExportSettings pnp_export_settings;
90 
91  BoardColors colors;
92 
93  std::string m_board_filename;
94  std::string m_block_filename;
95  std::string m_pictures_dir;
96 
97  class HistoryItem : public Core::HistoryItem {
98  public:
99  HistoryItem(const Block &b, const Board &r);
100  Block block;
101  Board brd;
102  };
103  void history_push() override;
104  void history_load(unsigned int i) override;
105  void save(const std::string &suffix) override;
106  void delete_autosave() override;
107 };
108 } // namespace horizon
A block is one level of hierarchy in the netlist.
Definition: block.hpp:26
Definition: board.hpp:35
Definition: board_rules.hpp:22
Definition: board.hpp:42
Definition: core_board.hpp:10
json get_meta() override
Definition: core_board.cpp:650
void rebuild(bool from_undo=false) override
Expands the non-working document.
Definition: core_board.cpp:574
Definition: core.hpp:184
Where Tools and and documents meet.
Definition: core.hpp:42
Definition: document_board.hpp:14
Definition: fab_output_settings.hpp:10
Definition: file_version.hpp:8
Definition: ipool.hpp:12
Definition: layer_provider.hpp:7
Definition: pdf_export_settings.hpp:9
Definition: pnp_export_settings.hpp:11
Definition: core_properties.hpp:90
Definition: core_properties.hpp:7
Definition: rules.hpp:48
Definition: step_export_settings.hpp:10
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
Definition: via_padstack_provider.hpp:13
a class to store JSON values
Definition: json.hpp:166