summaryrefslogtreecommitdiff
path: root/src/gtkext/gtklinkrenderer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gtkext/gtklinkrenderer.c')
-rw-r--r--src/gtkext/gtklinkrenderer.c45
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);
}