Horizon
core_symbol.hpp
1#pragma once
2#include "core.hpp"
3#include "pool/symbol.hpp"
4#include "document/idocument_symbol.hpp"
5
6namespace horizon {
7class CoreSymbol : public Core, public IDocumentSymbol {
8public:
9 CoreSymbol(const std::string &filename, IPool &pool);
10 bool has_object_type(ObjectType ty) const override;
11 Symbol &get_symbol() override;
12
13 Junction *get_junction(const UUID &uu) override;
14 Line *get_line(const UUID &uu) override;
15 SymbolPin &get_symbol_pin(const UUID &uu) override;
16 Arc *get_arc(const UUID &uu) override;
17
18 Junction *insert_junction(const UUID &uu) override;
19 void delete_junction(const UUID &uu) override;
20 Line *insert_line(const UUID &uu) override;
21 void delete_line(const UUID &uu) override;
22 Arc *insert_arc(const UUID &uu) override;
23 void delete_arc(const UUID &uu) override;
24
25 SymbolPin &insert_symbol_pin(const UUID &uu) override;
26 void delete_symbol_pin(const UUID &uu) override;
27
28 class LayerProvider &get_layer_provider() override;
29
30 std::vector<Line *> get_lines() override;
31 std::vector<Arc *> get_arcs() override;
32
33 bool set_property(ObjectType type, const UUID &uu, ObjectProperty::ID property,
34 const class PropertyValue &value) override;
35 bool get_property(ObjectType type, const UUID &uu, ObjectProperty::ID property,
36 class PropertyValue &value) override;
37 bool get_property_meta(ObjectType type, const UUID &uu, ObjectProperty::ID property,
38 class PropertyMeta &meta) override;
39
40 std::string get_display_name(ObjectType type, const UUID &uu) override;
41
42 const Symbol &get_canvas_data();
43 std::pair<Coordi, Coordi> get_bbox() override;
44
45 void reload_pool() override;
46
47 void set_pin_display_mode(Symbol::PinDisplayMode mode);
48
49 const std::string &get_filename() const override;
50
51 ObjectType get_object_type() const override
52 {
53 return ObjectType::SYMBOL;
54 }
55
56 class Rules *get_rules() override;
57
58 const FileVersion &get_version() const override
59 {
60 return sym.version;
61 }
62
63
64private:
65 std::map<UUID, Text> *get_text_map() override;
66 std::map<UUID, Polygon> *get_polygon_map() override;
67
68 Symbol sym;
69 std::string m_filename;
70 Symbol::PinDisplayMode pin_display_mode = Symbol::PinDisplayMode::PRIMARY;
71
72 SymbolRules rules;
73
74 class HistoryItem : public Core::HistoryItem {
75 public:
76 HistoryItem(const Symbol &s, const std::string &cm) : Core::HistoryItem(cm), sym(s)
77 {
78 }
79 Symbol sym;
80 };
81 void rebuild_internal(bool from_undo, const std::string &comment) override;
82 void history_push(const std::string &comment) override;
83 void history_load(unsigned int i) override;
84 void save(const std::string &suffix) override;
85 void delete_autosave() override;
86};
87} // namespace horizon
Graphical arc.
Definition: arc.hpp:17
Definition: core_symbol.hpp:7
Definition: core.hpp:202
Where Tools and and documents meet.
Definition: core.hpp:42
Definition: file_version.hpp:9
Definition: idocument_symbol.hpp:5
Definition: ipool.hpp:14
A Junction is a point in 2D-Space.
Definition: junction.hpp:20
Definition: layer_provider.hpp:7
Graphical line.
Definition: line.hpp:16
Definition: core_properties.hpp:90
Definition: core_properties.hpp:7
Definition: rules.hpp:53
Definition: symbol.hpp:20
Definition: symbol_rules.hpp:10
Definition: symbol.hpp:72
PinDisplayMode
fills in information from the referenced unit
Definition: symbol.hpp:86
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16