WebCFace 2.5.2
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
components.h
Go to the documentation of this file.
1#pragma once
2#include "component_view.h"
5
7
8namespace internal {
9class ViewBuf;
10}
11
21template <bool V, bool C2, bool C3>
26
27 TemporalComponent() = default;
28 template <typename VT, typename C2T, typename C3T>
29 TemporalComponent(VT v_type, C2T c2_type, C3T c3_type)
30 : component_v(v_type), component_2d(c2_type), component_3d(c3_type) {
31 // V, C2, C3 がtrue <=> VT, C2T, C3T にnullptrでない値を渡して初期化する
32 // V, C2, C3 がfalse <=> VT, C2T, C3T にnullptrを渡す
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>);
36 }
37
38 friend class Func;
39 friend class Canvas2D;
40 friend class Canvas3D;
41 friend class View;
42 friend class internal::ViewBuf;
43
48 TemporalComponent &id(std::string_view id) & {
49 if constexpr (V) {
50 component_v.id(id);
51 }
52 if constexpr (C2) {
53 component_2d.id(id);
54 }
55 if constexpr (C3) {
56 component_3d.id(id);
57 }
58 return *this;
59 }
63 TemporalComponent &&id(std::string_view id) && {
64 this->id(id);
65 return std::move(*this);
66 }
71 TemporalComponent &id(std::wstring_view id) & {
72 if constexpr (V) {
73 component_v.id(id);
74 }
75 if constexpr (C2) {
76 component_2d.id(id);
77 }
78 if constexpr (C3) {
79 component_3d.id(id);
80 }
81 return *this;
82 }
86 TemporalComponent &&id(std::wstring_view id) && {
87 this->id(id);
88 return std::move(*this);
89 }
90
99 TemporalComponent &onClick(const Func &func) & {
100 static_assert(V || C2,
101 "onClick can be set only for View, Canvas2D components");
102 if constexpr (V) {
103 component_v.onClick(func);
104 }
105 if constexpr (C2) {
106 component_2d.onClick(func);
107 }
108 return *this;
109 }
110
114 TemporalComponent &&onClick(const Func &func) && {
115 this->onClick(func);
116 return std::move(*this);
117 }
127 static_assert(V || C2,
128 "onClick can be set only for View, Canvas2D components");
129 if constexpr (V) {
130 component_v.onClick(func);
131 }
132 if constexpr (C2) {
133 component_2d.onClick(func);
134 }
135 return *this;
136 }
141 this->onClick(func);
142 return std::move(*this);
143 }
144
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");
157 auto func_shared =
158 std::make_shared<std::function<void WEBCFACE_CALL_FP()>>(
159 std::move(func));
160 if constexpr (V) {
161 component_v.onClick(func_shared);
162 }
163 if constexpr (C2) {
164 component_2d.onClick(func_shared);
165 }
166 return *this;
167 }
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);
176 }
182 static_assert(
183 C2 || C3,
184 "origin can be set only for Canvas2D, Canvas3D components");
185 if constexpr (C2) {
186 component_2d.origin(origin);
187 }
188 if constexpr (C3) {
189 component_3d.origin(origin);
190 }
191 return *this;
192 }
196 TemporalComponent &&origin(const Transform &origin) && {
197 this->origin(origin);
198 return std::move(*this);
199 }
206 if constexpr (V) {
207 component_v.textColor(c);
208 }
209 if constexpr (C2) {
210 component_2d.color(c);
211 }
212 if constexpr (C3) {
213 component_3d.color(c);
214 }
215 return *this;
216 }
221 this->color(c);
222 return std::move(*this);
223 }
228 TemporalComponent &text(std::string_view str) & {
229 static_assert(V || C2,
230 "text can be set only for View, Canvas2D components");
231 if constexpr (V) {
232 component_v.text(str);
233 }
234 if constexpr (C2) {
235 component_2d.text(str);
236 }
237 return *this;
238 }
242 TemporalComponent &&text(std::string_view str) && {
243 this->text(str);
244 return std::move(*this);
245 }
250 TemporalComponent &text(std::wstring_view str) & {
251 static_assert(V || C2,
252 "text can be set only for View, Canvas2D components");
253 if constexpr (V) {
254 component_v.text(str);
255 }
256 if constexpr (C2) {
257 component_2d.text(str);
258 }
259 return *this;
260 }
264 TemporalComponent &&text(std::wstring_view str) && {
265 this->text(str);
266 return std::move(*this);
267 }
274 static_assert(
275 V || C2, "textColor can be set only for View, Canvas2D components");
276 if constexpr (V) {
277 component_v.textColor(c);
278 }
279 if constexpr (C2) {
280 component_2d.fillColor(c);
281 }
282 return *this;
283 }
288 this->textColor(c);
289 return std::move(*this);
290 }
296 static_assert(
297 V || C2, "fillColor can be set only for View, Canvas2D components");
298 if constexpr (V) {
299 component_v.bgColor(c);
300 }
301 if constexpr (C2) {
302 component_2d.fillColor(c);
303 }
304 return *this;
305 }
310 this->fillColor(c);
311 return std::move(*this);
312 }
318 static_assert(V || C2,
319 "bgColor can be set only for View, Canvas2D components");
320 return fillColor(c);
321 }
326 this->bgColor(c);
327 return std::move(*this);
328 }
335 static_assert(C2,
336 "strokeWidth can be set only for Canvas2D components");
337 if constexpr (C2) {
338 component_2d.strokeWidth(s);
339 }
340 return *this;
341 }
346 this->strokeWidth(s);
347 return std::move(*this);
348 }
354 static_assert(C2, "textSize can be set only for Canvas2D components");
355 if constexpr (C2) {
356 component_2d.textSize(s);
357 }
358 return *this;
359 }
364 this->textSize(s);
365 return std::move(*this);
366 }
367};
368class TemporalGeometry : public TemporalComponent<false, true, true>,
369 public Geometry {
370 public:
371 TemporalGeometry(GeometryType type, std::vector<double> &&properties)
374 Geometry(type, std::move(properties)) {
375 this->component_2d.geometry(static_cast<Geometry &>(*this));
376 this->component_3d.geometry(static_cast<Geometry &>(*this));
377 }
378};
379
380inline namespace components {
381inline namespace geometries {
382
383struct Line {
385 explicit Line(const Geometry &rg) : base(rg) {
386 if (base.properties.size() != 6) {
387 throw std::invalid_argument("number of properties does not match");
388 }
389 }
390 Point begin() const {
391 return Point{base.properties[0], base.properties[1],
392 base.properties[2]};
393 }
394 Point end() const {
395 return Point{base.properties[3], base.properties[4],
396 base.properties[5]};
397 }
398};
399inline TemporalGeometry line(const Point &begin, const Point &end) {
400 return TemporalGeometry(GeometryType::line,
401 {begin.pos()[0], begin.pos()[1], begin.pos()[2],
402 end.pos()[0], end.pos()[1], end.pos()[2]});
403}
404struct Polygon {
406 explicit Polygon(const Geometry &rg) : base(rg) {
407 if (base.properties.size() % 3 != 0 || size() == 0) {
408 throw std::invalid_argument("number of properties does not match");
409 }
410 }
411 std::size_t size() const { return base.properties.size() / 3; }
412 Point at(std::size_t i) const {
413 if (i >= size()) {
414 throw std::out_of_range("Polygon::at(" + std::to_string(i) +
415 "), size = " + std::to_string(size()));
416 }
417 return Point{base.properties[i * 3 + 0], base.properties[i * 3 + 1],
418 base.properties[i * 3 + 2]};
419 }
420 Point operator[](std::size_t i) const { return at(i); }
421};
422inline TemporalGeometry polygon(const std::vector<Point> &points) {
423 std::vector<double> properties;
424 properties.reserve(points.size() * 3);
425 for (const auto &p : points) {
426 properties.push_back(p.pos(0));
427 properties.push_back(p.pos(1));
428 properties.push_back(p.pos(2));
429 }
430 return TemporalGeometry(GeometryType::polygon, std::move(properties));
431}
432struct Plane {
434 explicit Plane(const Geometry &rg) : base(rg) {
435 if (base.properties.size() != 8) {
436 throw std::invalid_argument("number of properties does not match");
437 }
438 }
440 return Transform(
441 {base.properties[0], base.properties[1], base.properties[2]},
442 rotFromEuler(base.properties[3], base.properties[4],
443 base.properties[5]));
444 }
445 double width() const { return base.properties[6]; }
446 double height() const { return base.properties[7]; }
451 Point vertex1() const {
452 return {base.properties[0] - width() / 2,
453 base.properties[1] - height() / 2, base.properties[2]};
454 }
455 Point vertex2() const {
456 return {base.properties[0] + width() / 2,
457 base.properties[1] + height() / 2, base.properties[2]};
458 }
459};
460inline TemporalGeometry plane(const Transform &origin, double width,
461 double height) {
462 return TemporalGeometry(GeometryType::plane,
463 {origin.pos()[0], origin.pos()[1], origin.pos()[2],
464 origin.rotEuler()[0], origin.rotEuler()[1],
465 origin.rotEuler()[2], width, height});
466}
467using Rect = Plane;
468inline TemporalGeometry rect(const Point &origin, double width, double height) {
469 return TemporalGeometry{GeometryType::plane,
470 {origin.pos()[0], origin.pos()[1], origin.pos()[2],
471 0, 0, 0, width, height}};
472}
473inline TemporalGeometry rect(const Point &p1, const Point &p2) {
474 Transform origin = identity();
475 for (int i = 0; i < 2; i++) {
476 origin.pos(i) = (p1.pos(i) + p2.pos(i)) / 2;
477 }
478 double width = std::abs(p1.pos(0) - p2.pos(0));
479 double height = std::abs(p1.pos(0) - p2.pos(0));
480 return TemporalGeometry{GeometryType::plane,
481 {origin.pos(0), origin.pos(1), origin.pos(2),
482 origin.rotEuler()[0], origin.rotEuler()[1],
483 origin.rotEuler()[2], width, height}};
484}
485
486struct Box {
488 explicit Box(const Geometry &rg) : base(rg) {
489 if (base.properties.size() != 6) {
490 throw std::invalid_argument("number of properties does not match");
491 }
492 }
493 Point vertex1() const {
494 return Point{base.properties[0], base.properties[1],
495 base.properties[2]};
496 }
497 Point vertex2() const {
498 return Point{base.properties[3], base.properties[4],
499 base.properties[5]};
500 }
501};
502inline TemporalGeometry box(const Point &vertex1, const Point &vertex2) {
503 return TemporalGeometry{GeometryType::box,
504 {vertex1.pos()[0], vertex1.pos()[1],
505 vertex1.pos()[2], vertex2.pos()[0],
506 vertex2.pos()[1], vertex2.pos()[2]}};
507}
508
509struct Circle {
511 explicit Circle(const Geometry &rg) : base(rg) {
512 if (base.properties.size() != 7) {
513 throw std::invalid_argument("number of properties does not match");
514 }
515 }
517 return Transform(
518 {base.properties[0], base.properties[1], base.properties[2]},
519 rotFromEuler(base.properties[3], base.properties[4],
520 base.properties[5]));
521 }
522 double radius() const { return base.properties[6]; }
523};
524inline TemporalGeometry circle(const Transform &origin, double radius) {
525 return TemporalGeometry{GeometryType::circle,
526 {origin.pos()[0], origin.pos()[1], origin.pos()[2],
527 origin.rotEuler()[0], origin.rotEuler()[1],
528 origin.rotEuler()[2], radius}};
529}
530inline TemporalGeometry circle(const Point &origin, double radius) {
531 return TemporalGeometry{
532 GeometryType::circle,
533 {origin.pos()[0], origin.pos()[1], origin.pos()[2], 0, 0, 0, radius}};
534}
535
536struct Cylinder {
538 explicit Cylinder(const Geometry &rg) : base(rg) {
539 if (base.properties.size() != 8) {
540 throw std::invalid_argument("number of properties does not match");
541 }
542 }
544 return Transform(
545 {base.properties[0], base.properties[1], base.properties[2]},
546 rotFromEuler(base.properties[3], base.properties[4],
547 base.properties[5]));
548 }
549 double radius() const { return base.properties[6]; }
550 double length() const { return base.properties[7]; }
551};
552inline TemporalGeometry cylinder(const Transform &origin, double radius,
553 double length) {
554 return TemporalGeometry{GeometryType::cylinder,
555 {origin.pos()[0], origin.pos()[1], origin.pos()[2],
556 origin.rotEuler()[0], origin.rotEuler()[1],
557 origin.rotEuler()[2], radius, length}};
558}
559
560struct Sphere {
562 explicit Sphere(const Geometry &rg) : base(rg) {
563 if (base.properties.size() != 4) {
564 throw std::invalid_argument("number of properties does not match");
565 }
566 }
567 Point origin() const {
568 return Point{base.properties[0], base.properties[1],
569 base.properties[2]};
570 }
571 double radius() const { return base.properties[3]; }
572};
573inline TemporalGeometry sphere(const Point &origin, double radius) {
574 return TemporalGeometry{
575 GeometryType::sphere,
576 {origin.pos()[0], origin.pos()[1], origin.pos()[2], radius}};
577}
578
579
580} // namespace geometries
581
582namespace Geometries = geometries; // 〜ver1.11
583
588inline TemporalComponent<true, true, false> text(std::string_view text) {
590 ViewComponentType::text, Canvas2DComponentType::text, nullptr)
591 .text(text);
592}
597inline TemporalComponent<true, true, false> text(std::wstring_view text) {
599 ViewComponentType::text, Canvas2DComponentType::text, nullptr)
600 .text(text);
601}
607 return TemporalViewComponent(ViewComponentType::new_line);
608}
609
614template <typename T>
615inline TemporalViewComponent button(std::string_view text, T &&func) {
616 return TemporalViewComponent(ViewComponentType::button)
617 .text(text)
618 .onClick(std::forward<T>(func));
619}
624template <typename T>
625inline TemporalViewComponent button(std::wstring_view text, T &&func) {
626 return TemporalViewComponent(ViewComponentType::button)
627 .text(text)
628 .onClick(std::forward<T>(func));
629}
630
631inline TemporalViewComponent textInput(std::string_view text = "") {
632 return TemporalViewComponent(ViewComponentType::text_input).text(text);
633}
634inline TemporalViewComponent textInput(std::wstring_view text) {
635 return TemporalViewComponent(ViewComponentType::text_input).text(text);
636}
637inline TemporalViewComponent decimalInput(std::string_view text = "") {
638 return TemporalViewComponent(ViewComponentType::decimal_input)
639 .text(text)
640 .init(0);
641}
642inline TemporalViewComponent decimalInput(std::wstring_view text) {
643 return TemporalViewComponent(ViewComponentType::decimal_input)
644 .text(text)
645 .init(0);
646}
647inline TemporalViewComponent numberInput(std::string_view text = "") {
648 return TemporalViewComponent(ViewComponentType::number_input)
649 .text(text)
650 .init(0);
651}
652inline TemporalViewComponent numberInput(std::wstring_view text) {
653 return TemporalViewComponent(ViewComponentType::number_input)
654 .text(text)
655 .init(0);
656}
657inline TemporalViewComponent toggleInput(std::string_view text = "") {
658 return TemporalViewComponent(ViewComponentType::toggle_input).text(text);
659}
660inline TemporalViewComponent toggleInput(std::wstring_view text) {
661 return TemporalViewComponent(ViewComponentType::toggle_input).text(text);
662}
663inline TemporalViewComponent selectInput(std::string_view text = "") {
664 return TemporalViewComponent(ViewComponentType::select_input).text(text);
665}
666inline TemporalViewComponent selectInput(std::wstring_view text) {
667 return TemporalViewComponent(ViewComponentType::select_input).text(text);
668}
669inline TemporalViewComponent sliderInput(std::string_view text = "") {
670 return TemporalViewComponent(ViewComponentType::slider_input)
671 .text(text)
672 .init(0);
673}
674inline TemporalViewComponent sliderInput(std::wstring_view text) {
675 return TemporalViewComponent(ViewComponentType::slider_input)
676 .text(text)
677 .init(0);
678}
679inline TemporalViewComponent checkInput(std::string_view text = "") {
680 return TemporalViewComponent(ViewComponentType::check_input)
681 .text(text)
682 .init(false);
683}
684inline TemporalViewComponent checkInput(std::wstring_view text) {
685 return TemporalViewComponent(ViewComponentType::check_input)
686 .text(text)
687 .init(false);
688}
689} // namespace components
690
691namespace Components = components; // 〜ver1.11
692namespace ViewComponents = components; // 〜ver1.8
693
Canvas2Dの送受信データを表すクラス
Definition canvas2d.h:24
Canvas3Dの送受信データを表すクラス
Definition canvas3d.h:28
Definition func.h:590
関数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:137
TemporalCanvas2DComponent & onClick(const Func &func) &
クリック時に実行される関数を設定 (Funcオブジェクト)
Definition component_canvas2d.cc:181
TemporalCanvas2DComponent & strokeWidth(double s) &
線の太さ
Definition component_canvas2d.cc:131
TemporalCanvas2DComponent & color(const ViewColor &color) &
図形の輪郭の色
Definition component_canvas2d.cc:114
TemporalCanvas2DComponent & text(std::string_view text) &
表示する文字列を設定
Definition component_canvas2d.cc:140
TemporalCanvas2DComponent & textSize(double s) &
文字の大きさ(高さ)
Definition component_canvas2d.h:251
TemporalCanvas2DComponent & id(std::string_view id)
idを設定
Definition component_canvas2d.cc:85
TemporalCanvas2DComponent & origin(const Transform &origin) &
要素の移動・回転
Definition component_canvas2d.cc:104
TemporalCanvas2DComponent & fillColor(const ViewColor &color) &
塗りつぶし色
Definition component_canvas2d.cc:123
Canvas3Dを構築するときに使う一時的なCanvas3DComponent.
Definition component_canvas3d.h:116
TemporalCanvas3DComponent & color(ViewColor color) &
Definition component_canvas3d.cc:96
TemporalCanvas3DComponent & origin(const Transform &origin) &
要素の移動
Definition component_canvas3d.cc:87
TemporalCanvas3DComponent & id(std::string_view id)
idを設定
Definition component_canvas3d.cc:69
Definition components.h:369
TemporalGeometry(GeometryType type, std::vector< double > &&properties)
Definition components.h:371
Viewを構築するときに使う一時的なViewComponent.
Definition component_view.h:267
TemporalViewComponent & id(std::string_view id)
idを設定
Definition component_view.cc:250
TemporalViewComponent & text(std::string_view text) &
表示する文字列を設定
Definition component_view.cc:266
TemporalViewComponent & init(const T &init) &
デフォルト値を設定する。
Definition component_view.h:490
TemporalViewComponent & bgColor(ViewColor c) &
背景色を設定
Definition component_view.cc:340
TemporalViewComponent & textColor(ViewColor c) &
文字色を設定
Definition component_view.cc:332
TemporalViewComponent & onClick(const Func &func) &
クリック時に実行される関数を設定 (登録済みFunc)
Definition component_view.cc:286
3次元の平行移動と回転
Definition transform.h:615
std::array< double, 3 > pos() const
3次元座標を取得
Definition transform.h:62
std::array< double, 3 > rotEuler(AxisSequence axis=AxisSequence::ZYX) const
3次元の回転をオイラー角として取得
Definition transform.h:350
Viewの送受信データを表すクラス
Definition view.h:26
Viewの送信用データを保持する
Definition data_buffer.h:108
TemporalGeometry line(const Point &begin, const Point &end)
Definition components.h:399
TemporalGeometry rect(const Point &origin, double width, double height)
Definition components.h:468
TemporalGeometry circle(const Transform &origin, double radius)
Definition components.h:524
TemporalGeometry cylinder(const Transform &origin, double radius, double length)
Definition components.h:552
TemporalGeometry plane(const Transform &origin, double width, double height)
Definition components.h:460
TemporalGeometry polygon(const std::vector< Point > &points)
Definition components.h:422
TemporalGeometry box(const Point &vertex1, const Point &vertex2)
Definition components.h:502
TemporalGeometry sphere(const Point &origin, double radius)
Definition components.h:573
TemporalViewComponent toggleInput(std::string_view text="")
Definition components.h:657
TemporalViewComponent numberInput(std::string_view text="")
Definition components.h:647
TemporalViewComponent selectInput(std::string_view text="")
Definition components.h:663
TemporalViewComponent newLine()
newLineコンポーネント
Definition components.h:606
TemporalViewComponent button(std::string_view text, T &&func)
buttonコンポーネント
Definition components.h:615
TemporalViewComponent sliderInput(std::string_view text="")
Definition components.h:669
TemporalViewComponent checkInput(std::string_view text="")
Definition components.h:679
TemporalViewComponent textInput(std::string_view text="")
Definition components.h:631
TemporalViewComponent decimalInput(std::string_view text="")
Definition components.h:637
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:482
Transform identity()
移動なし、回転なしのTransform
Definition transform.h:794
Canvas3DComponentType
Definition component_canvas3d.h:20
Definition geometry.h:26
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 && 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 && 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 && 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 & 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 && 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:486
const Geometry & base
Definition components.h:487
Box(const Geometry &rg)
Definition components.h:488
Point vertex2() const
Definition components.h:497
Point vertex1() const
Definition components.h:493
Definition components.h:509
const Geometry & base
Definition components.h:510
Circle(const Geometry &rg)
Definition components.h:511
double radius() const
Definition components.h:522
Transform origin() const
Definition components.h:516
Definition components.h:536
const Geometry & base
Definition components.h:537
double radius() const
Definition components.h:549
double length() const
Definition components.h:550
Cylinder(const Geometry &rg)
Definition components.h:538
Transform origin() const
Definition components.h:543
Definition components.h:383
const Geometry & base
Definition components.h:384
Point end() const
Definition components.h:394
Line(const Geometry &rg)
Definition components.h:385
Point begin() const
Definition components.h:390
Definition components.h:432
const Geometry & base
Definition components.h:433
double width() const
Definition components.h:445
double height() const
Definition components.h:446
Transform origin() const
Definition components.h:439
Point vertex2() const
Definition components.h:455
Plane(const Geometry &rg)
Definition components.h:434
Point vertex1() const
Definition components.h:451
const Geometry & base
Definition components.h:405
Point at(std::size_t i) const
Definition components.h:412
Point operator[](std::size_t i) const
Definition components.h:420
Polygon(const Geometry &rg)
Definition components.h:406
std::size_t size() const
Definition components.h:411
Definition components.h:560
const Geometry & base
Definition components.h:561
double radius() const
Definition components.h:571
Point origin() const
Definition components.h:567
Sphere(const Geometry &rg)
Definition components.h:562
#define WEBCFACE_NS_END
Definition webcface-config.h:104
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:103
#define WEBCFACE_CALL_FP
Definition webcface-config.h:98