Horizon
Loading...
Searching...
No Matches
kicad_package_parser.hpp
1#pragma once
2#include "common/common.hpp"
3#include <set>
4#include <functional>
5
6namespace SEXPR {
7class SEXPR;
8}
9
10namespace horizon {
12public:
13 using LogCb = std::function<void(const std::string &, const std::string &)>;
14 void set_log_cb(LogCb cb);
15
16protected:
18 class Line *parse_line(const SEXPR::SEXPR *data);
19 void parse_poly(const SEXPR::SEXPR *data);
20 static int get_layer(const std::string &l);
21 static Coordi get_coord(const SEXPR::SEXPR *data, size_t offset = 1);
22 static Coordi get_size(const SEXPR::SEXPR *data, size_t offset = 1);
23 std::map<Coordi, class Junction *> junctions;
24 Junction *get_or_create_junction(const Coordi &c);
25 LogCb log_cb;
26
27 virtual class Junction &create_junction() = 0;
28 virtual class Polygon &create_polygon() = 0;
29 virtual class Line &create_line() = 0;
30
31public:
32 virtual ~KiCadModuleParser()
33 {
34 }
35};
36
38public:
39 KiCadPackageParser(class Package &p, class IPool &po);
40
41 class Meta {
42 public:
43 std::string name;
44 std::string descr;
45 std::set<std::string> tags;
46 };
47
48 Meta parse(const SEXPR::SEXPR *data);
49
50private:
51 void parse_pad(const SEXPR::SEXPR *data);
52
53 class Junction &create_junction() override;
54 class Polygon &create_polygon() override;
55 class Line &create_line() override;
56
57 Package &package;
58 IPool &pool;
59};
60
62public:
63 KiCadDecalParser(class Decal &d);
64 void parse(const SEXPR::SEXPR *data);
65
66private:
67 class Junction &create_junction() override;
68 class Polygon &create_polygon() override;
69 class Line &create_line() override;
70
71 Decal &decal;
72};
73
74} // namespace horizon
Definition sexpr.h:46
Definition decal.hpp:16
Definition ipool.hpp:15
A Junction is a point in 2D-Space.
Definition junction.hpp:20
Definition kicad_package_parser.hpp:61
Definition kicad_package_parser.hpp:11
Definition kicad_package_parser.hpp:41
Definition kicad_package_parser.hpp:37
Graphical line.
Definition line.hpp:16
Definition package.hpp:29
Polygon used in Padstack, Package and Board for specifying filled Regions.
Definition polygon.hpp:25