summaryrefslogtreecommitdiff
path: root/src/glibext/gbufferline.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/glibext/gbufferline.c')
-rw-r--r--src/glibext/gbufferline.c51
1 files changed, 20 insertions, 31 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c
index cef34ef..562aded 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);
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 *, GdkDrawable *, GdkGC *, gint, gint);
+static void draw_segments_of_column(buffer_line_column *, cairo_t *, GFontCache *, gint, gint);
@@ -94,7 +94,6 @@ struct _GBufferLineClass
{
GObjectClass parent; /* A laisser en premier */
- PangoContext *context; /* Contexte graphique Pango */
PangoAttrList *attribs[RTT_COUNT]; /* Décorateurs pour tampons */
};
@@ -264,11 +263,11 @@ GSList *highlight_all_same_segments(const buffer_line_column *column, GSList *li
/******************************************************************************
* *
-* Paramètres : column = colonne de ligne de texte à manipuler. *
-* drawable = surface de rendu où travailler. *
-* gc = contexte graphique à utiliser pour les pinceaux. *
-* x_init = abscisse du point d'impression de départ. *
-* y = ordonnée du point d'impression. *
+* 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. *
* *
* Description : Imprime le contenu d'une colonne de ligne de texte. *
* *
@@ -278,7 +277,7 @@ GSList *highlight_all_same_segments(const buffer_line_column *column, GSList *li
* *
******************************************************************************/
-static void draw_segments_of_column(buffer_line_column *column, GdkDrawable *drawable, GdkGC *gc, gint x_init, gint y)
+static void draw_segments_of_column(buffer_line_column *column, cairo_t *cairo, GFontCache *fcache, gint x_init, gint y)
{
gint x;
size_t i;
@@ -286,7 +285,7 @@ static void draw_segments_of_column(buffer_line_column *column, GdkDrawable *dra
x = x_init;
for (i = 0; i < column->count; i++)
- g_buffer_segment_draw(column->segments[i], drawable, gc, &x, y);
+ g_buffer_segment_draw(column->segments[i], cairo, fcache, &x, y);
}
@@ -316,21 +315,8 @@ G_DEFINE_TYPE(GBufferLine, g_buffer_line, G_TYPE_OBJECT);
static void g_buffer_line_class_init(GBufferLineClass *class)
{
- GdkScreen *screen; /* Ecran pour GDK */
- PangoFontDescription *font_desc; /* Police de caractère */
PangoAttribute *attrib; /* Propriété de rendu */
- /* Base des exportations */
-
- screen = gdk_screen_get_default();
- class->context = gdk_pango_context_get_for_screen(screen);
-
- font_desc = pango_font_description_from_string("mono 10");
- pango_context_set_font_description(class->context, font_desc);
-
- pango_context_set_base_dir(class->context, PANGO_DIRECTION_LTR);
- pango_context_set_language(class->context, gtk_get_default_language());
-
/* RTT_RAW */
class->attribs[RTT_RAW] = pango_attr_list_new();
@@ -641,14 +627,17 @@ void g_buffer_line_insert_text(GBufferLine *line, BufferLineColumn column, const
GBufferLineClass *class; /* Stockage de briques de base */
GBufferSegment *segment; /* Portion de texte à ajouter */
- class = G_BUFFER_LINE_GET_CLASS(line);
-
if (column == BLC_LAST_USED)
column = line->last_used;
else
line->last_used = column;
- segment = g_buffer_segment_new(class->context, class->attribs[type], text, length);
+ if (length == 0)
+ return;
+
+ class = G_BUFFER_LINE_GET_CLASS(line);
+
+ segment = g_buffer_segment_new(class->attribs[type], text, length);
g_buffer_line_add_segment(line, column, segment);
}
@@ -756,13 +745,13 @@ void g_buffer_line_start_merge_at(GBufferLine *line, BufferLineColumn start)
/******************************************************************************
* *
* Paramètres : line = ligne de texte à manipuler. *
-* drawable = surface de rendu où travailler. *
-* gc = contexte graphique à utiliser pour les pinceaux.*
+* 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. *
-* addr = indique si les positions doivent être affichées. *
-* code = indique si le code binaire doit être affiché. *
+* addr = indique si les positions doivent être affichées.*
+* code = indique si le code binaire doit être affiché. *
* *
* Description : Imprime la ligne de texte représentée. *
* *
@@ -772,7 +761,7 @@ void g_buffer_line_start_merge_at(GBufferLine *line, BufferLineColumn start)
* *
******************************************************************************/
-void g_buffer_line_draw(GBufferLine *line, GdkDrawable *drawable, GdkGC *gc, 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, GFontCache *fcache, 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 */
@@ -784,7 +773,7 @@ void g_buffer_line_draw(GBufferLine *line, GdkDrawable *drawable, GdkGC *gc, con
if (i == BLC_ADDRESS && !addr) continue;
if (i == BLC_BINARY && !code) continue;
- draw_segments_of_column(&line->columns[i], drawable, gc, x, y);
+ draw_segments_of_column(&line->columns[i], cairo, fcache, x, y);
if (i < line->merge_start)
x += max_widths[i] + COL_MARGIN;