Horizon
core_frame.hpp
1 #pragma once
2 #include "frame/frame.hpp"
3 #include "core.hpp"
4 #include "nlohmann/json.hpp"
5 #include "document/idocument_frame.hpp"
6 
7 namespace horizon {
8 class CoreFrame : public Core, public IDocumentFrame {
9 public:
10  CoreFrame(const std::string &frame_filename, IPool &pool);
11  bool has_object_type(ObjectType ty) const override;
12 
13  Frame &get_frame() override;
14  const Frame *get_canvas_data() const;
15  class LayerProvider &get_layer_provider() override;
16 
17  void rebuild(bool from_undo = false) override;
18 
19  std::pair<Coordi, Coordi> get_bbox() override;
20 
21  const std::string &get_filename() const override;
22 
23  ObjectType get_object_type() const override
24  {
25  return ObjectType::FRAME;
26  }
27 
28  const FileVersion &get_version() const override
29  {
30  return frame.version;
31  }
32 
33 private:
34  std::map<UUID, Polygon> *get_polygon_map() override;
35  std::map<UUID, Junction> *get_junction_map() override;
36  std::map<UUID, Text> *get_text_map() override;
37  std::map<UUID, Line> *get_line_map() override;
38  std::map<UUID, Arc> *get_arc_map() override;
39 
40  Frame frame;
41 
42  std::string m_frame_filename;
43 
44  class HistoryItem : public Core::HistoryItem {
45  public:
46  HistoryItem(const Frame &r);
47  Frame frame;
48  };
49  void history_push() override;
50  void history_load(unsigned int i) override;
51  void save(const std::string &suffix) override;
52  void delete_autosave() override;
53 };
54 } // namespace horizon
horizon::FileVersion
Definition: file_version.hpp:8
horizon::CoreFrame::rebuild
void rebuild(bool from_undo=false) override
Expands the non-working document.