Euphoria
canvas.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "core/canvaslogic.h"
4 
5 #include "imgui/imgui.h"
6 
7 namespace eu::window
8 {
9  struct CanvasConfig
10  {
11  float zoom_speed = 10;
12  float grid_size = 64.0f;
13  ImU32 grid_color = IM_COL32(200, 200, 200, 40);
14  ImU32 background_color = IM_COL32(60, 60, 70, 200);
15  };
16 
17  struct Canvas
18  {
20  ImVec2 position = ImVec2 {0, 0};
21 
22  void begin(const CanvasConfig& cc);
23  void end(const CanvasConfig& cc);
24 
25  void show_grid(const CanvasConfig& cc) const;
26  void draw_vertical_line(float rx, ImU32 grid_color) const;
27  void draw_horizontal_line(float ry, ImU32 grid_color) const;
28  void show_ruler(float ruler_interval, ImU32 ruler_color, float length) const;
29  void show_ruler(const CanvasConfig& cc) const;
30 
31  [[nodiscard]] ImVec2 from_world_to_screen(const ImVec2& v) const;
32  [[nodiscard]] ImVec2 from_world_to_screen_size(const ImVec2& v) const;
33  [[nodiscard]] ImVec2 from_screen_to_world(const ImVec2& v) const;
34 
35  [[nodiscard]] ImVec2 get_mouse() const;
36  };
37 }
core::CanvasLogic view
Definition: canvas.h:19
void end(const CanvasConfig &cc)
Definition: canvas.cc:145
void draw_vertical_line(float rx, ImU32 grid_color) const
Definition: canvas.cc:42
ImVec2 from_world_to_screen(const ImVec2 &v) const
Definition: canvas.cc:157
void show_grid(const CanvasConfig &cc) const
Definition: canvas.cc:13
void begin(const CanvasConfig &cc)
Definition: canvas.cc:107
void show_ruler(float ruler_interval, ImU32 ruler_color, float length) const
Definition: canvas.cc:70
ImVec2 get_mouse() const
Definition: canvas.cc:175
void draw_horizontal_line(float ry, ImU32 grid_color) const
Definition: canvas.cc:56
ImVec2 position
Definition: canvas.h:20
ImVec2 from_screen_to_world(const ImVec2 &v) const
Definition: canvas.cc:169
ImVec2 from_world_to_screen_size(const ImVec2 &v) const
Definition: canvas.cc:163