#ifndef ASCII3D_RENDERER_H #define ASCII3D_RENDERER_H #include "config.h" #include "lighting.h" #include #ifdef __cplusplus extern "C" { #endif typedef struct RotationState { float angle_x; float angle_y; float angle_z; bool enable_x; bool enable_y; bool enable_z; float speed; } RotationState; typedef struct RenderSettings { RenderMode mode; ColorMode color_mode; bool anti_aliasing; bool show_fps; bool auto_rotate; float quality; int palette_index; Color base_color; Color highlight_color; } RenderSettings; // Diagnostics profile updated each tick typedef struct FrameStats { double frame_time; double fps; double avg_fps; int frame_count; int triangles; } FrameStats; // Core Engine Lifecycles int renderer_init(void); void renderer_cleanup(void); // Nulls out all raster buffers ready for drawing void renderer_clear(void); void renderer_draw_text(const char *text, const RotationState *rotation); void renderer_draw_text_ex(const char *text, const RotationState *rotation, const RenderSettings *settings); // Flushes the rendering pipeline out to standard output void renderer_present(void); void renderer_present_color(const RenderSettings *settings); void renderer_update_rotation(RotationState *rotation, double delta_time); RotationState renderer_default_rotation(void); RenderSettings renderer_default_settings(void); // Dynamic rendering reconfiguration toggles void renderer_set_mode(RenderMode mode); void renderer_set_color_mode(ColorMode mode); void renderer_set_palette(int palette_index); FrameStats renderer_get_stats(void); LightingSystem *renderer_get_lighting(void); // Console visual hacks void renderer_hide_cursor(void); void renderer_show_cursor(void); void renderer_clear_terminal(void); void renderer_enter_alternate_screen(void); void renderer_exit_alternate_screen(void); #ifdef __cplusplus } #endif #endif