1#pragma once
2
3#include <iostream>
4#include <fstream>
5#include <stdexcept>
6#include <algorithm>
7#include <chrono>
8#include <vector>
9#include <cstring>
10#include <cstdlib>
11#include <cstdint>
12#include <array>
13#include <optional>
14#include <set>
15#include <memory>
16
17#include "taichi/ui/utils/utils.h"
18#include "taichi/ui/backends/vulkan/vertex.h"
19#include "taichi/ui/backends/vulkan/app_context.h"
20#include "taichi/ui/backends/vulkan/swap_chain.h"
21#include "taichi/ui/backends/vulkan/renderable.h"
22#include "taichi/ui/common/canvas_base.h"
23
24#include "taichi/ui/backends/vulkan/gui.h"
25#include "taichi/ui/backends/vulkan/renderer.h"
26
27#include "taichi/ui/backends/vulkan/renderables/set_image.h"
28#include "taichi/ui/backends/vulkan/renderables/triangles.h"
29#include "taichi/ui/backends/vulkan/renderables/mesh.h"
30#include "taichi/ui/backends/vulkan/renderables/particles.h"
31#include "taichi/ui/backends/vulkan/renderables/circles.h"
32#include "taichi/ui/backends/vulkan/renderables/lines.h"
33
34namespace taichi::ui {
35
36namespace vulkan {
37
38class TI_DLL_EXPORT Canvas final : public CanvasBase {
39 public:
40 explicit Canvas(Renderer *renderer);
41
42 void set_background_color(const glm::vec3 &color) override;
43
44 void set_image(const SetImageInfo &info) override;
45
46 void set_image(taichi::lang::Texture *tex) override;
47
48 void triangles(const TrianglesInfo &info) override;
49
50 void circles(const CirclesInfo &info) override;
51
52 void lines(const LinesInfo &info) override;
53
54 void scene(SceneBase *scene_base) override;
55
56 private:
57 Renderer *renderer_;
58};
59
60} // namespace vulkan
61
62} // namespace taichi::ui
63