/* * ECell::draw method */ static void ecv_draw (ECellView *ecell_view, GdkDrawable *drawable, int model_col, int view_col, int row, ECellFlags flags, int x1, int y1, int x2, int y2) { ECellHboxView *hbox_view = (ECellHboxView *)ecell_view; int subcell_offset = 0; int i; int allotted_width = x2-x1; for (i = 0; i < hbox_view->subcell_view_count; i++) { /* Now cause our subcells to draw their contents, shifted by subcell_offset pixels */ int width = allotted_width * hbox_view->def_size_cols[i] / 100; //e_cell_max_width_by_row (hbox_view->subcell_views[i], hbox_view->model_cols[i], view_col, row); // if (width < hbox_view->def_size_cols[i]) // width = hbox_view->def_size_cols[i]; // printf("width of %d %d of %d\n", width,hbox_view->def_size_cols[i], allotted_width ); e_cell_draw (hbox_view->subcell_views[i], drawable, hbox_view->model_cols[i], view_col, row, flags, x1 + subcell_offset , y1, x1 + subcell_offset + width, y2); subcell_offset += width; //e_cell_max_width_by_row (hbox_view->subcell_views[i], hbox_view->model_cols[i], view_col, row); } }
/* * ECell::draw method */ static void ect_draw (ECellView *ecell_view, cairo_t *cr, gint model_col, gint view_col, gint row, ECellFlags flags, gint x1, gint y1, gint x2, gint y2) { ECellTreeView *tree_view = (ECellTreeView *) ecell_view; ETreeModel *tree_model = e_cell_tree_get_tree_model (ecell_view->e_table_model, row); ETreeTableAdapter *tree_table_adapter = e_cell_tree_get_tree_table_adapter (ecell_view->e_table_model, row); ETreePath node; GdkRectangle rect; gint offset, subcell_offset = 0; cairo_save (cr); /* only draw the tree effects if we're the active sort */ if (E_CELL_TREE (tree_view->cell_view.ecell)->grouped_view) { tree_view->prelit = FALSE; node = e_cell_tree_get_node (ecell_view->e_table_model, row); offset = offset_of_node (ecell_view->e_table_model, row); subcell_offset = offset; /* * Be a nice citizen: clip to the region we are supposed to draw on */ rect.x = x1; rect.y = y1; rect.width = subcell_offset; rect.height = y2 - y1; /* now draw our icon if we're expandable */ if (e_tree_model_node_is_expandable (tree_model, node)) { gboolean expanded = e_tree_table_adapter_node_is_expanded (tree_table_adapter, node); GdkRectangle r; r = rect; r.width -= 2; draw_expander (tree_view, cr, expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED, GTK_STATE_NORMAL, &r); } } /* Now cause our subcell to draw its contents, shifted by * subcell_offset pixels */ e_cell_draw ( tree_view->subcell_view, cr, model_col, view_col, row, flags, x1 + subcell_offset, y1, x2, y2); cairo_restore (cr); }
/* * ECell::draw method */ static void ecv_draw (ECellView *ecell_view, cairo_t *cr, gint model_col, gint view_col, gint row, ECellFlags flags, gint x1, gint y1, gint x2, gint y2) { ECellVboxView *vbox_view = (ECellVboxView *) ecell_view; gint subcell_offset = 0; gint i; for (i = 0; i < vbox_view->subcell_view_count; i++) { /* Now cause our subcells to draw their contents, * shifted by subcell_offset pixels */ gint height; height = e_cell_height ( vbox_view->subcell_views[i], vbox_view->model_cols[i], view_col, row); e_cell_draw ( vbox_view->subcell_views[i], cr, vbox_view->model_cols[i], view_col, row, flags, x1, y1 + subcell_offset, x2, y1 + subcell_offset + height); subcell_offset += e_cell_height ( vbox_view->subcell_views[i], vbox_view->model_cols[i], view_col, row); } }