WebCFace 3.2.0
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
canvas2d.h
Go to the documentation of this file.
1#pragma once
2#include <memory>
3#ifdef WEBCFACE_MESON
4#include "webcface-config.h"
5#else
6#include "webcface/common/webcface-config.h"
7#endif
8#include "field.h"
9#include "components.h"
10
12namespace internal {
13template <typename Component>
14class DataSetBuffer;
15class Canvas2DDataBuf;
16} // namespace internal
17
24class WEBCFACE_DLL Canvas2D : protected Field {
25 std::shared_ptr<internal::Canvas2DDataBuf> sb;
26
27 public:
28 Canvas2D();
29 Canvas2D(const Field &base);
30 Canvas2D(const Field &base, const SharedString &field)
31 : Canvas2D(Field{base, field}) {}
32 Canvas2D(const Field &base, const SharedString &field, double width,
33 double height)
34 : Canvas2D(Field{base, field}) {
35 init(width, height);
36 }
37
39
40 using Field::lastName;
41 using Field::lastNameW;
42 using Field::member;
43 using Field::name;
44 using Field::nameW;
52 return this->Field::child(static_cast<SharedString &>(field));
53 }
58 [[deprecated]]
59 Canvas2D child(int index) const {
60 return this->Field::child(std::to_string(index));
61 }
69 Canvas2D operator[](StringInitializer field) const { return child(std::move(field)); }
75 [[deprecated]]
76 Canvas2D operator[](int index) const {
77 return child(std::to_string(index));
78 }
83 Canvas2D parent() const { return this->Field::parent(); }
84
91 const Canvas2D &
92 onChange(std::function<void WEBCFACE_CALL_FP(Canvas2D)> callback) const;
99 template <typename F, typename std::enable_if_t<std::is_invocable_v<F>,
100 std::nullptr_t> = nullptr>
101 const Canvas2D &onChange(F callback) const {
102 return onChange(
103 [callback = std::move(callback)](const auto &) { callback(); });
104 }
105
111 const Canvas2D &request() const;
116 std::optional<std::vector<Canvas2DComponent>> tryGet() const;
121 std::vector<Canvas2DComponent> get() const {
122 return tryGet().value_or(std::vector<Canvas2DComponent>{});
123 }
132 bool exists() const;
133
138 const Canvas2D &free() const;
139
148 const Canvas2D &init(double width, double height) const;
149
158
167 template <typename T>
168 const Canvas2D &add(T &&cc) const {
169 *this << std::forward<T>(cc);
170 return *this;
171 }
177 template <bool V, bool C3>
179 *this << std::move(cc.component_2d);
180 return *this;
181 }
189 const Canvas2D &sync() const;
190
195 template <typename T, typename std::enable_if_t<std::is_same_v<T, Canvas2D>,
196 std::nullptr_t> = nullptr>
197 bool operator==(const T &other) const {
198 return static_cast<Field>(*this) == static_cast<Field>(other);
199 }
200 template <typename T, typename std::enable_if_t<std::is_same_v<T, Canvas2D>,
201 std::nullptr_t> = nullptr>
202 bool operator!=(const T &other) const {
203 return static_cast<Field>(*this) != static_cast<Field>(other);
204 }
205};
Canvas2Dの送受信データを表すクラス
Definition canvas2d.h:24
const Canvas2D & operator<<(TemporalComponent< V, true, C3 > cc) const
Geometryを追加
Definition canvas2d.h:178
bool operator==(const T &other) const
Canvas2Dの参照先を比較
Definition canvas2d.h:197
const Canvas2D & onChange(F callback) const
値が変化したときに呼び出されるコールバックを設定
Definition canvas2d.h:101
const Canvas2D & add(T &&cc) const
コンポーネントなどを追加
Definition canvas2d.h:168
Canvas2D operator[](StringInitializer field) const
Definition canvas2d.h:69
Canvas2D child(StringInitializer field) const
「(thisの名前).(追加の名前)」を新しい名前とするField
Definition canvas2d.h:51
bool operator!=(const T &other) const
Definition canvas2d.h:202
Canvas2D operator[](int index) const
Definition canvas2d.h:76
Canvas2D(const Field &base, const SharedString &field, double width, double height)
Definition canvas2d.h:32
std::vector< Canvas2DComponent > get() const
Canvasの内容を取得する
Definition canvas2d.h:121
Canvas2D(const Field &base, const SharedString &field)
Definition canvas2d.h:30
Canvas2D child(int index) const
Definition canvas2d.h:59
Canvas2D parent() const
nameの最後のピリオドの前までを新しい名前とするField
Definition canvas2d.h:83
u8stringとstringとwstringをshared_ptrで持ち共有する
Definition encoding.h:170
SharedString のpublicなコンストラクタインタフェース (入力専用)
Definition encoding.h:235
Definition component_canvas2d.h:148
View,Canvasなどで送信用にaddされたデータを管理する
Definition data_buffer.h:17
std::ostream & operator<<(std::ostream &os, const Arg &arg)
Definition func_info.cc:99
ClientDataの参照とメンバ名とデータ名を持つクラス
Definition field.h:68
Field parent() const
nameの最後のピリオドの前までを新しい名前とするField
Definition field.cc:39
Field child(const SharedString &field) const
Definition field.cc:48
Canvas2D, Canvas3D (, View) に要素をaddするときに使うインタフェース
Definition components.h:23
TemporalCanvas2DComponent component_2d
Definition components.h:25
#define WEBCFACE_DLL
Definition webcface-config.h:69
#define WEBCFACE_NS_END
Definition webcface-config.h:113
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:112
#define WEBCFACE_CALL_FP
Definition webcface-config.h:107