summaryrefslogtreecommitdiff
path: root/src/glibext
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2015-02-11 08:43:35 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2015-02-11 08:43:35 (GMT)
commitabd96dbbe27246e9303173e5e2f47b2e4cedbcb7 (patch)
treec0f8bfd8d6514ac63edcb09655f6feebbd424f09 /src/glibext
parentdfa7e04b4a267f7f30086510781ca3221b7e25f8 (diff)
Marked buffer lines as containing an entry point when needed.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@470 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/glibext')
-rw-r--r--src/glibext/gbufferline.c64
-rw-r--r--src/glibext/gbufferline.h15
2 files changed, 76 insertions, 3 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c
index 54f5fb6..824578d 100644
--- a/src/glibext/gbufferline.c
+++ b/src/glibext/gbufferline.c
@@ -95,6 +95,8 @@ struct _GBufferLine
BufferLineColumn merge_start; /* Début de la zone globale */
BufferLineColumn last_used; /* Dernière colonne utilisée */
+ BufferLineFlags flags; /* Drapeaux particuliers */
+
};
/* Représentation de fragments de texte en ligne (classe) */
@@ -102,6 +104,7 @@ struct _GBufferLineClass
{
GObjectClass parent; /* A laisser en premier */
+ cairo_surface_t *entrypoint_img; /* Image pour les entrées */
cairo_surface_t *bookmark_img; /* Image pour les signets */
};
@@ -440,6 +443,13 @@ static void g_buffer_line_class_init(GBufferLineClass *class)
{
gchar *filename; /* Chemin d'accès à utiliser */
+ filename = find_pixmap_file("entrypoint.png");
+ /* assert(filename != NULL); */
+
+ class->entrypoint_img = cairo_image_surface_create_from_png(filename);
+
+ g_free(filename);
+
filename = find_pixmap_file("bookmark.png");
/* assert(filename != NULL); */
@@ -1130,6 +1140,46 @@ void g_buffer_line_start_merge_at(GBufferLine *line, BufferLineColumn start)
/******************************************************************************
* *
+* Paramètres : line = ligne à venir compléter. *
+* flag = propriété à intégrer. *
+* *
+* Description : Ajoute une propriété particulière à une ligne donnée. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void g_buffer_line_add_flag(GBufferLine *line, BufferLineFlags flag)
+{
+ line->flags |= flag;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : line = ligne à venir compléter. *
+* flag = propriété à supprimer. *
+* *
+* Description : Retire une propriété particulière à une ligne donnée. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void g_buffer_line_remove_flag(GBufferLine *line, BufferLineFlags flag)
+{
+ line->flags &= ~flag;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : line = ligne de texte à manipuler. *
* cairo = contexte graphique à utiliser pour les pinceaux.*
* max_widths = largeurs de colonne à respecter. *
@@ -1151,10 +1201,18 @@ void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, const gint max_widths
gint x; /* Point de départ d'impression*/
BufferLineColumn i; /* Boucle de parcours */
- class = G_BUFFER_LINE_GET_CLASS(line);
+ if (line->flags != BLF_NONE)
+ {
+ class = G_BUFFER_LINE_GET_CLASS(line);
+
+ if (line->flags & BLF_ENTRYPOINT)
+ cairo_set_source_surface(cairo, class->entrypoint_img, 5, y);
+ else if (line->flags & BLF_BOOKMARK)
+ cairo_set_source_surface(cairo, class->bookmark_img, 5, y);
- cairo_set_source_surface(cairo, class->bookmark_img, 5, y);
- cairo_paint(cairo);
+ cairo_paint(cairo);
+
+ }
x = x_init;
diff --git a/src/glibext/gbufferline.h b/src/glibext/gbufferline.h
index 9b35f0b..6984c37 100644
--- a/src/glibext/gbufferline.h
+++ b/src/glibext/gbufferline.h
@@ -83,6 +83,15 @@ typedef enum _BufferLineColumn
#define COL_MARGIN 23
+/* Propriétés particulières supplémentaires */
+typedef enum _BufferLineFlags
+{
+ BLF_NONE = 0 << 0, /* Aucune */
+ BLF_ENTRYPOINT = 1 << 0, /* Représentation d'une entrée */
+ BLF_BOOKMARK = 1 << 1 /* Signet associé */
+
+} BufferLineFlags;
+
/* Détermine le type de la représentation de fragments de texte en ligne. */
GType g_buffer_line_get_type(void);
@@ -126,6 +135,12 @@ gint g_buffer_line_get_merge_width(GBufferLine *, BufferLineColumn *, const bool
/* Définit la colonne à partir de laquelle la fusion opère. */
void g_buffer_line_start_merge_at(GBufferLine *, BufferLineColumn);
+/* Ajoute une propriété particulière à une ligne donnée. */
+void g_buffer_line_add_flag(GBufferLine *, BufferLineFlags);
+
+/* Retire une propriété particulière à une ligne donnée. */
+void g_buffer_line_remove_flag(GBufferLine *, BufferLineFlags);
+
/* Imprime la ligne de texte représentée. */
void g_buffer_line_draw(GBufferLine *, cairo_t *, const gint [BLC_COUNT], gint, gint, const bool *);