/* OpenIDA - Outil d'analyse de fichiers binaires * layout.h - prototypes pour la mise en place de graphique * * Copyright (C) 2009-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 . */ #ifndef _GRAPH_LAYOUT_H #define _GRAPH_LAYOUT_H #include #include "../gtkgraphview.h" #include "../gtkviewpanel.h" /* Dispose une série de morceaux d'affichage en graphique. */ bool build_graph_view(GtkGraphView *, GInstrBlock *, GtkViewPanel **, size_t); #include "edge.h" #include "../gtkbufferview.h" #define G_TYPE_GRAPH_LAYOUT g_graph_layout_get_type() #define G_GRAPH_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_graph_layout_get_type(), GGraphLayout)) #define G_IS_GRAPH_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_graph_layout_get_type())) #define G_GRAPH_LAYOUT_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_graph_layout_get_type(), GGraphLayoutIface)) #define G_GRAPH_LAYOUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_GRAPH_LAYOUT, GGraphLayoutClass)) /* Mise en disposition de blocs en graphique (instance) */ typedef struct _GGraphLayout GGraphLayout; /* Mise en disposition de blocs en graphique (classe) */ typedef struct _GGraphLayoutClass GGraphLayoutClass; /* Indique le type définit par la GLib pour les mises en disposition graphique. */ GType g_graph_layout_get_type(void); /* Construit un graphique à partir de blocs basiques. */ GGraphLayout *g_graph_layout_new(GInstrBlock *, GtkBufferView **, size_t); /* Ajoute un lien entre deux noeuds au graphique. */ void g_graph_layout_add_edge(GGraphLayout *, GGraphEdge *); /* Met à jour les positions des différents noeuds. */ void g_graph_layout_refresh(GGraphLayout *); /* Dispose chaque noeud sur la surface de destination donnée. */ void g_graph_layout_place(GGraphLayout *, GtkGraphView *); /* Fournit la taille requise pour un plein rendu du graphique. */ void g_graph_layout_size_request(const GGraphLayout *, GtkRequisition *); /* Dessine les liens graphiques enregistrés dans le moteur. */ void g_graph_layout_draw(const GGraphLayout *, cairo_t *, bool); #endif /* _GRAPH_LAYOUT_H */