Horizon
canvas_odb.hpp
1#pragma once
2#include "canvas/canvas.hpp"
3#include "db.hpp"
4
5namespace horizon {
6class CanvasODB : public Canvas {
7public:
8 CanvasODB(ODB::Job &job, const class Board &brd);
9 void push() override
10 {
11 }
12 void request_push() override;
13 uint64_t outline_width = 0;
14
15 std::map<int, ODB::Features *> layer_features;
16 ODB::Features *drill_features = nullptr;
17 ODB::EDAData *eda_data = nullptr;
18
19 std::map<std::pair<UUID, UUID>, ODB::EDAData::SubnetToeprint *> pad_subnets;
20 std::map<UUID, ODB::EDAData::SubnetTrace *> track_subnets;
21
22private:
23 void img_net(const Net *net) override;
24 void img_polygon(const Polygon &poly, bool tr) override;
25 void img_arc(const Arc &arc) override;
26 bool img_supports_arc() const override
27 {
28 return true;
29 }
30 void img_line(const Coordi &p0, const Coordi &p1, const uint64_t width, int layer, bool tr = true) override;
31 void img_padstack(const Padstack &ps) override;
32 void img_hole(const Hole &hole) override;
33 void img_set_padstack(bool v) override;
34 void img_patch_type(PatchType pt) override;
35 void img_text(const Text *text) override;
36
37 PatchType patch_type = PatchType::OTHER;
38 const Text *text_current = nullptr;
39
40 bool padstack_mode = false;
41
42 ODB::Features *get_layer_features(int layer)
43 {
44 auto x = layer_features.find(layer);
45 if (x == layer_features.end())
46 return nullptr;
47 else
48 return x->second;
49 }
50
51 ODB::Job &job;
52 const Board &brd;
53
54 std::map<UUID, ODB::EDAData::SubnetVia *> via_subnets;
55
56 ODB::EDAData::SubnetToeprint *get_subnet_toeprint();
57};
58} // namespace horizon
Graphical arc.
Definition: arc.hpp:17
Definition: board.hpp:47
Definition: canvas_odb.hpp:6
Definition: canvas.hpp:24
A hole with diameter and position, that's it.
Definition: hole.hpp:15
Definition: net.hpp:11
Definition: eda_data.hpp:85
Definition: eda_data.hpp:17
Definition: features.hpp:14
Definition: db.hpp:95
Definition: padstack.hpp:19
Polygon used in Padstack, Package and Board for specifying filled Regions.
Definition: polygon.hpp:25
Used wherever a user-editable text is needed.
Definition: text.hpp:15