lsnes/include/core/framebuffer.hpp

57 lines
1.3 KiB
C++
Raw Normal View History

2011-09-16 06:13:33 +03:00
#ifndef _framebuffer__hpp__included__
#define _framebuffer__hpp__included__
2012-01-06 17:28:01 +02:00
#include "core/render.hpp"
2011-09-16 06:13:33 +03:00
2011-09-17 00:06:20 +03:00
/**
* The main framebuffer.
*/
2011-09-16 06:13:33 +03:00
extern lcscreen framebuffer;
2011-09-17 00:06:20 +03:00
/**
* Special screen: "NO SIGNAL".
*/
2011-09-16 06:13:33 +03:00
extern lcscreen screen_nosignal;
2011-09-17 00:06:20 +03:00
/**
* Special screen: "SYSTEM STATE CORRUPT".
*/
2011-09-16 06:13:33 +03:00
extern lcscreen screen_corrupt;
2011-09-17 00:06:20 +03:00
/**
* The main screen to draw on.
*/
2011-09-16 06:13:33 +03:00
extern screen main_screen;
2011-09-17 00:06:20 +03:00
/**
* Initialize special screens.
2011-09-26 19:02:43 +03:00
*
2011-09-17 00:06:20 +03:00
* throws std::bad_alloc: Not enough memory.
*/
2011-09-16 06:13:33 +03:00
void init_special_screens() throw(std::bad_alloc);
2011-09-17 00:06:20 +03:00
/**
2012-01-06 17:28:01 +02:00
* Copy framebuffer to backing store, running Lua hooks if any.
*/
void redraw_framebuffer(lcscreen& torender, bool no_lua = false);
/**
* Redraw the framebuffer, reusing contents from last redraw. Runs lua hooks if last redraw ran them.
2011-09-17 00:06:20 +03:00
*/
void redraw_framebuffer();
2012-01-06 17:28:01 +02:00
/**
* Return last complete framebuffer.
*/
lcscreen get_framebuffer() throw(std::bad_alloc);
/**
* Render framebuffer to main screen.
*/
void render_framebuffer();
/**
* Get the size of current framebuffer.
*/
std::pair<uint32_t, uint32_t> get_framebuffer_size();
/**
* Take a screenshot to specified file.
*/
void take_screenshot(const std::string& file) throw(std::bad_alloc, std::runtime_error);
/**
* Get scale factors.
*/
std::pair<uint32_t, uint32_t> get_scale_factors(uint32_t width, uint32_t height);
2011-09-16 06:13:33 +03:00
#endif