diff options
Diffstat (limited to 'src/glibext')
| -rw-r--r-- | src/glibext/gbufferline.c | 64 | ||||
| -rw-r--r-- | src/glibext/gbufferline.h | 15 | 
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 *); | 
