21template <
bool V,
bool C2,
bool C3>
28 template <
typename VT,
typename C2T,
typename C3T>
30 : component_v(v_type), component_2d(c2_type), component_3d(c3_type) {
33 static_assert(V == !std::is_same_v<VT, std::nullptr_t>);
34 static_assert(C2 == !std::is_same_v<C2T, std::nullptr_t>);
35 static_assert(C3 == !std::is_same_v<C3T, std::nullptr_t>);
65 return std::move(*
this);
88 return std::move(*
this);
100 static_assert(V || C2,
101 "onClick can be set only for View, Canvas2D components");
116 return std::move(*
this);
127 static_assert(V || C2,
128 "onClick can be set only for View, Canvas2D components");
142 return std::move(*
this);
152 template <
typename T,
typename std::enable_if_t<std::is_invocable_v<T>,
153 std::
nullptr_t> =
nullptr>
155 static_assert(V || C2,
156 "onClick can be set only for View, Canvas2D components");
161 component_v.
onClick(func_shared);
164 component_2d.
onClick(func_shared);
171 template <
typename T,
typename std::enable_if_t<std::is_invocable_v<T>,
172 std::
nullptr_t> =
nullptr>
174 this->onClick(std::move(func));
175 return std::move(*
this);
184 "origin can be set only for Canvas2D, Canvas3D components");
186 component_2d.
origin(origin);
189 component_3d.
origin(origin);
197 this->origin(origin);
198 return std::move(*
this);
210 component_2d.
color(c);
213 component_3d.
color(c);
222 return std::move(*
this);
229 static_assert(V || C2,
230 "text can be set only for View, Canvas2D components");
232 component_v.
text(str);
235 component_2d.
text(str);
244 return std::move(*
this);
251 static_assert(V || C2,
252 "text can be set only for View, Canvas2D components");
254 component_v.
text(str);
257 component_2d.
text(str);
266 return std::move(*
this);
275 V || C2,
"textColor can be set only for View, Canvas2D components");
289 return std::move(*
this);
297 V || C2,
"fillColor can be set only for View, Canvas2D components");
311 return std::move(*
this);
318 static_assert(V || C2,
319 "bgColor can be set only for View, Canvas2D components");
327 return std::move(*
this);
336 "strokeWidth can be set only for Canvas2D components");
346 this->strokeWidth(s);
347 return std::move(*
this);
354 static_assert(C2,
"textSize can be set only for Canvas2D components");
365 return std::move(*
this);
373 static_assert(V,
"width can be set only for View components");
375 component_v.
width(width);
385 return std::move(*
this);
392 static_assert(V,
"height can be set only for View components");
394 component_v.
height(height);
403 this->height(height);
404 return std::move(*
this);
413 Geometry(type, std::move(properties)) {
414 this->component_2d.geometry(
static_cast<Geometry &
>(*
this));
415 this->component_3d.geometry(
static_cast<Geometry &
>(*
this));
419inline namespace components {
420inline namespace geometries {
426 throw std::invalid_argument(
"number of properties does not match");
440 {begin.
pos()[0], begin.
pos()[1], begin.
pos()[2],
441 end.
pos()[0], end.
pos()[1], end.
pos()[2]});
446 if (base.
properties.size() % 3 != 0 || size() == 0) {
447 throw std::invalid_argument(
"number of properties does not match");
453 throw std::out_of_range(
"Polygon::at(" + std::to_string(i) +
454 "), size = " + std::to_string(size()));
462 std::vector<double> properties;
463 properties.reserve(points.size() * 3);
464 for (
const auto &p : points) {
465 properties.push_back(p.pos(0));
466 properties.push_back(p.pos(1));
467 properties.push_back(p.pos(2));
475 throw std::invalid_argument(
"number of properties does not match");
502 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2],
504 origin.
rotEuler()[2], width, height});
509 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2],
510 0, 0, 0, width, height}};
514 for (
int i = 0; i < 2; i++) {
515 origin.
pos(i) = (p1.
pos(i) + p2.
pos(i)) / 2;
517 double width = std::abs(p1.
pos(0) - p2.
pos(0));
518 double height = std::abs(p1.
pos(0) - p2.
pos(0));
520 {origin.
pos(0), origin.
pos(1), origin.
pos(2),
522 origin.
rotEuler()[2], width, height}};
529 throw std::invalid_argument(
"number of properties does not match");
543 {vertex1.
pos()[0], vertex1.
pos()[1],
544 vertex1.
pos()[2], vertex2.
pos()[0],
545 vertex2.
pos()[1], vertex2.
pos()[2]}};
552 throw std::invalid_argument(
"number of properties does not match");
565 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2],
571 GeometryType::circle,
572 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2], 0, 0, 0, radius}};
579 throw std::invalid_argument(
"number of properties does not match");
594 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2],
596 origin.
rotEuler()[2], radius, length}};
603 throw std::invalid_argument(
"number of properties does not match");
614 GeometryType::sphere,
615 {origin.
pos()[0], origin.
pos()[1], origin.
pos()[2], radius}};
621namespace Geometries = geometries;
629 ViewComponentType::text, Canvas2DComponentType::text,
nullptr)
638 ViewComponentType::text, Canvas2DComponentType::text,
nullptr)
657 .
onClick(std::forward<T>(func));
667 .
onClick(std::forward<T>(func));
730namespace Components = components;
731namespace ViewComponents = components;
Canvas2Dの送受信データを表すクラス
Definition canvas2d.h:24
Canvas3Dの送受信データを表すクラス
Definition canvas3d.h:28
関数1つを表すクラス
Definition func.h:95
3次元 or 2次元の座標を表すクラス。
Definition transform.h:23
std::array< double, 3 > pos() const
3次元座標を取得
Definition transform.h:62
Definition component_canvas2d.h:139
TemporalCanvas2DComponent & onClick(const Func &func) &
クリック時に実行される関数を設定 (Funcオブジェクト)
Definition component_canvas2d.cc:181
TemporalCanvas2DComponent & strokeWidth(double s) &
線の太さ
Definition component_canvas2d.cc:129
TemporalCanvas2DComponent & color(const ViewColor &color) &
図形の輪郭の色
Definition component_canvas2d.cc:112
TemporalCanvas2DComponent & text(std::string_view text) &
表示する文字列を設定
Definition component_canvas2d.cc:138
TemporalCanvas2DComponent & textSize(double s) &
文字の大きさ(高さ)
Definition component_canvas2d.h:253
TemporalCanvas2DComponent & id(std::string_view id)
idを設定
Definition component_canvas2d.cc:83
TemporalCanvas2DComponent & origin(const Transform &origin) &
要素の移動・回転
Definition component_canvas2d.cc:102
TemporalCanvas2DComponent & fillColor(const ViewColor &color) &
塗りつぶし色
Definition component_canvas2d.cc:121
Canvas3Dを構築するときに使う一時的なCanvas3DComponent.
Definition component_canvas3d.h:119
TemporalCanvas3DComponent & color(ViewColor color) &
色
Definition component_canvas3d.cc:99
TemporalCanvas3DComponent & origin(const Transform &origin) &
要素の移動
Definition component_canvas3d.cc:90
TemporalCanvas3DComponent & id(std::string_view id)
idを設定
Definition component_canvas3d.cc:72
Definition components.h:408
TemporalGeometry(GeometryType type, std::vector< double > &&properties)
Definition components.h:410
Viewを構築するときに使う一時的なViewComponent.
Definition component_view.h:286
TemporalViewComponent & id(std::string_view id)
idを設定
Definition component_view.cc:250
TemporalViewComponent & text(std::string_view text) &
表示する文字列を設定
Definition component_view.cc:266
TemporalViewComponent & height(int height) &
要素の高さを設定する。
Definition component_view.cc:407
TemporalViewComponent & init(const T &init) &
デフォルト値を設定する。
Definition component_view.h:509
TemporalViewComponent & bgColor(ViewColor c) &
背景色を設定
Definition component_view.cc:350
TemporalViewComponent & width(int width) &
要素の幅を設定する。
Definition component_view.cc:399
TemporalViewComponent & textColor(ViewColor c) &
文字色を設定
Definition component_view.cc:342
TemporalViewComponent & onClick(const Func &func) &
クリック時に実行される関数を設定 (登録済みFunc)
Definition component_view.cc:293
Viewの送受信データを表すクラス
Definition view.h:36
Viewの送信用データを保持する
Definition data_buffer.h:108
TemporalGeometry line(const Point &begin, const Point &end)
Definition components.h:438
TemporalGeometry rect(const Point &origin, double width, double height)
Definition components.h:507
TemporalGeometry circle(const Transform &origin, double radius)
Definition components.h:563
TemporalGeometry cylinder(const Transform &origin, double radius, double length)
Definition components.h:591
TemporalGeometry plane(const Transform &origin, double width, double height)
Definition components.h:499
TemporalGeometry polygon(const std::vector< Point > &points)
Definition components.h:461
TemporalGeometry box(const Point &vertex1, const Point &vertex2)
Definition components.h:541
TemporalGeometry sphere(const Point &origin, double radius)
Definition components.h:612
TemporalViewComponent toggleInput(std::string_view text="")
Definition components.h:696
TemporalViewComponent numberInput(std::string_view text="")
Definition components.h:686
TemporalViewComponent selectInput(std::string_view text="")
Definition components.h:702
TemporalViewComponent newLine()
newLineコンポーネント
Definition components.h:645
TemporalViewComponent button(std::string_view text, T &&func)
buttonコンポーネント
Definition components.h:654
TemporalViewComponent sliderInput(std::string_view text="")
Definition components.h:708
TemporalViewComponent checkInput(std::string_view text="")
Definition components.h:718
TemporalViewComponent textInput(std::string_view text="")
Definition components.h:670
TemporalViewComponent decimalInput(std::string_view text="")
Definition components.h:676
Canvas2DComponentType
Definition component_canvas2d.h:22
GeometryType
Canvas3Dと2Dで共用、図形の種類を表す
Definition geometry.h:15
ViewColor
Definition component_view.h:40
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
Canvas2D, Canvas3D (, View) に要素をaddするときに使うインタフェース
Definition components.h:22
TemporalComponent & onClick(T func) &
クリック時に実行される関数を設定 (Viewまたは2D)
Definition components.h:154
TemporalComponent && onClick(const Func &func) &&
Definition components.h:114
TemporalComponent & width(int width) &
要素の幅 (Viewのみ)
Definition components.h:372
TemporalComponent && fillColor(ViewColor c) &&
Definition components.h:309
TemporalComponent & strokeWidth(double s) &
線の太さ (2Dのみ)
Definition components.h:334
TemporalComponent && strokeWidth(double s) &&
Definition components.h:345
TemporalComponent & textColor(ViewColor c) &
文字色 (Viewまたは2D)
Definition components.h:273
TemporalComponent & color(ViewColor c) &
色
Definition components.h:205
TemporalComponent & id(std::wstring_view id) &
idを設定(wstring)
Definition components.h:71
TemporalComponent & height(int height) &
要素の高さ (Viewのみ)
Definition components.h:391
TemporalComponent && origin(const Transform &origin) &&
Definition components.h:196
TemporalComponent && bgColor(ViewColor c) &&
Definition components.h:325
TemporalComponent & origin(const Transform &origin) &
要素の移動 (2Dまたは3D)
Definition components.h:181
TemporalComponent && textColor(ViewColor c) &&
Definition components.h:287
TemporalComponent && text(std::string_view str) &&
Definition components.h:242
TemporalComponent()=default
TemporalComponent && id(std::wstring_view id) &&
Definition components.h:86
TemporalCanvas2DComponent component_2d
Definition components.h:24
TemporalComponent & bgColor(ViewColor c) &
背景色 (Viewまたは2D)
Definition components.h:317
TemporalComponent && width(int width) &&
要素の幅 (Viewのみ)
Definition components.h:383
TemporalComponent & textSize(double s) &
文字の大きさ (2Dのみ)
Definition components.h:353
TemporalCanvas3DComponent component_3d
Definition components.h:25
TemporalComponent & text(std::wstring_view str) &
表示する文字列(wstring) (View, Canvas2D)
Definition components.h:250
TemporalComponent & text(std::string_view str) &
表示する文字列 (View, Canvas2D)
Definition components.h:228
TemporalComponent & id(std::string_view id) &
idを設定
Definition components.h:48
TemporalViewComponent component_v
Definition components.h:23
TemporalComponent & fillColor(ViewColor c) &
背景色 (Viewまたは2D)
Definition components.h:295
TemporalComponent && textSize(double s) &&
Definition components.h:363
TemporalComponent & onClick(const FuncListener &func) &
クリック時に実行される関数を設定 (Viewまたは2D, FuncListener)
Definition components.h:126
TemporalComponent & onClick(const Func &func) &
クリック時に実行される関数を設定 (Viewまたは2D, Funcオブジェクト)
Definition components.h:99
TemporalComponent && id(std::string_view id) &&
Definition components.h:63
TemporalComponent && onClick(T func) &&
Definition components.h:173
TemporalComponent && onClick(const FuncListener &func) &&
Definition components.h:140
TemporalComponent && height(int height) &&
要素の高さ (Viewのみ)
Definition components.h:402
TemporalComponent && text(std::wstring_view str) &&
Definition components.h:264
TemporalComponent && color(ViewColor c) &&
Definition components.h:220
TemporalComponent(VT v_type, C2T c2_type, C3T c3_type)
Definition components.h:29
Definition components.h:525
const Geometry & base
Definition components.h:526
Box(const Geometry &rg)
Definition components.h:527
Point vertex2() const
Definition components.h:536
Point vertex1() const
Definition components.h:532
Definition components.h:548
const Geometry & base
Definition components.h:549
Circle(const Geometry &rg)
Definition components.h:550
double radius() const
Definition components.h:561
Transform origin() const
Definition components.h:555
Definition components.h:575
const Geometry & base
Definition components.h:576
double radius() const
Definition components.h:588
double length() const
Definition components.h:589
Cylinder(const Geometry &rg)
Definition components.h:577
Transform origin() const
Definition components.h:582
Definition components.h:422
const Geometry & base
Definition components.h:423
Point end() const
Definition components.h:433
Line(const Geometry &rg)
Definition components.h:424
Point begin() const
Definition components.h:429
Definition components.h:471
const Geometry & base
Definition components.h:472
double width() const
Definition components.h:484
double height() const
Definition components.h:485
Transform origin() const
Definition components.h:478
Point vertex2() const
Definition components.h:494
Plane(const Geometry &rg)
Definition components.h:473
Point vertex1() const
Definition components.h:490
Definition components.h:443
const Geometry & base
Definition components.h:444
Point at(std::size_t i) const
Definition components.h:451
Point operator[](std::size_t i) const
Definition components.h:459
Polygon(const Geometry &rg)
Definition components.h:445
std::size_t size() const
Definition components.h:450
Definition components.h:599
const Geometry & base
Definition components.h:600
double radius() const
Definition components.h:610
Point origin() const
Definition components.h:606
Sphere(const Geometry &rg)
Definition components.h:601
#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