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
00032 namespace FIFE {
00033
00034 const unsigned int DEFAULT_CHUNKING_SIZE = 256;
00035 const unsigned int MAX_CHUNKING_SIZE = 262144;
00036
00037 RenderBackend::RenderBackend(const SDL_Color& colorkey):
00038 m_screen(NULL),
00039 m_isalphaoptimized(false),
00040 m_chunkingsize(DEFAULT_CHUNKING_SIZE),
00041 m_iscolorkeyenabled(false),
00042 m_colorkey(colorkey) {
00043 }
00044
00045
00046 RenderBackend::~RenderBackend() {
00047 }
00048
00049 void RenderBackend::deinit() {
00050 delete m_screen;
00051 m_screen = NULL;
00052 SDL_QuitSubSystem(SDL_INIT_VIDEO);
00053 }
00054
00055 void RenderBackend::captureScreen(const std::string& filename) {
00056 m_screen->saveImage(filename);
00057 }
00058
00059 void RenderBackend::pushClipArea(const Rect& cliparea, bool clear) {
00060 assert(m_screen);
00061 m_screen->pushClipArea(cliparea, clear);
00062 }
00063
00064 void RenderBackend::popClipArea() {
00065 assert(m_screen);
00066 m_screen->popClipArea();
00067 }
00068
00069 const Rect& RenderBackend::getClipArea() const {
00070 assert(m_screen);
00071 return m_screen->getClipArea();
00072 }
00073
00074 SDL_Surface* RenderBackend::getSurface() {
00075 assert(m_screen);
00076 return m_screen->getSurface();
00077 }
00078
00079 unsigned int RenderBackend::getWidth() const {
00080 assert(m_screen);
00081 return m_screen->getWidth();
00082 }
00083
00084 unsigned int RenderBackend::getHeight() const {
00085 assert(m_screen);
00086 return m_screen->getHeight();
00087 }
00088
00089 const Rect& RenderBackend::getArea() {
00090 assert(m_screen);
00091 SDL_Surface* s = m_screen->getSurface();
00092 static Rect r(0, 0, s->w, s->h);
00093 return r;
00094 }
00095
00096 void RenderBackend::getPixelRGBA(int x, int y, uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a) {
00097 assert(m_screen);
00098 m_screen->getPixelRGBA(x, y, r, g, b, a);
00099 }
00100
00101 void RenderBackend::saveImage(const std::string& filename) {
00102 assert(m_screen);
00103 m_screen->saveImage(filename);
00104 }
00105
00106 void RenderBackend::setAlphaOptimizerEnabled(bool enabled) {
00107 assert(m_screen);
00108 m_screen->setAlphaOptimizerEnabled(enabled);
00109 }
00110
00111 bool RenderBackend::isAlphaOptimizerEnabled() {
00112 assert(m_screen);
00113 return m_screen->isAlphaOptimizerEnabled();
00114 }
00115
00116 void RenderBackend::setChunkingSize(unsigned int size) {
00117 if (size > MAX_CHUNKING_SIZE) {
00118 size = MAX_CHUNKING_SIZE;
00119 }
00120 m_chunkingsize = 1;
00121 while (m_chunkingsize < size) {
00122 m_chunkingsize <<= 1;
00123 }
00124 }
00125
00126 unsigned int RenderBackend::getChunkingSize() {
00127 return m_chunkingsize;
00128 }
00129
00130 void RenderBackend::setColorKeyEnabled(bool colorkeyenable) {
00131 m_iscolorkeyenabled = colorkeyenable;
00132 }
00133
00134 bool RenderBackend::isColorKeyEnabled() const {
00135 return m_iscolorkeyenabled;
00136 }
00137
00138 void RenderBackend::setColorKey(const SDL_Color& colorkey) {
00139 m_colorkey = colorkey;
00140 }
00141
00142 const SDL_Color& RenderBackend::getColorKey() const {
00143 return m_colorkey;
00144 }
00145 }