summaryrefslogtreecommitdiff
path: root/src/glibext/linesegment.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/glibext/linesegment.c')
-rw-r--r--src/glibext/linesegment.c67
1 files changed, 62 insertions, 5 deletions
diff --git a/src/glibext/linesegment.c b/src/glibext/linesegment.c
index da6fbe2..192e030 100644
--- a/src/glibext/linesegment.c
+++ b/src/glibext/linesegment.c
@@ -30,13 +30,14 @@
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
-#include <gtk/gtk.h>
#include "../common/extstr.h"
#include "../common/fnv1a.h"
#include "../core/paths.h"
-#include "../gtkext/rendering.h"
+#ifdef INCLUDE_GTK_SUPPORT
+# include "../gtkext/rendering.h"
+#endif
@@ -80,6 +81,9 @@ static const char *_segment_names[RTT_COUNT] = {
};
+
+#ifdef INCLUDE_GTK_SUPPORT
+
/* Compléments à Cairo */
#define CAIRO_FONT_SLANT_COUNT 3
@@ -96,6 +100,7 @@ typedef struct _segment_rendering
cairo_t *font_ctxts[CAIRO_FONTS_COUNT]; /* Contextes de police */
double x_advances[CAIRO_FONTS_COUNT]; /* Largeurs par caractère */
+
rendering_pattern_t patterns[RTT_COUNT];/* Modèles d'impression */
} segment_rendering;
@@ -104,6 +109,8 @@ typedef struct _segment_rendering
/* Configuration globale des rendus */
static segment_rendering _seg_params;
+#endif
+
/* ----------------------- ISOLATION DE CONTENUS PARTAGEABLES ----------------------- */
@@ -114,7 +121,11 @@ struct _line_segment
{
gint ref_count; /* Compteur de références */
- rendering_pattern_t *pattern; /* Propriétés du rendu */
+#ifdef INCLUDE_GTK_SUPPORT
+ rendering_pattern_t *pattern; /* Propriétés du rendu */
+#else
+ RenderingTagType type; /* Type de rendu attendu */
+#endif
fnv64_t hash; /* Empreinte pour comparaisons */
char text[0]; /* Texte brut conservé */
@@ -144,6 +155,8 @@ static void release_shared_segment_content(line_segment *);
/* -------------------- GESTION OPTIMALE D'UNE LISTE DE CONTENUS -------------------- */
+#ifdef INCLUDE_GTK_SUPPORT
+
/* Liste identifiant un ensemble de segments */
struct _segcnt_list
{
@@ -158,6 +171,8 @@ struct _segcnt_list
/* Indique si le contenu d'un segment est notable ou non. */
bool selection_list_has_segment_content(const segcnt_list *, const line_segment *);
+#endif
+
/* ---------------------------------------------------------------------------------- */
@@ -165,6 +180,9 @@ bool selection_list_has_segment_content(const segcnt_list *, const line_segment
/* ---------------------------------------------------------------------------------- */
+#ifdef INCLUDE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : - *
@@ -223,6 +241,9 @@ bool load_segment_rendering_parameters(void)
}
+#endif
+
+
/* ---------------------------------------------------------------------------------- */
/* ISOLATION DE CONTENUS PARTAGEABLES */
@@ -309,7 +330,11 @@ static bool is_line_segment_equal(const line_segment *content, const line_segmen
{
bool result; /* Résultat à retourner */
+#ifdef INCLUDE_GTK_SUPPORT
result = (content->pattern == other->pattern);
+#else
+ result = (content->type == other->type);
+#endif
if (result)
result = (cmp_fnv_64a(content->hash, other->hash) == 0);
@@ -452,7 +477,11 @@ line_segment *get_new_line_segment(RenderingTagType type, const char *text, size
else
content = (line_segment *)malloc(sizeof(line_segment) + length + 1);
+#ifdef INCLUDE_GTK_SUPPORT
content->pattern = &_seg_params.patterns[type];
+#else
+ content->type = type;
+#endif
content->hash = fnv_64a_hash(text);
@@ -523,7 +552,11 @@ RenderingTagType get_line_segment_type(const line_segment *segment)
{
RenderingTagType result; /* Résultat à renvoyer */
+#ifdef INCLUDE_GTK_SUPPORT
result = (RenderingTagType)(segment->pattern - _seg_params.patterns);
+#else
+ result = segment->type;
+#endif
return result;
@@ -545,6 +578,16 @@ RenderingTagType get_line_segment_type(const line_segment *segment)
char *get_line_segment_text(const line_segment *segment, bool markup)
{
+#ifndef INCLUDE_GTK_SUPPORT
+
+ char *result; /* Description à renvoyer */
+
+ result = strdup(segment->text);
+
+ return result;
+
+#else
+
char *result; /* Description à renvoyer */
char color[7]; /* Couleur hexadécimale */
char *valid;
@@ -624,9 +667,14 @@ char *get_line_segment_text(const line_segment *segment, bool markup)
return result;
+#endif
+
}
+#ifdef INCLUDE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : segment = fragment de texte à consulter. *
@@ -911,6 +959,9 @@ void export_line_segment_style(buffer_export_context *ctx, BufferExportType type
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : segment = fragment de texte à manipuler. *
@@ -927,12 +978,12 @@ void export_line_segment_style(buffer_export_context *ctx, BufferExportType type
void export_line_segment(const line_segment *segment, buffer_export_context *ctx, BufferExportType type)
{
- size_t index; /* Indice du modèle de rendu */
+ RenderingTagType index; /* Indice du modèle de rendu */
switch (type)
{
case BET_HTML:
- index = (segment->pattern - _seg_params.patterns);
+ index = get_line_segment_type(segment);
dprintf(ctx->fd, "<SPAN class=\"%s\">", _segment_names[index]);
break;
default:
@@ -959,6 +1010,9 @@ void export_line_segment(const line_segment *segment, buffer_export_context *ctx
/* ---------------------------------------------------------------------------------- */
+#ifdef INCLUDE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : - *
@@ -1147,3 +1201,6 @@ bool selection_list_has_segment_content(const segcnt_list *list, const line_segm
return result;
}
+
+
+#endif