diff options
Diffstat (limited to 'src/glibext/gbufferline.c')
-rw-r--r-- | src/glibext/gbufferline.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c index 18f8a2a..907b5bd 100644 --- a/src/glibext/gbufferline.c +++ b/src/glibext/gbufferline.c @@ -67,7 +67,7 @@ static GBufferSegment *get_segment_at(const buffer_line_column *, gint *, bool); GSList *highlight_all_same_segments(const buffer_line_column *, GSList *, const GBufferSegment *); /* Imprime le contenu d'une colonne de ligne de texte. */ -static void draw_segments_of_column(buffer_line_column *, cairo_t *, GFontCache *, gint, gint); +static void draw_segments_of_column(buffer_line_column *, cairo_t *, gint, gint); @@ -86,6 +86,8 @@ struct _GBufferLine BufferLineColumn merge_start; /* Début de la zone globale */ BufferLineColumn last_used; /* Dernière colonne utilisée */ + cairo_surface_t *bookmark_img; /* Image pour les signets */ + }; /* Représentation de fragments de texte en ligne (classe) */ @@ -265,7 +267,6 @@ GSList *highlight_all_same_segments(const buffer_line_column *column, GSList *li * * * Paramètres : column = colonne de ligne de texte à manipuler. * * cairo = contexte graphique à utiliser pour les pinceaux. * -* fcache = gestionnaire des polices pour l'impression. * * x_init = abscisse du point d'impression de départ. * * y = ordonnée du point d'impression. * * * @@ -277,7 +278,7 @@ GSList *highlight_all_same_segments(const buffer_line_column *column, GSList *li * * ******************************************************************************/ -static void draw_segments_of_column(buffer_line_column *column, cairo_t *cairo, GFontCache *fcache, gint x_init, gint y) +static void draw_segments_of_column(buffer_line_column *column, cairo_t *cairo, gint x_init, gint y) { gint x; size_t i; @@ -285,7 +286,7 @@ static void draw_segments_of_column(buffer_line_column *column, cairo_t *cairo, x = x_init; for (i = 0; i < column->count; i++) - g_buffer_segment_draw(column->segments[i], cairo, fcache, &x, y); + g_buffer_segment_draw(column->segments[i], cairo, &x, y); } @@ -472,6 +473,7 @@ static void g_buffer_line_class_init(GBufferLineClass *class) static void g_buffer_line_init(GBufferLine *line) { BufferLineColumn i; /* Boucle de parcours */ + char *filename; /* Chemin d'accès à utiliser */ for (i = BLC_ADDRESS; i < BLC_COUNT; i++) reset_column(&line->columns[i]); @@ -479,6 +481,9 @@ static void g_buffer_line_init(GBufferLine *line) line->merge_start = BLC_COUNT; line->last_used = BLC_COUNT; + filename = "/home/ocb/prog/chrysalide.cdb/pixmaps/bookmark.png"; + line->bookmark_img = cairo_image_surface_create_from_png(filename); + } @@ -684,7 +689,7 @@ void g_buffer_line_insert_text(GBufferLine *line, BufferLineColumn column, const class = G_BUFFER_LINE_GET_CLASS(line); - segment = g_buffer_segment_new(class->attribs[type], text, length); + segment = g_buffer_segment_new(type, text, length); g_buffer_line_add_segment(line, column, segment); } @@ -808,7 +813,6 @@ void g_buffer_line_start_merge_at(GBufferLine *line, BufferLineColumn start) * * * Paramètres : line = ligne de texte à manipuler. * * cairo = contexte graphique à utiliser pour les pinceaux.* -* fcache = gestionnaire des polices pour l'impression. * * max_widths = largeurs de colonne à respecter. * * x_init = abscisse du point d'impression de départ. * * y = ordonnée du point d'impression. * @@ -823,11 +827,14 @@ void g_buffer_line_start_merge_at(GBufferLine *line, BufferLineColumn start) * * ******************************************************************************/ -void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, GFontCache *fcache, const gint max_widths[BLC_COUNT], gint x_init, gint y, bool addr, bool code) +void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, const gint max_widths[BLC_COUNT], gint x_init, gint y, bool addr, bool code) { gint x; /* Point de départ d'impression*/ BufferLineColumn i; /* Boucle de parcours */ + cairo_set_source_surface(cairo, line->bookmark_img, 5, y); + cairo_paint(cairo); + x = x_init; for (i = BLC_ADDRESS; i < BLC_COUNT; i++) @@ -835,7 +842,7 @@ void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, GFontCache *fcache, c if (i == BLC_ADDRESS && !addr) continue; if (i == BLC_BINARY && !code) continue; - draw_segments_of_column(&line->columns[i], cairo, fcache, x, y); + draw_segments_of_column(&line->columns[i], cairo, x, y); if (i < line->merge_start) x += max_widths[i] + COL_MARGIN; |