/* Chrysalide - Outil d'analyse de fichiers binaires * tokenstyle.h - prototypes pour la centralisation des paramètres de rendu de bribes textuelles * * Copyright (C) 2018-2024 Cyrille Bagard * * This file is part of Chrysalide. * * Chrysalide is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Chrysalide is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _GLIBEXT_TOKENSTYLE_H #define _GLIBEXT_TOKENSTYLE_H #include #include #include #include "helpers.h" /* Types de partie de rendu */ typedef enum _TokenRenderingTag { TRT_NONE, /* Espace ou tabulation */ TRT_RAW_PRINTABLE, /* Contenu brut */ TRT_RAW_NOT_PRINTABLE, /* Contenu brut */ TRT_RAW_FULL, /* Contenu brut et complet */ TRT_RAW_NULL, /* Contenu brut et nul */ TRT_CHR_PRINTABLE, /* Caractère imprimable */ TRT_CHR_NOT_PRINTABLE, /* Caractère non imprimable */ TRT_COMMENT, /* Commentaire */ TRT_INDICATION, /* Aide à la lecture */ TRT_PHYS_ADDR_PAD, /* Position physique (début) */ TRT_PHYS_ADDR, /* Position physique */ TRT_VIRT_ADDR_PAD, /* Adresse virtuelle (début) */ TRT_VIRT_ADDR, /* Adresse virtuelle */ TRT_RAW_CODE, /* Code binaire brut */ TRT_RAW_CODE_NULL, /* Code binaire brut et nul */ TRT_LABEL, /* Etiquette sur une adresse */ TRT_INSTRUCTION, /* Code binaire brut */ TRT_IMMEDIATE, /* Valeur immédiate */ TRT_REGISTER, /* Registre */ TRT_PUNCT, /* Signes de ponctuation */ TRT_HOOK, /* Crochets '[' et ']' */ TRT_SIGNS, /* Signes '+', '-' et '*' */ TRT_LTGT, /* Caractères '<' et '>' */ TRT_SECTION, /* Identifiant de section */ TRT_SEGMENT, /* Indication de segment */ TRT_STRING, /* Chaîne de caractères avec " */ TRT_VAR_NAME, /* Nom de variable */ TRT_KEY_WORD, /* Mot clef de langage */ TRT_ERROR, /* Erreur "interne" */ TRT_COUNT } TokenRenderingTag; /* Caractères par tabulation */ #define TAB_SIZE 2 #define G_TYPE_TOKEN_STYLE (g_token_style_get_type()) DECLARE_GTYPE(GTokenStyle, g_token_style, G, TOKEN_STYLE); /* Crée un gestionnaire de style pour le rendu des lignes. */ GTokenStyle *g_token_style_new(GtkWidget *); /* Fournit la quantité de pixels requise pour une ligne. */ int g_token_style_get_line_height(const GTokenStyle *); /* Fournit la quantité de pixels requise pour l'impression. */ int g_token_style_measure_width(const GTokenStyle *, TokenRenderingTag, size_t); /* Imprime le fragment de texte transmis. */ void g_token_style_draw_text(const GTokenStyle *, TokenRenderingTag, cairo_t *, int *, int, const char *, size_t); /* Enjolive du texte selon les paramètres d'un élément de thème. */ char *g_token_style_build_markup(const GTokenStyle *, TokenRenderingTag, const char *); /* Ajoute du texte enjolivé selon un élément de thème. */ char *g_token_style_append_markup(const GTokenStyle *, char *, TokenRenderingTag, const char *); /* Détermine une taille de localisation, physique ou virtuelle. */ int g_token_style_compute_location_width(const GTokenStyle *, uint64_t, bool); #endif /* _GLIBEXT_TOKENSTYLE_H */