renderbackend.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "renderbackend.h"
00031 #include "video/devicecaps.h"
00032
00033 namespace FIFE {
00034
00035
00036 RenderBackend::RenderBackend(const SDL_Color& colorkey):
00037 m_screen(NULL),
00038 m_isalphaoptimized(false),
00039 m_iscolorkeyenabled(false),
00040 m_colorkey(colorkey) {
00041 }
00042
00043
00044 RenderBackend::~RenderBackend() {
00045 }
00046
00047 void RenderBackend::deinit() {
00048 delete m_screen;
00049 m_screen = NULL;
00050 SDL_QuitSubSystem(SDL_INIT_VIDEO);
00051 }
00052
00053 void RenderBackend::captureScreen(const std::string& filename) {
00054 m_screen->saveImage(filename);
00055 }
00056
00057 void RenderBackend::pushClipArea(const Rect& cliparea, bool clear) {
00058 assert(m_screen);
00059 m_screen->pushClipArea(cliparea, clear);
00060 }
00061
00062 void RenderBackend::popClipArea() {
00063 assert(m_screen);
00064 m_screen->popClipArea();
00065 }
00066
00067 const Rect& RenderBackend::getClipArea() const {
00068 assert(m_screen);
00069 return m_screen->getClipArea();
00070 }
00071
00072 SDL_Surface* RenderBackend::getSurface() {
00073 assert(m_screen);
00074 return m_screen->getSurface();
00075 }
00076
00077 const ScreenMode& RenderBackend::getCurrentScreenMode() const{
00078 return m_screenMode;
00079 }
00080
00081 unsigned int RenderBackend::getWidth() const {
00082 assert(m_screen);
00083 return m_screen->getWidth();
00084 }
00085
00086 unsigned int RenderBackend::getHeight() const {
00087 assert(m_screen);
00088 return m_screen->getHeight();
00089 }
00090
00091 const Rect& RenderBackend::getArea() {
00092 assert(m_screen);
00093 SDL_Surface* s = m_screen->getSurface();
00094 static Rect r(0, 0, s->w, s->h);
00095 return r;
00096 }
00097
00098 void RenderBackend::getPixelRGBA(int x, int y, uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a) {
00099 assert(m_screen);
00100 m_screen->getPixelRGBA(x, y, r, g, b, a);
00101 }
00102
00103 void RenderBackend::saveImage(const std::string& filename) {
00104 assert(m_screen);
00105 m_screen->saveImage(filename);
00106 }
00107
00108 void RenderBackend::setAlphaOptimizerEnabled(bool enabled) {
00109 assert(m_screen);
00110 m_screen->setAlphaOptimizerEnabled(enabled);
00111 }
00112
00113 bool RenderBackend::isAlphaOptimizerEnabled() {
00114 assert(m_screen);
00115 return m_screen->isAlphaOptimizerEnabled();
00116 }
00117
00118 void RenderBackend::setColorKeyEnabled(bool colorkeyenable) {
00119 m_iscolorkeyenabled = colorkeyenable;
00120 }
00121
00122 bool RenderBackend::isColorKeyEnabled() const {
00123 return m_iscolorkeyenabled;
00124 }
00125
00126 void RenderBackend::setColorKey(const SDL_Color& colorkey) {
00127 m_colorkey = colorkey;
00128 }
00129
00130 const SDL_Color& RenderBackend::getColorKey() const {
00131 return m_colorkey;
00132 }
00133 }