static void ddisplay_obj_render(DiaObject *obj, DiaRenderer *renderer, int active_layer, gpointer data) { DDisplay *ddisp = (DDisplay *)data; DiaInteractiveRendererInterface *irenderer = DIA_GET_INTERACTIVE_RENDERER_INTERFACE (renderer); DiaHighlightType hltype = data_object_get_highlight(DIA_DIAGRAM_DATA(ddisp->diagram), obj); if (hltype != DIA_HIGHLIGHT_NONE && irenderer->draw_object_highlighted != NULL) irenderer->draw_object_highlighted(renderer, obj, hltype); else /* maybe the renderer does not support highlighting */ DIA_RENDERER_GET_CLASS(renderer)->draw_object(renderer, obj, NULL); if (ddisp->show_cx_pts && obj->parent_layer != NULL && obj->parent_layer->connectable) { object_draw_connectionpoints(obj, ddisp); } }
void object_add_updates(DiaObject *obj, Diagram *dia) { int i; /* Bounding box */ if (data_object_get_highlight(dia->data,obj) != DIA_HIGHLIGHT_NONE) { diagram_add_update_with_border(dia, dia_object_get_enclosing_box (obj), 5); } else { diagram_add_update(dia, dia_object_get_enclosing_box (obj)); } /* Handles */ for (i=0; i<obj->num_handles; i++) { handle_add_update(obj->handles[i], dia); } /* Connection points */ for (i=0; i<dia_object_get_num_connections(obj); ++i) { connectionpoint_add_update(obj->connections[i], dia); } }