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