1 | #pragma once |
---|---|
2 | |
3 | #include "taichi/program/field_info.h" |
4 | #include "taichi/ui/common/scene_base.h" |
5 | #include "taichi/ui/common/renderable_info.h" |
6 | #include "taichi/ui/utils/utils.h" |
7 | |
8 | namespace taichi::lang { |
9 | |
10 | class Texture; |
11 | |
12 | } // namespace taichi::lang |
13 | |
14 | namespace taichi::ui { |
15 | |
16 | struct SetImageInfo { |
17 | FieldInfo img; |
18 | }; |
19 | |
20 | struct TrianglesInfo { |
21 | RenderableInfo renderable_info; |
22 | glm::vec3 color; |
23 | }; |
24 | |
25 | struct CirclesInfo { |
26 | RenderableInfo renderable_info; |
27 | glm::vec3 color; |
28 | float radius{0}; |
29 | }; |
30 | |
31 | struct LinesInfo { |
32 | RenderableInfo renderable_info; |
33 | glm::vec3 color; |
34 | float width{0}; |
35 | }; |
36 | |
37 | class CanvasBase { |
38 | public: |
39 | virtual void set_background_color(const glm::vec3 &color) = 0; |
40 | virtual void set_image(const SetImageInfo &info) = 0; |
41 | virtual void set_image(taichi::lang::Texture *tex) = 0; |
42 | virtual void triangles(const TrianglesInfo &info) = 0; |
43 | virtual void circles(const CirclesInfo &info) = 0; |
44 | virtual void lines(const LinesInfo &info) = 0; |
45 | virtual void scene(SceneBase *scene) = 0; |
46 | virtual ~CanvasBase() = default; |
47 | }; |
48 | |
49 | } // namespace taichi::ui |
50 |