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