diff options
Diffstat (limited to 'src/glibext/gfontcache.c')
-rw-r--r-- | src/glibext/gfontcache.c | 294 |
1 files changed, 0 insertions, 294 deletions
diff --git a/src/glibext/gfontcache.c b/src/glibext/gfontcache.c deleted file mode 100644 index 2441d27..0000000 --- a/src/glibext/gfontcache.c +++ /dev/null @@ -1,294 +0,0 @@ - -/* OpenIDA - Outil d'analyse de fichiers binaires - * gfontcache.c - mise en cache avec actualisation des polices - * - * Copyright (C) 2012 Cyrille Bagard - * - * This file is part of OpenIDA. - * - * OpenIDA 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. - * - * OpenIDA 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 Foobar. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "gfontcache.h" - - - -/* ----------------------- MISE EN PLACE D'UN CONTEXTE GLOBAL ----------------------- */ - - -/* Utilisable par toutes les impressions. */ -static PangoContext *_context = NULL; - - - -/* ---------------------------- CACHE DE POLICES PAR VUE ---------------------------- */ - - -/* Description d'un cache pour polices (instance) */ -struct _GFontCache -{ - GObject parent; /* A laisser en premier */ - - GHashTable *table; /* Associations desc./police */ - - GtkWidget *widget; - -}; - -/* Description d'un cache pour polices (classe) */ -struct _GFontCacheClass -{ - GObjectClass parent; /* A laisser en premier */ - -}; - - -/* Initialise la classe des caches pour polices. */ -static void g_font_cache_class_init(GFontCacheClass *); - -/* Initialise un cache pour polices. */ -static void g_font_cache_init(GFontCache *); - -/* Supprime toutes les références externes. */ -static void g_font_cache_dispose(GFontCache *); - -/* Procède à la libération totale de la mémoire. */ -static void g_font_cache_finalize(GFontCache *); - - - -/* ---------------------------------------------------------------------------------- */ -/* MISE EN PLACE D'UN CONTEXTE GLOBAL */ -/* ---------------------------------------------------------------------------------- */ - - -/****************************************************************************** -* * -* Paramètres : - * -* * -* Description : Initialise le contexte Pango pour la gestion des textes. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void init_global_pango_context(void) -{ - PangoFontDescription *desc; /* Police de caractères */ - - _context = gdk_pango_context_get(); - - desc = pango_font_description_from_string("mono 10"); - pango_context_set_font_description(_context, desc); - pango_font_description_free(desc); - - pango_context_set_base_dir(_context, PANGO_DIRECTION_LTR); - pango_context_set_language(_context, gtk_get_default_language()); - -} - - -/****************************************************************************** -* * -* Paramètres : - * -* * -* Description : Fournit le contexte Pango global pour l'impression. * -* * -* Retour : Contexte prêt à emploi. * -* * -* Remarques : - * -* * -******************************************************************************/ - -PangoContext *get_global_pango_context(void) -{ - return _context; - -} - - -/****************************************************************************** -* * -* Paramètres : - * -* * -* Description : Supprime le contexte Pango pour la gestion des textes. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void exit_global_pango_context(void) -{ - g_object_unref(G_OBJECT(_context)); - -} - - - -/* ---------------------------------------------------------------------------------- */ -/* CACHE DE POLICES PAR VUE */ -/* ---------------------------------------------------------------------------------- */ - - - -/* Indique le type défini pour un cache pour polices. */ -G_DEFINE_TYPE(GFontCache, g_font_cache, G_TYPE_OBJECT); - - -/****************************************************************************** -* * -* Paramètres : class = classe à initialiser. * -* * -* Description : Initialise la classe des caches pour polices. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_font_cache_class_init(GFontCacheClass *class) -{ - GObjectClass *object; /* Autre version de la classe */ - - object = G_OBJECT_CLASS(class); - - object->dispose = (GObjectFinalizeFunc/* ! */)g_font_cache_dispose; - object->finalize = (GObjectFinalizeFunc)g_font_cache_finalize; - -} - - -/****************************************************************************** -* * -* Paramètres : fcache = instance à initialiser. * -* * -* Description : Initialise un cache pour polices. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_font_cache_init(GFontCache *fcache) -{ - fcache->table = g_hash_table_new_full((GHashFunc)pango_font_description_hash, - (GEqualFunc)pango_font_description_equal, - (GDestroyNotify)pango_font_description_free, - (GDestroyNotify)g_object_unref); - -} - - -/****************************************************************************** -* * -* Paramètres : fcache = instance d'objet GLib à traiter. * -* * -* Description : Supprime toutes les références externes. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_font_cache_dispose(GFontCache *fcache) -{ - g_hash_table_destroy(fcache->table); - - G_OBJECT_CLASS(g_font_cache_parent_class)->dispose(G_OBJECT(fcache)); - -} - - -/****************************************************************************** -* * -* Paramètres : fcache = instance d'objet GLib à traiter. * -* * -* Description : Procède à la libération totale de la mémoire. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void g_font_cache_finalize(GFontCache *fcache) -{ - G_OBJECT_CLASS(g_font_cache_parent_class)->finalize(G_OBJECT(fcache)); - -} - - -/****************************************************************************** -* * -* Paramètres : - * -* * -* Description : Crée un bloc virtuel d'instructions. * -* * -* Retour : Adresse de la structure mise en place. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GFontCache *g_font_cache_new(void) -{ - GFontCache *result; /* Structure à retourner */ - - result = g_object_new(G_TYPE_FONT_CACHE, NULL); - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : fcache = instance à consulter, voire compléter. * -* desc = description de la police recherchée. * -* * -* Description : Fournit une police utilisable répondant au besoin. * -* * -* Retour : Police prête à usage. * -* * -* Remarques : - * -* * -******************************************************************************/ - -PangoFont *g_font_cache_lookup(GFontCache *fcache, const PangoFontDescription *desc) -{ - PangoFont *result; /* Instance à retourner */ - PangoFontDescription *key; /* Copie de la description */ - - result = (PangoFont *)g_hash_table_lookup(fcache->table, desc); - - if (result == NULL) - { - result = pango_context_load_font(get_global_pango_context(), desc); - - key = pango_font_description_copy(desc); - g_hash_table_insert(fcache->table, key, result); - - } - - return result; - -} |