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 #include "document/idocument_package.hpp"
10 
11 namespace horizon {
12 class CorePackage : public Core, public virtual IDocumentPackage {
13 public:
14  CorePackage(const std::string &filename, Pool &pool);
15  bool has_object_type(ObjectType ty) const override;
16 
17  Package *get_package() override;
18 
19  /*Polygon *insert_polygon(const UUID &uu);
20  Polygon *get_polygon(const UUID &uu=true);
21  void delete_polygon(const UUID &uu);
22  Hole *insert_hole(const UUID &uu);
23  Hole *get_hole(const UUID &uu=true);
24  void delete_hole(const UUID &uu);*/
25 
26  class LayerProvider *get_layer_provider() override;
27 
28  bool set_property(ObjectType type, const UUID &uu, ObjectProperty::ID property,
29  const class PropertyValue &value) override;
30  bool get_property(ObjectType type, const UUID &uu, ObjectProperty::ID property,
31  class PropertyValue &value) override;
32  bool get_property_meta(ObjectType type, const UUID &uu, ObjectProperty::ID property,
33  class PropertyMeta &meta) override;
34 
35  std::string get_display_name(ObjectType type, const UUID &uu) override;
36  class Rules *get_rules() override;
37 
38  void rebuild(bool from_undo = false) override;
39 
40  const Package *get_canvas_data();
41  std::pair<Coordi, Coordi> get_bbox() override;
42  json get_meta() override;
43 
44  void reload_pool() override;
45 
46  const std::string &get_filename() const override;
47 
48  ObjectType get_object_type() const override
49  {
50  return ObjectType::PACKAGE;
51  }
52 
53 private:
54  std::map<UUID, Junction> *get_junction_map() override;
55  std::map<UUID, Line> *get_line_map() override;
56  std::map<UUID, Arc> *get_arc_map() override;
57  std::map<UUID, Text> *get_text_map() override;
58  std::map<UUID, Polygon> *get_polygon_map() override;
59  std::map<UUID, Hole> *get_hole_map() override;
60  std::map<UUID, Keepout> *get_keepout_map() override;
61  std::map<UUID, Dimension> *get_dimension_map() override;
62  std::map<UUID, Picture> *get_picture_map() override;
63 
64  Package package;
65  std::string m_filename;
66  std::string m_pictures_dir;
67 
68  PackageRules rules;
69 
70  class HistoryItem : public Core::HistoryItem {
71  public:
72  HistoryItem(const Package &k) : package(k)
73  {
74  }
75  Package package;
76  };
77  void history_push() override;
78  void history_load(unsigned int i) override;
79  void save(const std::string &suffix) override;
80  void delete_autosave() override;
81 
82 public:
83  std::string parameter_program_code;
84  ParameterSet parameter_set;
85 
86  std::map<UUID, Package::Model> models;
87  UUID default_model;
88 };
89 } // namespace horizon
horizon::PackageRules
Definition: package_rules.hpp:10
horizon::IDocumentPackage
Definition: idocument_package.hpp:5
horizon::Rules
Definition: rules.hpp:47
horizon::CorePackage::rebuild
void rebuild(bool from_undo=false) override
Expands the non-working document.
Definition: core_package.cpp:215
horizon::LayerProvider
Definition: layer_provider.hpp:7
horizon::Core
Where Tools and and documents meet.
Definition: core.hpp:47
horizon::PropertyMeta
Definition: core_properties.hpp:90
horizon::CorePackage
Definition: core_package.hpp:12
horizon::Package
Definition: package.hpp:29
nlohmann::basic_json
a class to store JSON values
Definition: json.hpp:166
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:250
horizon::Pool
Stores objects (Unit, Entity, Symbol, Part, etc.) from the pool.
Definition: pool.hpp:21
horizon::Core::HistoryItem
Definition: core.hpp:193
horizon::PropertyValue
Definition: core_properties.hpp:7