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 <vector>
3#include <sstream>
4#include <ostream>
5#include <memory>
6#include <utility>
7#include <stdexcept>
8#ifdef WEBCFACE_MESON
9#include "webcface-config.h"
10#else
11#include "webcface/common/webcface-config.h"
12#endif
13#include "robot_model.h"
14#include "components.h"
15
17namespace internal {
18template <typename Component>
19class DataSetBuffer;
20}
21
28class WEBCFACE_DLL Canvas3D : protected Field {
29 std::shared_ptr<internal::DataSetBuffer<TemporalCanvas3DComponent>> sb;
30
31 public:
32 Canvas3D();
33 Canvas3D(const Field &base);
34 Canvas3D(const Field &base, const SharedString &field)
35 : Canvas3D(Field{base, field}) {}
36
38 using Field::lastName;
39 using Field::member;
40 using Field::name;
41 using Field::nameW;
46 Canvas3D child(std::string_view field) const {
47 return this->Field::child(field);
48 }
53 Canvas3D child(std::wstring_view field) const {
54 return this->Field::child(field);
55 }
60 [[deprecated]]
61 Canvas3D child(int index) const {
62 return this->Field::child(std::to_string(index));
63 }
68 Canvas3D operator[](std::string_view field) const { return child(field); }
73 Canvas3D operator[](std::wstring_view field) const { return child(field); }
78 Canvas3D operator[](const char *field) const { return child(field); }
82 Canvas3D operator[](const wchar_t *field) const { return child(field); }
88 [[deprecated]]
89 Canvas3D operator[](int index) const {
90 return child(std::to_string(index));
91 }
96 Canvas3D parent() const { return this->Field::parent(); }
97
104 const Canvas3D &
105 onChange(std::function<void WEBCFACE_CALL_FP(Canvas3D)> callback) const;
112 template <typename F, typename std::enable_if_t<std::is_invocable_v<F>,
113 std::nullptr_t> = nullptr>
114 const Canvas3D &onChange(F callback) const {
115 return onChange(
116 [callback = std::move(callback)](const auto &) { callback(); });
117 }
125 template <typename T>
126 [[deprecated]] void appendListener(T &&callback) const {
127 onChange(std::forward<T>(callback));
128 }
129
135 const Canvas3D &request() const;
140 std::optional<std::vector<Canvas3DComponent>> tryGet() const;
145 std::vector<Canvas3DComponent> get() const {
146 return tryGet().value_or(std::vector<Canvas3DComponent>{});
147 }
156 bool exists() const;
157
162 [[deprecated]] std::chrono::system_clock::time_point time() const;
163
168 const Canvas3D &free() const;
169
178 const Canvas3D &init() const;
179
185
194 template <typename T>
195 const Canvas3D &add(T &&cc) const {
196 *this << std::forward<T>(cc);
197 return *this;
198 }
199
204 template <bool V, bool C2>
206 *this << std::move(cc.component_3d);
207 return *this;
208 }
209
217 const Canvas3D &sync() const;
218
224 template <typename T, typename std::enable_if_t<std::is_same_v<T, Canvas3D>,
225 std::nullptr_t> = nullptr>
226 bool operator==(const T &other) const {
227 return static_cast<Field>(*this) == static_cast<Field>(other);
228 }
229 template <typename T, typename std::enable_if_t<std::is_same_v<T, Canvas3D>,
230 std::nullptr_t> = nullptr>
231 bool operator!=(const T &other) const {
232 return static_cast<Field>(*this) != static_cast<Field>(other);
233 }
234};
Canvas3Dの送受信データを表すクラス
Definition canvas3d.h:28
Canvas3D(const Field &base, const SharedString &field)
Definition canvas3d.h:34
Canvas3D operator[](const wchar_t *field) const
Definition canvas3d.h:82
bool operator==(const T &other) const
Canvas3Dの参照先を比較
Definition canvas3d.h:226
Canvas3D operator[](std::string_view field) const
Definition canvas3d.h:68
const Canvas3D & onChange(F callback) const
値が変化したときに呼び出されるコールバックを設定
Definition canvas3d.h:114
Canvas3D child(std::wstring_view field) const
「(thisの名前).(追加の名前)」を新しい名前とするField (wstring)
Definition canvas3d.h:53
Canvas3D child(std::string_view field) const
「(thisの名前).(追加の名前)」を新しい名前とするField
Definition canvas3d.h:46
std::vector< Canvas3DComponent > get() const
Canvasの内容を取得する
Definition canvas3d.h:145
const Canvas3D & add(T &&cc) const
コンポーネントなどを追加
Definition canvas3d.h:195
Canvas3D operator[](std::wstring_view field) const
Definition canvas3d.h:73
Canvas3D parent() const
nameの最後のピリオドの前までを新しい名前とするField
Definition canvas3d.h:96
bool operator!=(const T &other) const
Definition canvas3d.h:231
const Canvas3D & operator<<(TemporalComponent< V, C2, true > cc) const
Geometryを追加
Definition canvas3d.h:205
void appendListener(T &&callback) const
Definition canvas3d.h:126
Canvas3D operator[](const char *field) const
Definition canvas3d.h:78
Canvas3D child(int index) const
Definition canvas3d.h:61
Canvas3D operator[](int index) const
Definition canvas3d.h:89
u8stringとstringとwstringをshared_ptrで持ち共有する
Definition encoding.h:67
Canvas3Dを構築するときに使う一時的なCanvas3DComponent.
Definition component_canvas3d.h:119
View,Canvasなどで送信用にaddされたデータを管理する
Definition data_buffer.h:17
std::ostream & operator<<(std::ostream &os, const Arg &arg)
Definition func_info.cc:100
ClientDataの参照とメンバ名とデータ名を持つクラス
Definition field.h:71
Field parent() const
nameの最後のピリオドの前までを新しい名前とするField
Definition field.cc:33
Field child(const SharedString &field) const
Definition field.cc:42
Canvas2D, Canvas3D (, View) に要素をaddするときに使うインタフェース
Definition components.h:22
TemporalCanvas3DComponent component_3d
Definition components.h:25
#define WEBCFACE_DLL
Definition webcface-config.h:69
#define WEBCFACE_NS_END
Definition webcface-config.h:118
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:117
#define WEBCFACE_CALL_FP
Definition webcface-config.h:107