Horizon
board_decal.hpp
1 #pragma once
2 #include "nlohmann/json_fwd.hpp"
3 #include "pool/decal.hpp"
4 #include "util/placement.hpp"
5 #include "util/uuid.hpp"
6 #include "util/uuid_ptr.hpp"
7 
8 namespace horizon {
9 using json = nlohmann::json;
10 
11 class BoardDecal {
12 public:
13  BoardDecal(const UUID &uu, const json &, class IPool &pool, const class Board &brd);
14  BoardDecal(const UUID &uu, const Decal &dec);
15  UUID uuid;
16 
17  const LayerRange &get_layers() const;
18  const Decal &get_decal() const;
19 
20  Placement placement;
21 
22  void set_flip(bool b, const class Board &brd);
23  bool get_flip() const;
24 
25  void set_scale(double sc);
26  double get_scale() const;
27 
28  UUID get_uuid() const;
29  json serialize() const;
30 
31 private:
32  const Decal *pool_decal;
33  Decal decal;
34 
35  bool flip = false;
36  double scale = 1;
37  LayerRange layers;
38 
39  void update_layers();
40 
41  void apply_scale();
42 };
43 } // namespace horizon
Definition: board_decal.hpp:11
Definition: board.hpp:43
Definition: decal.hpp:16
Definition: ipool.hpp:14
Definition: layer_range.hpp:7
Definition: placement.hpp:8
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:177
basic_json<> json
default JSON class
Definition: json_fwd.hpp:62