22 #ifndef FIFE_VIDEO_RENDERBACKEND_H
23 #define FIFE_VIDEO_RENDERBACKEND_H
30 #include "util/base/fife_stdint.h"
34 #include <SDL_video.h>
40 #include "util/base/singleton.h"
41 #include "util/structures/point.h"
42 #include "util/structures/rect.h"
43 #include "video/devicecaps.h"
48 #include "video/opengl/fife_opengl.h"
69 NOTEQUAL = GL_NOTEQUAL,
106 virtual const std::string&
getName()
const = 0;
118 virtual void init(
const std::string& driver) = 0;
134 virtual void setLighting(
float red,
float green,
float blue) = 0;
157 virtual void createMainScreen(
const ScreenMode& mode,
const std::string& title,
const std::string& icon) = 0;
164 virtual Image* createImage(IResourceLoader* loader = 0) = 0;
165 virtual Image* createImage(
const std::string& name, IResourceLoader* loader = 0) = 0;
173 virtual Image* createImage(
const uint8_t* data, uint32_t width, uint32_t height) = 0;
174 virtual Image* createImage(
const std::string& name,
const uint8_t* data, uint32_t width, uint32_t height) = 0;
181 virtual Image* createImage(SDL_Surface* surface) = 0;
182 virtual Image* createImage(
const std::string& name, SDL_Surface* surface) = 0;
190 virtual void addImageToArray(uint32_t
id,
const Rect& rec,
float const* st, uint8_t alpha, uint8_t
const* rgb) = 0;
194 virtual void changeRenderInfos(uint16_t elements, int32_t src, int32_t dst,
bool light,
bool stentest, uint8_t stenref, GLConstants stenop, GLConstants stenfunc) = 0;
202 virtual void captureScreen(
const std::string& filename, uint32_t width, uint32_t height) = 0;
209 uint32_t getWidth()
const;
210 uint32_t getHeight()
const;
211 uint32_t getScreenWidth()
const {
return getWidth(); }
212 uint32_t getScreenHeight()
const {
return getHeight(); }
213 const Rect& getArea()
const;
233 virtual bool putPixel(int32_t x, int32_t y, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) = 0;
237 virtual void drawLine(
const Point& p1,
const Point& p2, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) = 0;
241 virtual void drawTriangle(
const Point& p1,
const Point& p2,
const Point& p3, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) = 0;
245 virtual void drawRectangle(
const Point& p, uint16_t w, uint16_t h, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) = 0;
249 virtual void fillRectangle(
const Point& p, uint16_t w, uint16_t h, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) = 0;
253 virtual void drawQuad(
const Point& p1,
const Point& p2,
const Point& p3,
const Point& p4, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) = 0;
257 virtual void drawVertex(
const Point& p,
const uint8_t size, uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) = 0;
261 virtual void drawLightPrimitive(
const Point& p, uint8_t intensity,
float radius, int32_t subdivisions,
float xstretch,
float ystretch, uint8_t red, uint8_t green, uint8_t blue) = 0;
357 SDL_Surface* m_screen;
358 SDL_Surface* m_target;
359 bool m_compressimages;
360 bool m_useframebuffer;
362 bool m_isalphaoptimized;
363 bool m_iscolorkeyenabled;
364 SDL_Color m_colorkey;
365 ScreenMode m_screenMode;
366 SDL_PixelFormat m_rgba_format;
368 bool m_isbackgroundcolor;
369 SDL_Color m_backgroundcolor;
386 std::stack<ClipInfo> m_clipstack;
390 uint32_t m_frame_start;
391 uint16_t m_framelimit;