void spreadsheet::draw(surface::ptr surface, const rectangle& clip_rect) { surface->clip_rect(clip_rect.empty() ? rect() : clip_rect); int current_y_pos = 0; for(column_iterator column=columns_begin();column!=columns_end();column++) { int current_x_pos = 0; column_info::Tcells::iterator cell = column->cells.begin(); for(row_iterator row = rows_begin(); row != rows_end(); row++) { if(/*!column->cells.empty() && */ cell != column->cells.end()) { (*cell)->draw(surface,rectangle(current_x_pos+rect_.x1(), current_y_pos+rect_.y1(), row->width, column->height)); cell++; } current_x_pos += row->width; } current_y_pos += column->height; } }