22template <
bool V,
bool C2,
bool C3>
29 template <
typename VT,
typename C2T,
typename C3T>
31 : component_v(v_type), component_2d(c2_type), component_3d(c3_type) {
34 static_assert(V == !std::is_same_v<VT, std::nullptr_t>);
35 static_assert(C2 == !std::is_same_v<C2T, std::nullptr_t>);
36 static_assert(C3 == !std::is_same_v<C3T, std::nullptr_t>);
68 return std::move(*
this);
80 static_assert(V || C2,
81 "onClick can be set only for View, Canvas2D components");
96 return std::move(*
this);
107 static_assert(V || C2,
108 "onClick can be set only for View, Canvas2D components");
122 return std::move(*
this);
132 template <
typename T,
typename std::enable_if_t<std::is_invocable_v<T>,
133 std::
nullptr_t> =
nullptr>
135 static_assert(V || C2,
136 "onClick can be set only for View, Canvas2D components");
141 component_v.
onClick(func_shared);
144 component_2d.
onClick(func_shared);
151 template <
typename T,
typename std::enable_if_t<std::is_invocable_v<T>,
152 std::
nullptr_t> =
nullptr>
154 this->onClick(std::move(func));
155 return std::move(*
this);
164 "origin can be set only for Canvas2D, Canvas3D components");
166 component_2d.
origin(origin);
169 component_3d.
origin(origin);
177 this->origin(origin);
178 return std::move(*
this);
190 component_2d.
color(c);
193 component_3d.
color(c);
202 return std::move(*
this);
212 static_assert(V || C2,
213 "text can be set only for View, Canvas2D components");
215 component_v.
text(str);
218 component_2d.
text(str);
230 return std::move(*
this);
239 V || C2,
"textColor can be set only for View, Canvas2D components");
253 return std::move(*
this);
261 V || C2,
"fillColor can be set only for View, Canvas2D components");
275 return std::move(*
this);
282 static_assert(V || C2,
283 "bgColor can be set only for View, Canvas2D components");
291 return std::move(*
this);
300 "strokeWidth can be set only for Canvas2D components");
310 this->strokeWidth(s);
311 return std::move(*
this);
318 static_assert(C2,
"textSize can be set only for Canvas2D components");
329 return std::move(*
this);
337 static_assert(V,
"width can be set only for View components");
339 component_v.
width(width);
349 return std::move(*
this);
356 static_assert(V,
"height can be set only for View components");
358 component_v.
height(height);
367 this->height(height);
368 return std::move(*
this);
377 Geometry(type, std::move(properties)) {
378 this->component_2d.geometry(
static_cast<Geometry &
>(*
this));
379 this->component_3d.geometry(
static_cast<Geometry &
>(*
this));
383inline namespace components {
384inline namespace geometries {
391 "properties for Line, got " +
406 {begin.
pos()[0], begin.
pos()[1], begin.
pos()[2],
407 end.
pos()[0], end.
pos()[1], end.
pos()[2]});
412 if (base.
properties.size() % 3 != 0 || size() == 0) {
414 "properties multiple of 3 for Polygon, got " +
421 throw OutOfRange(
"Polygon::at(" + std::to_string(i) +
422 "), size = " + std::to_string(size()));
430 std::vector<double> properties;
431 properties.reserve(points.size() * 3);
432 for (
const auto &p : points) {
433 properties.push_back(p.pos(0));
434 properties.push_back(p.pos(1));
435 properties.push_back(p.pos(2));
444 "properties for Plane, got " +
472 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2],
474 origin.
rotEuler()[2], width, height});
479 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2],
480 0, 0, 0, width, height}};
484 for (
int i = 0; i < 2; i++) {
485 origin.
pos(i) = (p1.
pos(i) + p2.
pos(i)) / 2;
487 double width = std::abs(p1.
pos(0) - p2.
pos(0));
488 double height = std::abs(p1.
pos(0) - p2.
pos(0));
490 {origin.
pos(0), origin.
pos(1), origin.
pos(2),
492 origin.
rotEuler()[2], width, height}};
500 "properties for Box, got " +
515 {vertex1.
pos()[0], vertex1.
pos()[1],
516 vertex1.
pos()[2], vertex2.
pos()[0],
517 vertex2.
pos()[1], vertex2.
pos()[2]}};
525 "properties for Circle, got " +
539 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2],
545 GeometryType::circle,
546 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2], 0, 0, 0, radius}};
554 "properties for Cylinder, got " +
570 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2],
572 origin.
rotEuler()[2], radius, length}};
580 "properties for Sphere, got " +
592 GeometryType::sphere,
593 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2], radius}};
599namespace Geometries = geometries;
609 ViewComponentType::text, Canvas2DComponentType::text,
nullptr)
630 .
onClick(std::forward<T>(func));
640 .
onClick(std::forward<T>(func));
644 return TemporalViewComponent(ViewComponentType::text_input).
text(text);
647 return TemporalViewComponent(ViewComponentType::decimal_input)
652 return TemporalViewComponent(ViewComponentType::number_input)
657 return TemporalViewComponent(ViewComponentType::toggle_input).
text(text);
660 return TemporalViewComponent(ViewComponentType::select_input).
text(text);
663 return TemporalViewComponent(ViewComponentType::slider_input)
668 return TemporalViewComponent(ViewComponentType::check_input)
674namespace Components = components;
675namespace ViewComponents = components;
Canvas2Dの送受信データを表すクラス
Definition canvas2d.h:24
Canvas3Dの送受信データを表すクラス
Definition canvas3d.h:28
関数1つを表すクラス
Definition func.h:106
3次元 or 2次元の座標を表すクラス。
Definition transform.h:23
std::array< double, 3 > pos() const
3次元座標を取得
Definition transform.h:62
SharedString のpublicなコンストラクタインタフェース (入力専用)
Definition encoding.h:215
Definition component_canvas2d.h:148
TemporalCanvas2DComponent & onClick(const Func &func) &
クリック時に実行される関数を設定 (Funcオブジェクト)
Definition component_canvas2d.cc:172
TemporalCanvas2DComponent & strokeWidth(double s) &
線の太さ
Definition component_canvas2d.cc:126
TemporalCanvas2DComponent & text(StringInitializer text) &
表示する文字列を設定
Definition component_canvas2d.cc:138
TemporalCanvas2DComponent & color(const ViewColor &color) &
図形の輪郭の色
Definition component_canvas2d.cc:109
TemporalCanvas2DComponent & id(StringInitializer id)
idを設定
Definition component_canvas2d.cc:84
TemporalCanvas2DComponent & textSize(double s) &
文字の大きさ(高さ)
Definition component_canvas2d.h:260
TemporalCanvas2DComponent & origin(const Transform &origin) &
要素の移動・回転
Definition component_canvas2d.cc:99
TemporalCanvas2DComponent & fillColor(const ViewColor &color) &
塗りつぶし色
Definition component_canvas2d.cc:118
Canvas3Dを構築するときに使う一時的なCanvas3DComponent.
Definition component_canvas3d.h:121
TemporalCanvas3DComponent & color(ViewColor color) &
色
Definition component_canvas3d.cc:97
TemporalCanvas3DComponent & origin(const Transform &origin) &
要素の移動
Definition component_canvas3d.cc:88
TemporalCanvas3DComponent & id(StringInitializer id)
idを設定
Definition component_canvas3d.cc:74
Definition components.h:372
TemporalGeometry(GeometryType type, std::vector< double > &&properties)
Definition components.h:374
Viewを構築するときに使う一時的なViewComponent.
Definition component_view.h:292
TemporalViewComponent & text(StringInitializer text) &
表示する文字列を設定
Definition component_view.cc:268
TemporalViewComponent & height(int height) &
要素の高さを設定する。
Definition component_view.cc:405
TemporalViewComponent & init(const T &init) &
デフォルト値を設定する。
Definition component_view.h:507
TemporalViewComponent & bgColor(ViewColor c) &
背景色を設定
Definition component_view.cc:348
TemporalViewComponent & width(int width) &
要素の幅を設定する。
Definition component_view.cc:397
TemporalViewComponent & textColor(ViewColor c) &
文字色を設定
Definition component_view.cc:340
TemporalViewComponent & onClick(const Func &func) &
クリック時に実行される関数を設定 (登録済みFunc)
Definition component_view.cc:291
TemporalViewComponent & id(StringInitializer id)
idを設定
Definition component_view.cc:256
Viewの送受信データを表すクラス
Definition view.h:36
Viewの送信用データを保持する
Definition data_buffer.h:108
TemporalGeometry line(const Point &begin, const Point &end)
Definition components.h:404
TemporalGeometry rect(const Point &origin, double width, double height)
Definition components.h:477
TemporalGeometry circle(const Transform &origin, double radius)
Definition components.h:537
TemporalGeometry cylinder(const Transform &origin, double radius, double length)
Definition components.h:567
TemporalGeometry plane(const Transform &origin, double width, double height)
Definition components.h:469
TemporalGeometry polygon(const std::vector< Point > &points)
Definition components.h:429
TemporalGeometry box(const Point &vertex1, const Point &vertex2)
Definition components.h:513
TemporalGeometry sphere(const Point &origin, double radius)
Definition components.h:590
TemporalViewComponent toggleInput(const StringInitializer &text={})
Definition components.h:656
TemporalViewComponent button(const StringInitializer &text, T &&func)
buttonコンポーネント
Definition components.h:627
TemporalViewComponent selectInput(const StringInitializer &text={})
Definition components.h:659
TemporalViewComponent numberInput(const StringInitializer &text={})
Definition components.h:651
TemporalViewComponent checkInput(const StringInitializer &text={})
Definition components.h:667
TemporalViewComponent newLine()
newLineコンポーネント
Definition components.h:616
TemporalViewComponent decimalInput(const StringInitializer &text={})
Definition components.h:646
TemporalViewComponent textInput(const StringInitializer &text={})
Definition components.h:643
TemporalViewComponent sliderInput(const StringInitializer &text={})
Definition components.h:662
Canvas2DComponentType
Definition component_canvas2d.h:22
GeometryType
Canvas3Dと2Dで共用、図形の種類を表す
Definition geometry.h:15
ViewColor
Definition component_view.h:41
Rotation rotFromEuler(const std::array< double, 3 > &rot, AxisSequence axis=AxisSequence::ZYX)
回転をオイラー角から初期化
Definition transform.h:519
Transform identity()
移動なし、回転なしのTransform
Definition transform.h:831
Canvas3DComponentType
Definition component_canvas3d.h:20
std::vector< double > properties
Definition geometry.h:28
その他のパラメーターエラー
Definition exception.h:89
その他のパラメーターエラー
Definition exception.h:98
Canvas2D, Canvas3D (, View) に要素をaddするときに使うインタフェース
Definition components.h:23
TemporalComponent & onClick(T func) &
クリック時に実行される関数を設定 (Viewまたは2D)
Definition components.h:134
TemporalComponent && onClick(const Func &func) &&
Definition components.h:94
TemporalComponent & width(int width) &
要素の幅 (Viewのみ)
Definition components.h:336
TemporalComponent && fillColor(ViewColor c) &&
Definition components.h:273
TemporalComponent && id(const StringInitializer &id) &&
Definition components.h:66
TemporalComponent & strokeWidth(double s) &
線の太さ (2Dのみ)
Definition components.h:298
TemporalComponent && strokeWidth(double s) &&
Definition components.h:309
TemporalComponent & id(const StringInitializer &id) &
idを設定
Definition components.h:51
TemporalComponent & textColor(ViewColor c) &
文字色 (Viewまたは2D)
Definition components.h:237
TemporalComponent & color(ViewColor c) &
色
Definition components.h:185
TemporalComponent & height(int height) &
要素の高さ (Viewのみ)
Definition components.h:355
TemporalComponent & text(const StringInitializer &str) &
表示する文字列 (View, Canvas2D)
Definition components.h:211
TemporalComponent && text(const StringInitializer &str) &&
Definition components.h:228
TemporalComponent && origin(const Transform &origin) &&
Definition components.h:176
TemporalComponent && bgColor(ViewColor c) &&
Definition components.h:289
TemporalComponent & origin(const Transform &origin) &
要素の移動 (2Dまたは3D)
Definition components.h:161
TemporalComponent && textColor(ViewColor c) &&
Definition components.h:251
TemporalComponent()=default
TemporalCanvas2DComponent component_2d
Definition components.h:25
TemporalComponent & bgColor(ViewColor c) &
背景色 (Viewまたは2D)
Definition components.h:281
TemporalComponent && width(int width) &&
要素の幅 (Viewのみ)
Definition components.h:347
TemporalComponent & textSize(double s) &
文字の大きさ (2Dのみ)
Definition components.h:317
TemporalCanvas3DComponent component_3d
Definition components.h:26
TemporalViewComponent component_v
Definition components.h:24
TemporalComponent & fillColor(ViewColor c) &
背景色 (Viewまたは2D)
Definition components.h:259
TemporalComponent && textSize(double s) &&
Definition components.h:327
TemporalComponent & onClick(const FuncListener &func) &
クリック時に実行される関数を設定 (Viewまたは2D, FuncListener)
Definition components.h:106
TemporalComponent & onClick(const Func &func) &
クリック時に実行される関数を設定 (Viewまたは2D, Funcオブジェクト)
Definition components.h:79
TemporalComponent && onClick(T func) &&
Definition components.h:153
TemporalComponent && onClick(const FuncListener &func) &&
Definition components.h:120
TemporalComponent && height(int height) &&
要素の高さ (Viewのみ)
Definition components.h:366
TemporalComponent && color(ViewColor c) &&
Definition components.h:200
TemporalComponent(VT v_type, C2T c2_type, C3T c3_type)
Definition components.h:30
Definition components.h:495
const Geometry & base
Definition components.h:496
Box(const Geometry &rg)
Definition components.h:497
Point vertex2() const
Definition components.h:508
Point vertex1() const
Definition components.h:504
Definition components.h:520
const Geometry & base
Definition components.h:521
Circle(const Geometry &rg)
Definition components.h:522
double radius() const
Definition components.h:535
Transform origin() const
Definition components.h:529
Definition components.h:549
const Geometry & base
Definition components.h:550
double radius() const
Definition components.h:564
double length() const
Definition components.h:565
Cylinder(const Geometry &rg)
Definition components.h:551
Transform origin() const
Definition components.h:558
Definition components.h:386
const Geometry & base
Definition components.h:387
Point end() const
Definition components.h:399
Line(const Geometry &rg)
Definition components.h:388
Point begin() const
Definition components.h:395
Definition components.h:439
const Geometry & base
Definition components.h:440
double width() const
Definition components.h:454
double height() const
Definition components.h:455
Transform origin() const
Definition components.h:448
Point vertex2() const
Definition components.h:464
Plane(const Geometry &rg)
Definition components.h:441
Point vertex1() const
Definition components.h:460
Definition components.h:409
const Geometry & base
Definition components.h:410
Point at(std::size_t i) const
Definition components.h:419
Point operator[](std::size_t i) const
Definition components.h:427
Polygon(const Geometry &rg)
Definition components.h:411
std::size_t size() const
Definition components.h:418
Definition components.h:575
const Geometry & base
Definition components.h:576
double radius() const
Definition components.h:588
Point origin() const
Definition components.h:584
Sphere(const Geometry &rg)
Definition components.h:577
#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