void DrawingContext::render(Framebuffer& fb, const Rect& parent_rect) { Rect this_rect(Math::max(rect.left + parent_rect.left, parent_rect.left), Math::max(rect.top + parent_rect.top, parent_rect.top), Math::min(rect.right + parent_rect.left, parent_rect.right), Math::min(rect.bottom + parent_rect.top, parent_rect.bottom)); if (do_clipping) fb.push_cliprect(this_rect); std::stable_sort(drawingrequests.begin(), drawingrequests.end(), DrawingRequestsSorter()); if (0) { std::cout << "<<<<<<<<<<<<<<" << std::endl; for(DrawingRequests::iterator i = drawingrequests.begin(); i != drawingrequests.end(); ++i) std::cout << (*i)->get_z_pos() << std::endl; std::cout << ">>>>>>>>>>>>>>" << std::endl; } for(DrawingRequests::iterator i = drawingrequests.begin(); i != drawingrequests.end(); ++i) { //std::cout << this << ": " << (*i)->get_z_pos() << std::endl; (*i)->render(fb, this_rect); // FIXME: Should we clip size against parent rect? } if (do_clipping) fb.pop_cliprect(); }
void DrawingContext::render(CL_GraphicContext* gc) { std::stable_sort(drawingrequests.begin(), drawingrequests.end(), DrawingRequestsSorter()); for(DrawingRequests::iterator i = drawingrequests.begin(); i != drawingrequests.end(); ++i) { (*i)->draw(gc); } }