6 #include <spdlog/spdlog.h>
14 bool initialize(
int window_width,
int window_height);
20 void set_camera(
const glm::mat4& view_projection);
35 void draw_arc(
float x,
float y,
float radius,
float start_angle,
float end_angle,
const Color& color =
Color::WHITE,
int segments = 32);
44 float rotation = 0.0f);
50 const Color& color =
Color::WHITE,
float rotation = 0.0f,
bool flip_h =
false,
bool flip_v =
false,
53 template <
typename... Args>
54 void draw_text(
Font font,
float x,
float y,
const Color& color,
const char* format_str, Args&&... args);
105 std::unordered_map<RID, RID> texture_samplers;
111 glm::mat4 projection;
119 int window_width, window_height;
120 int viewport_width, viewport_height;
128 Font default_font = {};
129 Font emoji_font = {};
135 void add_quad(
const glm::mat4& transform,
const Color& color,
RID texture,
bool use_texture);
136 glm::mat4 get_current_transform()
const;
137 void calculate_viewport(
int window_w,
int window_h,
int& out_x,
int& out_y,
int& out_w,
int& out_h);
138 void setup_pipeline_for_blend_mode(
BlendMode mode);
139 RID get_or_create_custom_pipeline(
RID shader);
143 template <
typename... Args>
146 spdlog::warn(
"DrawText called with null font!");
150 std::string formatted_text;
151 if constexpr (
sizeof...(args) > 0) {
152 formatted_text = std::vformat(format_str, std::make_format_args(args...));
154 formatted_text = format_str;
157 draw_text(font, x, y, color, formatted_text);
Definition: shader_material.h:8
Definition: rendering_canvas.h:9
void set_camera(const glm::mat4 &view_projection)
Definition: rendering_canvas.cpp:453
void set_blend_mode(BlendMode mode)
Definition: rendering_canvas.cpp:352
RID load_texture(const char *filepath)
Definition: rendering_canvas.cpp:534
void end()
Definition: rendering_canvas.cpp:159
void get_texture_size(RID texture, uint32_t &out_width, uint32_t &out_height)
Definition: rendering_canvas.cpp:318
~RenderingCanvas()
Definition: rendering_canvas.cpp:12
void draw_arc(float x, float y, float radius, float start_angle, float end_angle, const Color &color=Color::WHITE, int segments=32)
Definition: rendering_canvas.cpp:280
void draw_circle_outlined(float x, float y, float radius, const Color &color=Color::WHITE, float thickness=1.0f, int segments=32)
Definition: rendering_canvas.cpp:260
void set_scale_mode(ScaleMode mode)
Definition: rendering_canvas.cpp:468
RenderingDevice * get_rendering_device() const
Definition: rendering_canvas.cpp:362
void draw_custom(RID shader, float x, float y, float width, float height, RID texture=INVALID_RID, const Color &color=Color::WHITE)
Definition: rendering_canvas.cpp:778
void draw_text(Font font, float x, float y, const Color &color, const char *format_str, Args &&... args)
Definition: rendering_canvas.h:144
void draw_circle(float x, float y, float radius, const Color &color=Color::WHITE, int segments=32)
Definition: rendering_canvas.cpp:249
void draw_triangle(float x1, float y1, float x2, float y2, float x3, float y3, const Color &color=Color::WHITE)
Definition: rendering_canvas.cpp:383
RID load_shader_from_source(const char *vertex_src, const char *fragment_src)
Definition: rendering_canvas.cpp:702
Texture load_texture_from_file(const char *filepath)
Definition: rendering_canvas.cpp:603
void reset_camera()
Definition: rendering_canvas.cpp:458
void draw_rect_outlined(float x, float y, float width, float height, const Color &color=Color::WHITE, float thickness=1.0f)
Definition: rendering_canvas.cpp:238
void destroy_shader(RID shader)
Definition: rendering_canvas.cpp:741
void draw_texture(RID texture, float x, float y, float width=0, float height=0, const Color &tint=Color::WHITE, float rotation=0.0f)
Definition: rendering_canvas.cpp:410
void present()
Definition: rendering_canvas.cpp:358
RID load_texture_from_memory(void *data, int width, int height, int channels=4)
Definition: rendering_canvas.cpp:624
void draw_rect(float x, float y, float width, float height, const Color &color=Color::WHITE, float rotation=0.0f)
Definition: rendering_canvas.cpp:226
void unload_texture(RID texture)
Definition: rendering_canvas.cpp:635
Font load_font_from_file(const char *filepath, int size)
Definition: rendering_canvas.cpp:326
bool initialize(int window_width, int window_height)
Definition: rendering_canvas.cpp:16
void draw_line(float x1, float y1, float x2, float y2, const Color &color=Color::WHITE, float thickness=1.0f)
Definition: rendering_canvas.cpp:369
RID load_shader_from_file(const char *filepath)
Definition: rendering_canvas.cpp:706
void shutdown()
Definition: rendering_canvas.cpp:96
void begin(const Color &color=Color::BLACK)
Definition: rendering_canvas.cpp:139
void set_viewport_size(int width, int height)
Definition: rendering_canvas.cpp:463
void set_line_width(float width)
Definition: rendering_canvas.cpp:355
RenderingCanvas(RenderingDevice *device)
Definition: rendering_canvas.cpp:6
void draw_texture_ex(float x, float y, float width, float height, RID texture=INVALID_RID, const Rect &source={0, 0, 0, 0}, const Color &color=Color::WHITE, float rotation=0.0f, bool flip_h=false, bool flip_v=false, const CanvasMaterial *material=nullptr)
Definition: rendering_canvas.cpp:852
void draw_polygon(const Vector< glm::vec2 > &points, const Color &color=Color::WHITE)
Definition: rendering_canvas.cpp:387
Abstract base class for rendering devices.
Definition: rendering_device.h:326
BlendMode
Definition: rendering_device.h:273
ScaleMode
Definition: rendering_device.h:275
constexpr RID INVALID_RID
Definition: rendering_device.h:13
uint32_t RID
Definition: rendering_device.h:12
Definition: rendering_device.h:55
static const Color WHITE
Definition: rendering_device.h:65
static const Color BLACK
Definition: rendering_device.h:66
Definition: rendering_device.h:20
TTF_Font * get_native_handle() const
Definition: rendering_device.h:26
Definition: rendering_device.h:76
Definition: rendering_device.h:281
Definition: rendering_device.h:301
std::unordered_map< K, V > HashMap
Definition: type_alias.h:20