summaryrefslogtreecommitdiff
path: root/src/glibext/gbufferline.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2014-04-07 10:59:13 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2014-04-07 10:59:13 (GMT)
commit3e8341ca17547db1dcf28c99d6fc68fe6901573b (patch)
tree57d867d97aa4df4496fe46b46c55b3c02537fd26 /src/glibext/gbufferline.c
parent18d6b808db6e31e867525d68f92d6f928a7ab5a7 (diff)
Relied on Cairo for printing code.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@369 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/glibext/gbufferline.c')
-rw-r--r--src/glibext/gbufferline.c23
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;