82 lines
1.9 KiB
C
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
|