+
+static gboolean
+rectangle_from_range (GtkSheet *sheet, const GtkSheetRange *range,
+ GdkRectangle *r)
+{
+ g_return_val_if_fail (range, FALSE);
+
+ r->x = g_sheet_column_start_pixel (sheet->column_geometry, range->col0);
+ r->x -= sheet->hadjustment->value;
+
+ if ( sheet->row_titles_visible)
+ r->x += sheet->row_title_area.width;
+
+
+ r->y = g_sheet_row_start_pixel (sheet->row_geometry, range->row0);
+ r->y -= sheet->vadjustment->value;
+
+ if ( sheet->column_titles_visible)
+ r->y += sheet->column_title_area.height;
+
+ r->width = g_sheet_column_start_pixel (sheet->column_geometry, range->coli) -
+ g_sheet_column_start_pixel (sheet->column_geometry, range->col0) +
+ g_sheet_column_get_width (sheet->column_geometry, range->coli);
+
+ r->height = g_sheet_row_start_pixel (sheet->row_geometry, range->rowi) -
+ g_sheet_row_start_pixel (sheet->row_geometry, range->row0) +
+ g_sheet_row_get_height (sheet->row_geometry, range->rowi);
+
+ return TRUE;
+}
+
+static gboolean
+rectangle_from_cell (GtkSheet *sheet, gint row, gint col,
+ GdkRectangle *r)
+{
+ GtkSheetRange range;
+ g_return_val_if_fail (row >= 0, FALSE);
+ g_return_val_if_fail (col >= 0, FALSE);
+
+ range.row0 = range.rowi = row;
+ range.col0 = range.coli = col;
+
+ return rectangle_from_range (sheet, &range, r);
+}
+
+