Surface *Layout::render() { //todo if(childsChanged) { setChildsPosition(); childsChanged = false; } Surface *buffer = new Surface(width, height); buffer->fill(background); for(ItemIterator it = container.iterator(); it.next();) { Surface *itemBuffer = it.item()->render(); buffer->blit(itemBuffer, it.item()); delete itemBuffer; } if(drawBorder) { PRect border = PRect(); border.setDimension(width, height); buffer->draw(&border, foreground); } return buffer; }