WebCFace 2.9.0
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
canvas3d.h
Go to the documentation of this file.
1#pragma once
2#include "./base.h"
4#include <map>
5#include <optional>
6#include <unordered_map>
7#include <vector>
8#include <array>
9
10#ifndef MSGPACK_DEFINE_MAP
11#define MSGPACK_DEFINE_MAP(...)
12#endif
13
15namespace message {
16
18 int type = 0;
19 std::array<double, 3> origin_pos, origin_rot;
20 int color = 0;
21 std::optional<int> geometry_type;
22 std::vector<double> geometry_properties;
23 std::optional<SharedString> field_member, field_field;
24 std::map<std::string, double> angles;
26 bool operator==(const Canvas3DComponentData &other) const {
27 return type == other.type && origin_pos == other.origin_pos &&
28 origin_rot == other.origin_rot && color == other.color &&
29 geometry_type == other.geometry_type &&
30 geometry_properties == other.geometry_properties &&
31 field_member == other.field_member &&
32 field_field == other.field_field && angles == other.angles;
33 }
34 bool operator!=(const Canvas3DComponentData &other) const {
35 return !(*this == other);
36 }
37 MSGPACK_DEFINE_MAP(MSGPACK_NVP("t", type), MSGPACK_NVP("op", origin_pos),
38 MSGPACK_NVP("or", origin_rot), MSGPACK_NVP("c", color),
39 MSGPACK_NVP("gt", geometry_type),
40 MSGPACK_NVP("gp", geometry_properties),
41 MSGPACK_NVP("fm", field_member),
42 MSGPACK_NVP("ff", field_field), MSGPACK_NVP("a", angles))
43};
45 std::map<std::string, std::shared_ptr<Canvas3DComponentData>, std::less<>>
47 std::vector<SharedString> data_ids;
48 Canvas3DData() = default;
49};
50struct Canvas3D : public MessageBase<MessageKind::canvas3d> {
52 std::map<std::string, std::shared_ptr<Canvas3DComponentData>, std::less<>>
54 std::optional<std::vector<SharedString>> data_ids;
55 Canvas3D() = default;
56 Canvas3D(const SharedString &field,
57 std::map<std::string, std::shared_ptr<Canvas3DComponentData>,
58 std::less<>>
59 data_diff,
60 std::optional<std::vector<SharedString>> data_ids)
61 : field(field), data_diff(std::move(data_diff)),
62 data_ids(std::move(data_ids)) {}
63 MSGPACK_DEFINE_MAP(MSGPACK_NVP("f", field), MSGPACK_NVP("d", data_diff),
64 MSGPACK_NVP("l", data_ids))
65};
66struct Canvas3DOld : public MessageBase<MessageKind::canvas3d_old> {
68 std::map<std::string, std::shared_ptr<Canvas3DComponentData>> data_diff;
69 std::size_t length = 0;
70 Canvas3DOld() = default;
72 const SharedString &field,
73 const std::unordered_map<int, std::shared_ptr<Canvas3DComponentData>>
74 &data_diff,
75 std::size_t length)
76 : field(field), data_diff(), length(length) {
77 for (const auto &vc : data_diff) {
78 this->data_diff.emplace(std::to_string(vc.first), vc.second);
79 }
80 }
82 const SharedString &field,
83 const std::map<std::string, std::shared_ptr<Canvas3DComponentData>>
84 &data_diff,
85 std::size_t length)
86 : field(field), data_diff(data_diff), length(length) {}
87 MSGPACK_DEFINE_MAP(MSGPACK_NVP("f", field), MSGPACK_NVP("d", data_diff),
88 MSGPACK_NVP("l", length))
89};
90template <>
92 : public MessageBase<MessageKind::canvas3d + MessageKind::res> {
93 unsigned int req_id = 0;
95 std::map<std::string, std::shared_ptr<Canvas3DComponentData>, std::less<>>
97 std::optional<std::vector<SharedString>> data_ids;
98 Res() = default;
99 Res(unsigned int req_id, const SharedString &sub_field,
100 const std::map<std::string, std::shared_ptr<Canvas3DComponentData>,
101 std::less<>> &data_diff,
102 const std::optional<std::vector<SharedString>> &data_ids)
103 : req_id(req_id), sub_field(sub_field), data_diff(data_diff),
104 data_ids(data_ids) {}
105 MSGPACK_DEFINE_MAP(MSGPACK_NVP("i", req_id), MSGPACK_NVP("f", sub_field),
106 MSGPACK_NVP("d", data_diff), MSGPACK_NVP("l", data_ids))
107};
108template <>
110 : public MessageBase<MessageKind::canvas3d_old + MessageKind::res> {
111 unsigned int req_id = 0;
113 std::map<std::string, std::shared_ptr<Canvas3DComponentData>> data_diff;
114 std::size_t length = 0;
115 Res() = default;
116 Res(unsigned int req_id, const SharedString &sub_field,
117 const std::map<std::string, std::shared_ptr<Canvas3DComponentData>>
118 &data_diff,
119 std::size_t length)
120 : req_id(req_id), sub_field(sub_field), data_diff(data_diff),
121 length(length) {}
122 MSGPACK_DEFINE_MAP(MSGPACK_NVP("i", req_id), MSGPACK_NVP("f", sub_field),
123 MSGPACK_NVP("d", data_diff), MSGPACK_NVP("l", length))
124};
125
126} // namespace message
128
130WEBCFACE_MESSAGE_FMT(webcface::message::Res<webcface::message::Canvas3D>)
131WEBCFACE_MESSAGE_FMT(webcface::message::Entry<webcface::message::Canvas3D>)
132WEBCFACE_MESSAGE_FMT(webcface::message::Req<webcface::message::Canvas3D>)
133WEBCFACE_MESSAGE_FMT(webcface::message::Canvas3DOld)
134WEBCFACE_MESSAGE_FMT(webcface::message::Res<webcface::message::Canvas3DOld>)
135WEBCFACE_MESSAGE_FMT(webcface::message::Entry<webcface::message::Canvas3DOld>)
136WEBCFACE_MESSAGE_FMT(webcface::message::Req<webcface::message::Canvas3DOld>)
#define MSGPACK_DEFINE_MAP(...)
Definition base.h:18
u8stringとstringとwstringをshared_ptrで持ち共有する
Definition encoding.h:159
#define WEBCFACE_MESSAGE_FMT(Type)
Definition fmt.h:21
Definition arg.h:15
std::array< double, 3 > origin_rot
Definition canvas3d.h:19
std::optional< SharedString > field_field
Definition canvas3d.h:23
int color
Definition canvas3d.h:20
std::array< double, 3 > origin_pos
Definition canvas3d.h:19
std::optional< SharedString > field_member
Definition canvas3d.h:23
bool operator==(const Canvas3DComponentData &other) const
Definition canvas3d.h:26
std::optional< int > geometry_type
Definition canvas3d.h:21
int type
Definition canvas3d.h:18
std::map< std::string, double > angles
Definition canvas3d.h:24
bool operator!=(const Canvas3DComponentData &other) const
Definition canvas3d.h:34
std::vector< double > geometry_properties
Definition canvas3d.h:22
Definition canvas3d.h:44
std::vector< SharedString > data_ids
Definition canvas3d.h:47
std::map< std::string, std::shared_ptr< Canvas3DComponentData >, std::less<> > components
Definition canvas3d.h:46
Definition canvas3d.h:66
Canvas3DOld(const SharedString &field, const std::map< std::string, std::shared_ptr< Canvas3DComponentData > > &data_diff, std::size_t length)
Definition canvas3d.h:81
SharedString field
Definition canvas3d.h:67
Canvas3DOld(const SharedString &field, const std::unordered_map< int, std::shared_ptr< Canvas3DComponentData > > &data_diff, std::size_t length)
Definition canvas3d.h:71
std::map< std::string, std::shared_ptr< Canvas3DComponentData > > data_diff
Definition canvas3d.h:68
Definition canvas3d.h:50
std::map< std::string, std::shared_ptr< Canvas3DComponentData >, std::less<> > data_diff
Definition canvas3d.h:53
std::optional< std::vector< SharedString > > data_ids
Definition canvas3d.h:54
Canvas3D(const SharedString &field, std::map< std::string, std::shared_ptr< Canvas3DComponentData >, std::less<> > data_diff, std::optional< std::vector< SharedString > > data_ids)
Definition canvas3d.h:56
SharedString field
Definition canvas3d.h:51
型からkindを取得するためだけのベースクラス
Definition base.h:68
SharedString sub_field
Definition canvas3d.h:112
std::map< std::string, std::shared_ptr< Canvas3DComponentData > > data_diff
Definition canvas3d.h:113
Res(unsigned int req_id, const SharedString &sub_field, const std::map< std::string, std::shared_ptr< Canvas3DComponentData > > &data_diff, std::size_t length)
Definition canvas3d.h:116
std::map< std::string, std::shared_ptr< Canvas3DComponentData >, std::less<> > data_diff
Definition canvas3d.h:96
std::optional< std::vector< SharedString > > data_ids
Definition canvas3d.h:97
SharedString sub_field
Definition canvas3d.h:94
Res(unsigned int req_id, const SharedString &sub_field, const std::map< std::string, std::shared_ptr< Canvas3DComponentData >, std::less<> > &data_diff, const std::optional< std::vector< SharedString > > &data_ids)
Definition canvas3d.h:99
Definition base.h:73
#define WEBCFACE_NS_END
Definition webcface-config.h:113
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:112