static gboolean _adg_draw(GtkWidget *widget, cairo_t *cr) { AdgGtkAreaPrivate *data = adg_gtk_area_get_instance_private((AdgGtkArea *) widget); AdgCanvas *canvas = data->canvas; if (canvas != NULL) { cairo_transform(cr, &data->render_map); adg_entity_render((AdgEntity *) canvas, cr); } return FALSE; }
static void _adg_render(AdgEntity *entity, cairo_t *cr) { AdgADim *adim; AdgDim *dim; AdgADimPrivate *data; AdgDimStyle *dim_style; AdgDress dress; const cairo_path_t *cairo_path; adim = (AdgADim *) entity; data = adim->data; if (!data->geometry_arranged) { /* Entity not arranged, probably due to undefined pair found */ return; } dim = (AdgDim *) entity; dim_style = _ADG_GET_DIM_STYLE(dim); adg_style_apply((AdgStyle *) dim_style, entity, cr); adg_entity_render((AdgEntity *) adg_dim_get_quote(dim), cr); if (data->marker1 != NULL) adg_entity_render((AdgEntity *) data->marker1, cr); if (data->marker2 != NULL) adg_entity_render((AdgEntity *) data->marker2, cr); cairo_transform(cr, adg_entity_get_global_matrix(entity)); dress = adg_dim_style_get_line_dress(dim_style); adg_entity_apply_dress(entity, dress, cr); cairo_path = adg_trail_get_cairo_path(data->trail); cairo_append_path(cr, cairo_path); cairo_stroke(cr); }
static gboolean _adg_expose_event(GtkWidget *widget, GdkEventExpose *event) { AdgGtkAreaPrivate *data = adg_gtk_area_get_instance_private((AdgGtkArea *) widget); AdgCanvas *canvas = data->canvas; if (canvas != NULL && event->window != NULL) { cairo_t *cr = gdk_cairo_create(event->window); cairo_transform(cr, &data->render_map); adg_entity_render((AdgEntity *) canvas, cr); cairo_destroy(cr); } if (_ADG_OLD_WIDGET_CLASS->expose_event == NULL) return FALSE; return _ADG_OLD_WIDGET_CLASS->expose_event(widget, event); }