|
- #ifndef NES_RENDER_H_
- #define NES_RENDER_H_
-
- #include "ppu.h"
- #include "overlay.h"
-
-
- typedef struct nes_Renderer_t {
- int (*init)(struct nes_Renderer_t*);
- void (*done)(struct nes_Renderer_t*);
- int (*render)(struct nes_Renderer_t*, nes_ppu*);
-
- void (*set_flags)(struct nes_Renderer_t*, uint32_t flags);
- void (*refresh)(struct nes_Renderer_t*);
-
- void (*draw_last_frame)(struct nes_Renderer_t*, int dim);
- void (*draw_text)(struct nes_Renderer_t*, const char*, int x, int y, uint32_t color);
- void (*text_size)(struct nes_Renderer_t*, const char*, int* w, int* h);
- void (*draw_done)(struct nes_Renderer_t*);
-
- Overlay overlay;
- uint32_t flags;
- void* data;
- } nes_Renderer;
-
- static inline int nes_render_init(nes_Renderer* rend) {
- return rend->init(rend);
- }
-
- static inline void nes_render_done(nes_Renderer* rend) {
- rend->done(rend);
- }
-
- static inline int nes_render(nes_Renderer* rend, nes_ppu* ppu) {
- return rend->render(rend, ppu);
- }
-
- static inline uint32_t nes_render_set_flags(nes_Renderer* rend,
- uint32_t flags) {
-
- uint32_t old_flags = rend->flags;
- rend->set_flags(rend, flags);
- rend->flags = flags;
- return old_flags;
- }
-
- static inline void nes_render_refresh(nes_Renderer* rend) {
- rend->refresh(rend);
- }
-
- static inline void nes_draw_last_frame(nes_Renderer* rend,
- int dim) {
- rend->draw_last_frame(rend, dim);
- }
-
- static inline void nes_text_size(nes_Renderer* rend,
- const char* str,
- int* w, int* h) {
- rend->text_size(rend, str, w, h);
- }
-
- static inline void nes_draw_text(nes_Renderer* rend,
- const char* str, int x, int y,
- uint32_t color) {
- rend->draw_text(rend, str, x, y, color);
- }
-
- static inline void nes_draw_done(nes_Renderer* rend) {
- rend->draw_done(rend);
- }
-
-
- #endif // NES_RENDER_H_
|