Horizon
Loading...
Searching...
No Matches
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
9namespace horizon {
10class CoreBoard : public Core, public DocumentBoard {
11public:
12 class Filenames {
13 public:
14 Filenames(const std::vector<std::string> &filenames)
15 : board(filenames.at(0)), planes(filenames.at(1)), blocks(filenames.at(2)), pictures_dir(filenames.at(3))
16 {
17 }
18 std::string board;
19 std::string planes;
20 std::string blocks;
21 std::string pictures_dir;
22 };
23
24 CoreBoard(const Filenames &filenames, IPool &pool, IPool &pool_caching);
25
26 class Block *get_top_block() override;
27 class LayerProvider &get_layer_provider() override;
28
29 bool set_property(ObjectType type, const UUID &uu, ObjectProperty::ID property,
30 const class PropertyValue &value) override;
31 bool get_property(ObjectType type, const UUID &uu, ObjectProperty::ID property,
32 class PropertyValue &value) override;
33 bool get_property_meta(ObjectType type, const UUID &uu, ObjectProperty::ID property,
34 class PropertyMeta &meta) override;
35
36 void reload_netlist();
37
38 const Board &get_canvas_data();
39 Board *get_board() override;
40 const Board *get_board() const;
41
42 class Rules *get_rules() override;
43 GerberOutputSettings &get_gerber_output_settings() override
44 {
45 return gerber_output_settings;
46 }
47 ODBOutputSettings &get_odb_output_settings() override
48 {
49 return odb_output_settings;
50 }
51 PDFExportSettings &get_pdf_export_settings() override
52 {
53 return pdf_export_settings;
54 }
55 STEPExportSettings &get_step_export_settings() override
56 {
57 return step_export_settings;
58 }
59 PnPExportSettings &get_pnp_export_settings() override
60 {
61 return pnp_export_settings;
62 }
63 GridSettings *get_grid_settings() override
64 {
65 return &grid_settings;
66 }
67
68 BoardColors &get_colors() override
69 {
70 return colors;
71 }
72 void update_rules() override;
73
74 std::pair<Coordi, Coordi> get_bbox() override;
75
76 json get_meta() override;
77
78 const std::string &get_filename() const override;
79
80 ObjectType get_object_type() const override
81 {
82 return ObjectType::BOARD;
83 }
84
85 const FileVersion &get_version() const override
86 {
87 return brd->version;
88 }
89
90 void reload_pool() override;
91
92private:
93 std::optional<Block> block;
94 std::optional<Board> brd;
95
96 BoardRules rules;
97 GerberOutputSettings gerber_output_settings;
98 ODBOutputSettings odb_output_settings;
99 PDFExportSettings pdf_export_settings;
100 STEPExportSettings step_export_settings;
101 PnPExportSettings pnp_export_settings;
102 GridSettings grid_settings;
103
104 BoardColors colors;
105
106 Filenames filenames;
107
108 void rebuild_internal(bool from_undo, const std::string &comment) override;
109 std::unique_ptr<HistoryManager::HistoryItem> make_history_item(const std::string &comment) override;
110 void history_load(const HistoryManager::HistoryItem &it) override;
111 void save(const std::string &suffix) override;
112 void delete_autosave() override;
113};
114} // namespace horizon
A block is one level of hierarchy in the netlist.
Definition block.hpp:29
Definition board.hpp:47
Definition core_board.hpp:12
Definition core_board.hpp:10
json get_meta() override
Definition core_board.cpp:845
Where Tools and and documents meet.
Definition core.hpp:42
Definition document_board.hpp:14
Definition gerber_output_settings.hpp:11
Definition ipool.hpp:15
Definition layer_provider.hpp:8
Definition odb_output_settings.hpp:10
Definition core_properties.hpp:104
Definition core_properties.hpp:8
Definition rules.hpp:54
This class encapsulates a UUID and allows it to be uses as a value type.
Definition uuid.hpp:16
a class to store JSON values
Definition json.hpp:177
Tiny metaprogramming library.
Definition meta.hpp:116