diff options
Diffstat (limited to 'src/gtkext/gtklinkrenderer.c')
-rw-r--r-- | src/gtkext/gtklinkrenderer.c | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/src/gtkext/gtklinkrenderer.c b/src/gtkext/gtklinkrenderer.c index 2913c19..43eda38 100644 --- a/src/gtkext/gtklinkrenderer.c +++ b/src/gtkext/gtklinkrenderer.c @@ -149,10 +149,34 @@ GtkObject *gtk_link_renderer_new(LinkColor color, GdkPoint *points, size_t count void gtk_link_renderer_draw(const GtkLinkRenderer *renderer, GdkDrawable *drawable, GdkGC *gc) { cairo_t *cairo; /* Gestionnaire de rendu */ - size_t i; /* Boucle de parcours */ cairo = gdk_cairo_create(drawable); + _gtk_link_renderer_draw(renderer, cairo, true); + + cairo_destroy(cairo); + +} + + +/****************************************************************************** +* * +* Paramètres : renderer = moteur de rendu à manipuler. * +* cairo = assistant pour le rendu graphique. * +* arrow = indique le besoin en flèche à l'arrivée. * +* * +* Description : Dessine les liens graphiques enregistrés dans le moteur. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void _gtk_link_renderer_draw(const GtkLinkRenderer *renderer, cairo_t *cairo, bool arrow) +{ + size_t i; /* Boucle de parcours */ + switch (renderer->color) { default: @@ -167,7 +191,11 @@ void gtk_link_renderer_draw(const GtkLinkRenderer *renderer, GdkDrawable *drawab break; } - cairo_set_line_width(cairo, 1); + /** + * Si on ne veut pas de flèche, on doit se destiner à un aperçu... + * Dans ce cas, pour plus de lisibilité, on double la taille d'impression. + */ + cairo_set_line_width(cairo, arrow ? 1 : 2); cairo_move_to(cairo, renderer->points[0].x, renderer->points[0].y); @@ -176,13 +204,12 @@ void gtk_link_renderer_draw(const GtkLinkRenderer *renderer, GdkDrawable *drawab cairo_stroke(cairo); - draw_link_arrow(cairo, - renderer->points[renderer->count - 2].x, - renderer->points[renderer->count - 2].y, - renderer->points[renderer->count - 1].x, - renderer->points[renderer->count - 1].y); - - cairo_destroy(cairo); + if (arrow) + draw_link_arrow(cairo, + renderer->points[renderer->count - 2].x, + renderer->points[renderer->count - 2].y, + renderer->points[renderer->count - 1].x, + renderer->points[renderer->count - 1].y); } |