mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-10 06:39:49 +00:00
64 lines
1.8 KiB
C++
64 lines
1.8 KiB
C++
#ifndef MANGLE_REND2D_DRIVER_H
|
|
#define MANGLE_REND2D_DRIVER_H
|
|
|
|
#include <string>
|
|
#include "sprite.hpp"
|
|
|
|
namespace Mangle
|
|
{
|
|
namespace Rend2D
|
|
{
|
|
/**
|
|
The driver is the connection to the backend system that powers
|
|
2D sprite rendering. For example the backend could be SDL or
|
|
any other 2D-capable graphics library.
|
|
*/
|
|
struct Driver
|
|
{
|
|
/// Get the screen sprite
|
|
virtual Sprite *getScreen() = 0;
|
|
|
|
/// Sets the video mode.
|
|
virtual void setVideoMode(int width, int height, int bpp=32, bool fullscreen=false) = 0;
|
|
|
|
/** Update the screen. Until this function is called, none of
|
|
the changes written to the screen sprite will be visible.
|
|
*/
|
|
virtual void update() = 0;
|
|
|
|
/// Set the window title, as well as the title of the window
|
|
/// when "iconified"
|
|
virtual void setWindowTitle(const std::string &title,
|
|
const std::string &icon) = 0;
|
|
|
|
/// Set the window title
|
|
void setWindowTitle(const std::string &title) { setWindowTitle(title,title); }
|
|
|
|
/// Load sprite from an image file. Thows an exception on
|
|
/// failure.
|
|
virtual Sprite* loadImage(const std::string &file) = 0;
|
|
|
|
/// Load a sprite from an image file stored in memory. Throws
|
|
/// exception on failure.
|
|
virtual Sprite* loadImage(const void* data, size_t size) = 0;
|
|
|
|
/** @brief Set gamma value for all colors.
|
|
|
|
Note: Setting this in windowed mode will affect the ENTIRE
|
|
SCREEN!
|
|
*/
|
|
virtual void setGamma(float gamma) = 0;
|
|
|
|
/// Set gamma individually for red, green, blue
|
|
virtual void setGamma(float red, float green, float blue) = 0;
|
|
|
|
/// Get screen width
|
|
virtual int width() = 0;
|
|
|
|
/// Get screen height
|
|
virtual int height() = 0;
|
|
};
|
|
}
|
|
}
|
|
#endif
|