Horizon
core_package.hpp
1 #pragma once
2 #include "common/layer.hpp"
3 #include "core.hpp"
4 #include "pool/package.hpp"
5 #include "pool/pool.hpp"
6 #include <deque>
7 #include <iostream>
8 #include <memory>
9 
10 namespace horizon {
11 class CorePackage : public Core {
12 public:
13  CorePackage(const std::string &filename, Pool &pool);
14  bool has_object_type(ObjectType ty) const override;
15 
16  Package *get_package(bool work = true);
17 
18  /*Polygon *insert_polygon(const UUID &uu, bool work = true);
19  Polygon *get_polygon(const UUID &uu, bool work=true);
20  void delete_polygon(const UUID &uu, bool work = true);
21  Hole *insert_hole(const UUID &uu, bool work = true);
22  Hole *get_hole(const UUID &uu, bool work=true);
23  void delete_hole(const UUID &uu, bool work = true);*/
24 
25  class LayerProvider *get_layer_provider() override;
26 
27  bool set_property(ObjectType type, const UUID &uu, ObjectProperty::ID property,
28  const class PropertyValue &value) override;
29  bool get_property(ObjectType type, const UUID &uu, ObjectProperty::ID property,
30  class PropertyValue &value) override;
31  bool get_property_meta(ObjectType type, const UUID &uu, ObjectProperty::ID property,
32  class PropertyMeta &meta) override;
33 
34  std::string get_display_name(ObjectType type, const UUID &uu) override;
35  class Rules *get_rules() override;
36 
37  void rebuild(bool from_undo = false) override;
38  void commit() override;
39  void revert() override;
40 
41  bool can_search_for_object_type(ObjectType type) const override;
42  std::list<SearchResult> search(const SearchQuery &q) override;
43 
44  const Package *get_canvas_data();
45  std::pair<Coordi, Coordi> get_bbox() override;
46  json get_meta() override;
47 
48  void reload_pool() override;
49 
50  const std::string &get_filename() const override;
51 
52 private:
53  std::map<UUID, Junction> *get_junction_map(bool work = true) override;
54  std::map<UUID, Line> *get_line_map(bool work = true) override;
55  std::map<UUID, Arc> *get_arc_map(bool work = true) override;
56  std::map<UUID, Text> *get_text_map(bool work = true) override;
57  std::map<UUID, Polygon> *get_polygon_map(bool work = true) override;
58  std::map<UUID, Hole> *get_hole_map(bool work = true) override;
59  std::map<UUID, Keepout> *get_keepout_map() override;
60  std::map<UUID, Dimension> *get_dimension_map() override;
61 
62  Package package;
63  std::string m_filename;
64 
65  PackageRules rules;
66 
67  class HistoryItem : public Core::HistoryItem {
68  public:
69  HistoryItem(const Package &k) : package(k)
70  {
71  }
72  Package package;
73  };
74  void history_push() override;
75  void history_load(unsigned int i) override;
76  void save(const std::string &suffix) override;
77  void delete_autosave() override;
78 
79 public:
80  std::string parameter_program_code;
81  ParameterSet parameter_set;
82 
83  std::map<UUID, Package::Model> models;
84  UUID default_model;
85 };
86 } // namespace horizon
horizon::PackageRules
Definition: package_rules.hpp:10
horizon::Rules
Definition: rules.hpp:44
horizon::CorePackage::rebuild
void rebuild(bool from_undo=false) override
Expands the non-working document.
Definition: core_package.cpp:238
horizon::LayerProvider
Definition: layer_provider.hpp:7
horizon::Core
Where Tools and and documents meet.
Definition: core.hpp:240
horizon::PropertyMeta
Definition: core_properties.hpp:77
horizon::CorePackage
Definition: core_package.hpp:11
horizon::Core::SearchQuery
Definition: core.hpp:351
horizon::Package
Definition: package.hpp:28
nlohmann::basic_json
a class to store JSON values
Definition: json.hpp:161
horizon::UUID
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
horizon::CorePackage::get_meta
json get_meta() override
Definition: core_package.cpp:284
horizon::Pool
Stores objects (Unit, Entity, Symbol, Part, etc.) from the pool.
Definition: pool.hpp:21
horizon::Core::HistoryItem
Definition: core.hpp:498
horizon::PropertyValue
Definition: core_properties.hpp:7