Horizon
core_symbol.hpp
1 #pragma once
2 #include "core.hpp"
3 #include "pool/symbol.hpp"
4 #include "document/idocument_symbol.hpp"
5 
6 namespace horizon {
7 class CoreSymbol : public Core, public IDocumentSymbol {
8 public:
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  void set_temp_mode();
64  void set_filename(const std::string &filename);
65 
66 private:
67  std::map<UUID, Text> *get_text_map() override;
68  std::map<UUID, Polygon> *get_polygon_map() override;
69 
70  Symbol sym;
71  std::string m_filename;
72  Symbol::PinDisplayMode pin_display_mode = Symbol::PinDisplayMode::PRIMARY;
73 
74  SymbolRules rules;
75 
76  class HistoryItem : public Core::HistoryItem {
77  public:
78  HistoryItem(const Symbol &s, const std::string &cm) : Core::HistoryItem(cm), sym(s)
79  {
80  }
81  Symbol sym;
82  };
83  void rebuild_internal(bool from_undo, const std::string &comment) override;
84  void history_push(const std::string &comment) override;
85  void history_load(unsigned int i) override;
86  void save(const std::string &suffix) override;
87  void delete_autosave() override;
88 };
89 } // namespace horizon
Graphical arc.
Definition: arc.hpp:17
Definition: core_symbol.hpp:7
Definition: core.hpp:201
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
Tiny metaprogramming library.
Definition: meta.hpp:116