Horizon
clipboard.hpp
1 #pragma once
2 #include "canvas/selectables.hpp"
3 #include "nlohmann/json_fwd.hpp"
4 
5 namespace horizon {
6 using json = nlohmann::json;
7 class ClipboardBase {
8 public:
9  json process(const std::set<SelectableRef> &sel);
10 
11  static std::unique_ptr<ClipboardBase> create(class IDocument &doc);
12  virtual ~ClipboardBase()
13  {
14  }
15 
16 protected:
17  virtual void expand_selection();
18  virtual void serialize(json &j);
19 
20  virtual class IDocument &get_doc() = 0;
21  std::set<SelectableRef> selection;
22 };
23 
25 public:
26  ClipboardGeneric(IDocument &d) : doc(d)
27  {
28  }
29 
30 protected:
31  IDocument &doc;
32  IDocument &get_doc() override
33  {
34  return doc;
35  }
36 };
37 
38 
39 } // namespace horizon
Definition: clipboard.hpp:7
Definition: clipboard.hpp:24
Definition: idocument.hpp:5
a class to store JSON values
Definition: json.hpp:166
basic_json<> json
default JSON class
Definition: json_fwd.hpp:61