-
- enum RequestType
- {
- SURFACE, SURFACE_PART, TEXT, GRADIENT, FILLRECT
- };
-
- struct SurfacePartRequest
- {
- const Surface* surface;
- Vector source, size;
- };
-
- struct TextRequest
- {
- const Font* font;
- std::string text;
- FontAlignment alignment;
- };
-
- struct GradientRequest
- {
- Color top, bottom;
- Vector size;
- };
-
- struct FillRectRequest
- {
- Color color;
- Vector size;
- };
-
- struct DrawingRequest
- {
- RequestType type;
- Vector pos;
-
- int layer;
- uint32_t drawing_effect;
- float zoom;
- int alpha;
-
- void* request_data;
-
- bool operator<(const DrawingRequest& other) const
- {
- return layer < other.layer;
- }
- };
-
- void draw_surface_part(DrawingRequest& request);
- void draw_text(DrawingRequest& request);
- void draw_text_center(DrawingRequest& request);
- void draw_gradient(DrawingRequest& request);
- void draw_filled_rect(DrawingRequest& request);
-
- typedef std::vector<DrawingRequest> DrawingRequests;
- DrawingRequests drawingrequests;
-
- SDL_Surface* screen;
+
+ std::vector<Blend> blend_stack;
+ Blend blend_mode;
+
+ typedef std::vector<DrawingRequest*> DrawingRequests;
+
+ void handle_drawing_requests(DrawingRequests& requests);
+
+ DrawingRequests drawing_requests;
+ DrawingRequests lightmap_requests;
+
+ DrawingRequests* requests;
+ Color ambient_color;
+
+ Target target;
+ std::vector<Target> target_stack;
+
+ /* obstack holding the memory of the drawing requests */
+ struct obstack obst;
+
+ bool screenshot_requested; /**< true if a screenshot should be taken after the next frame has been rendered */