diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2016-05-01 01:35:26 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2016-05-01 01:35:26 (GMT) |
commit | ef68a3dd8ff259200ca7f088eecc9ce35e7ffe8f (patch) | |
tree | f89cccbe3d0ac421b41cc49a28bee32e8903e45a /src/glibext/gcodebuffer.h | |
parent | 89ceb1e27afed0bac789e33c2f10eade01747d88 (diff) |
Handled all width measures per view in a dedicated manager.
Diffstat (limited to 'src/glibext/gcodebuffer.h')
-rw-r--r-- | src/glibext/gcodebuffer.h | 89 |
1 files changed, 17 insertions, 72 deletions
diff --git a/src/glibext/gcodebuffer.h b/src/glibext/gcodebuffer.h index 8bcbc4a..f0a7f8d 100644 --- a/src/glibext/gcodebuffer.h +++ b/src/glibext/gcodebuffer.h @@ -30,6 +30,7 @@ #include "delayed.h" #include "gbufferline.h" +#include "gwidthtracker.h" @@ -57,6 +58,12 @@ GType g_code_buffer_get_type(void); /* Crée un nouveau composant de tampon pour code désassemblé. */ GCodeBuffer *g_code_buffer_new(BufferLineColumn); +/* Compte le nombre de lignes rassemblées dans un tampon. */ +size_t g_code_buffer_count_lines(const GCodeBuffer *); + +/* Fournit un lien vers la structure de suivi de largeurs. */ +const GWidthTracker *g_code_buffer_get_width_tracker(const GCodeBuffer *); + /* Initie une nouvelle ligne devant être insérée dans le tampon. */ GBufferLine *g_code_buffer_prepare_new_line(GCodeBuffer *, const mrange_t *); @@ -86,6 +93,9 @@ GBufferLine *g_code_buffer_find_line_by_addr(const GCodeBuffer *, const vmpa2t * /* Retrouve une ligne au sein d'un tampon avec un indice. */ GBufferLine *g_code_buffer_find_line_by_index(const GCodeBuffer *, size_t); +/* Convertit une adresse en indice de ligne. */ +size_t g_code_buffer_get_index_from_address(const GCodeBuffer *, const vmpa2t *, bool); + /* Retrouve l'indice associé à une ligne au sein d'un tampon. */ size_t g_code_buffer_find_index_by_line(const GCodeBuffer *, const GBufferLine *); @@ -127,83 +137,18 @@ bool g_code_buffer_delete_lines_comment(GCodeBuffer *, GBufferLine *); -/* ---------------------- VUE PARTICULIERE D'UN TAMPON DE CODE ---------------------- */ - - -#define G_TYPE_BUFFER_VIEW (g_buffer_view_get_type()) -#define G_BUFFER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_BUFFER_VIEW, GBufferView)) -#define G_BUFFER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_BUFFER_VIEW, GBufferViewClass)) -#define G_IS_BUFFER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), G_TYPE_BUFFER_VIEW)) -#define G_IS_BUFFER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_BUFFER_VIEW)) -#define G_BUFFER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_BUFFER_VIEW, GBufferViewClass)) - - -/* Vue d'un tampon pour code désassemblé (instance) */ -typedef struct _GBufferView GBufferView; - -/* Vue d'un tampon pour code désassemblé (classe) */ -typedef struct _GBufferViewClass GBufferViewClass; - - -/* Détermine le type de la vue d'un tampon pour code désassemblé. */ -GType g_buffer_view_get_type(void); - -/* Crée une nouvelle vue d'un tampon pour code désassemblé. */ -GBufferView *g_buffer_view_new(GCodeBuffer *, segcnt_list *); - -/* Restreint le champ d'application de l'affichage. */ -void g_buffer_view_restrict(GBufferView *, const vmpa2t *, const vmpa2t *); - -/* Indique le champ d'application de l'affichage. */ -void g_buffer_view_get_restrictions(GBufferView *, vmpa2t *, vmpa2t *); +/* ------------------------- SIGNAUX IMMEDIATS POUR UNE VUE ------------------------- */ -/* Fournit le tampon de code lié à un visualisateur donné. */ -GCodeBuffer *g_buffer_view_get_buffer(const GBufferView *); -/* Fournit la hauteur d'impression d'une ligne visualisée. */ -gint g_buffer_view_get_line_height(GBufferView *); - -/* Fournit la largeur requise par une visualisation. */ -gint g_buffer_view_get_width(GBufferView *, const bool *); - -/* Fournit la largeur requise pour dépasser les marges gauches. */ -gint g_buffer_view_get_margin(GBufferView *, const bool *); - -/* Fournit la hauteur requise par une visualisation. */ -gint g_buffer_view_get_height(const GBufferView *); - -/* Calcule la position idéale de curseur pour un point donné. */ -const vmpa2t *g_buffer_view_compute_caret(GBufferView *, gint, gint, const bool *, GdkRectangle *); - -/* Calcule la position idéale de curseur pour un point donné. */ -const vmpa2t *g_buffer_view_compute_caret_full(GBufferView *, GBufferLine *, size_t, gint, const bool *, GdkRectangle *); - -/* Déplace le curseur au sein d'une vue de tampon. */ -const vmpa2t *g_buffer_view_move_caret(GBufferView *, GdkRectangle *, bool, GdkScrollDirection, const bool *); - -/* Supprime toute mise en évidence de segments. */ -bool g_buffer_view_unhighlight_segments(GBufferView *); - -/* Surligne tous les segments similaires à celui sous la souris. */ -bool g_buffer_view_highlight_segments(GBufferView *, gint, gint, const bool *); - -/* Imprime la visualisation du tampon de code désassemblé. */ -void g_buffer_view_draw(const GBufferView *, cairo_t *, gint, gint, const cairo_rectangle_int_t *, const bool *, const gint *); - -/* Retrouve une ligne au sein d'un tampon avec une adresse. */ -GBufferLine *g_buffer_view_find_line_by_addr(const GBufferView *, const vmpa2t *, BufferLineFlags, size_t *); - -/* Retrouve une ligne au sein d'un tampon avec un indice. */ -GBufferLine *g_buffer_view_find_line_by_index(const GBufferView *, size_t ); +/* Accompagne une variation de la quantité de lignes du tampon. */ +typedef void (* buffer_size_changed_cb) (const GCodeBuffer *, bool, size_t, size_t, GObject *); -/* Fournit la ligne présente à une ordonnée donnée. */ -GBufferLine *g_buffer_view_find_line_at(GBufferView *, gint, size_t *); -/* Fournit la ligne et son segment présents à une position. */ -GBufferLine *g_buffer_view_find_line_and_segment_at(GBufferView *, gint *, gint, size_t *, const bool *, GBufferSegment **); +/* Enregistre l'adresse d'une fonction de mise à jour de vue. */ +void g_code_buffer_register_view_callback(GCodeBuffer *, buffer_size_changed_cb, GObject *); -/* Indique la position d'affichage d'une adresse donnée. */ -bool g_buffer_view_get_address_coordinates(GBufferView *, const vmpa2t *, gint *, gint *, bool); +/* Supprime un élément des vues à contacter pour mises à jour. */ +void g_code_buffer_unregister_view_callback(GCodeBuffer *, GObject *); |