fillrectrequest->size = size;
fillrectrequest->color = color;
fillrectrequest->color.alpha = color.alpha * transform.alpha;
+ fillrectrequest->radius = 0.0f;
request->request_data = fillrectrequest;
requests->push_back(request);
DrawingContext::draw_filled_rect(const Rect& rect, const Color& color,
int layer)
{
+ draw_filled_rect(rect, color, 0.0f, layer);
+}
+
+void
+DrawingContext::draw_filled_rect(const Rect& rect, const Color& color, float radius, int layer)
+{
DrawingRequest* request = new(obst) DrawingRequest();
request->target = target;
- request->type = FILLRECT;
- request->pos = transform.apply(rect.p1);
- request->layer = layer;
+ request->type = FILLRECT;
+ request->pos = transform.apply(rect.p1);
+ request->layer = layer;
request->drawing_effect = transform.drawing_effect;
request->alpha = transform.alpha;
fillrectrequest->size = Vector(rect.get_width(), rect.get_height());
fillrectrequest->color = color;
fillrectrequest->color.alpha = color.alpha * transform.alpha;
+ fillrectrequest->radius = radius;
request->request_data = fillrectrequest;
- requests->push_back(request);
+ requests->push_back(request);
+}
+
+void
+DrawingContext::draw_inverse_ellipse(const Vector& pos, const Vector& size, const Color& color, int layer)
+{
+ DrawingRequest* request = new(obst) DrawingRequest();
+
+ request->target = target;
+ request->type = INVERSEELLIPSE;
+ request->pos = transform.apply(pos);
+ request->layer = layer;
+
+ request->drawing_effect = transform.drawing_effect;
+ request->alpha = transform.alpha;
+
+ InverseEllipseRequest* ellipse = new(obst)InverseEllipseRequest;
+
+ ellipse->color = color;
+ ellipse->color.alpha = color.alpha * transform.alpha;
+ ellipse->size = size;
+ request->request_data = ellipse;
+
+ requests->push_back(request);
}
void
lightmap->start_draw(ambient_color);
handle_drawing_requests(lightmap_requests);
lightmap->end_draw();
+
+ DrawingRequest* request = new(obst) DrawingRequest();
+ request->target = NORMAL;
+ request->type = DRAW_LIGHTMAP;
+ request->layer = LAYER_HUD - 1;
+ drawing_requests.push_back(request);
}
+ lightmap_requests.clear();
handle_drawing_requests(drawing_requests);
- if(use_lightmap) {
- lightmap->do_draw();
- }
+ drawing_requests.clear();
obstack_free(&obst, NULL);
obstack_init(&obst);
case FILLRECT:
renderer->draw_filled_rect(request);
break;
+ case INVERSEELLIPSE:
+ renderer->draw_inverse_ellipse(request);
+ break;
+ case DRAW_LIGHTMAP:
+ lightmap->do_draw();
+ break;
case GETLIGHT:
lightmap->get_light(request);
break;
case FILLRECT:
lightmap->draw_filled_rect(request);
break;
+ case INVERSEELLIPSE:
+ assert(!"InverseEllipse doesn't make sense on the lightmap");
+ break;
+ case DRAW_LIGHTMAP:
+ lightmap->do_draw();
+ break;
case GETLIGHT:
lightmap->get_light(request);
break;
break;
}
}
- requests.clear();
}
void