Files
ASCIIRenderer/include/renderer.h

82 lines
1.9 KiB
C

#ifndef ASCII3D_RENDERER_H
#define ASCII3D_RENDERER_H
#include "config.h"
#include "lighting.h"
#include <stdbool.h>
#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