Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
Archivo: adg-adim.c Proyecto: bert/adg
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);
}
Ejemplo n.º 3
0
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);
}