1*8d01a27eSchristos /* $NetBSD: gtkviscreen.h,v 1.2 2013/11/22 15:52:05 christos Exp $ *>/ 2dbd550edSchristos #ifndef __GTK_VI_SCREEN_H__ 3dbd550edSchristos #define __GTK_VI_SCREEN_H__ 4dbd550edSchristos 5dbd550edSchristos #include <sys/types.h> 6dbd550edSchristos #include "config.h" 7dbd550edSchristos #include "port.h" 8dbd550edSchristos #include "../common/multibyte.h" 9dbd550edSchristos 10dbd550edSchristos #ifdef HAVE_PANGO 11dbd550edSchristos #include <pango/pango.h> 12dbd550edSchristos #include <pango/pangox.h> 13dbd550edSchristos #else 14dbd550edSchristos #define xthickness klass->xthickness 15dbd550edSchristos #define ythickness klass->ythickness 16dbd550edSchristos #define GTK_CLASS_TYPE(class) class->type 17dbd550edSchristos #endif 18dbd550edSchristos 19dbd550edSchristos #define GTK_TYPE_VI_SCREEN (gtk_vi_screen_get_type ()) 20dbd550edSchristos #define GTK_VI_SCREEN(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_VI_SCREEN, GtkViScreen)) 21dbd550edSchristos #define GTK_VI_SCREEN_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_VI_SCREEN, GtkViScreenClass)) 22dbd550edSchristos #define GTK_IS_VI_SCREEN(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_VI_SCREEN)) 23dbd550edSchristos #define GTK_IS_VI_SCREEN_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_VI_SCREEN)) 24dbd550edSchristos 25dbd550edSchristos typedef struct _GtkViScreen GtkViScreen; 26dbd550edSchristos typedef struct _GtkViScreenClass GtkViScreenClass; 27dbd550edSchristos 28dbd550edSchristos struct _GtkViScreen 29dbd550edSchristos { 30dbd550edSchristos GtkWidget widget; 31dbd550edSchristos 32dbd550edSchristos GdkWindow *text_area; 33dbd550edSchristos 34dbd550edSchristos GtkAdjustment *vadj; 35dbd550edSchristos 36dbd550edSchristos GdkGC *gc; 37dbd550edSchristos GdkGC *reverse_gc; 38dbd550edSchristos 39dbd550edSchristos CHAR_T *chars; 40dbd550edSchristos guchar *endcol; 41dbd550edSchristos guchar *reverse; 42dbd550edSchristos guchar color; 43dbd550edSchristos 44dbd550edSchristos gint cols, rows; 45dbd550edSchristos gint ch_width, ch_height, ch_ascent; 46dbd550edSchristos gint curx, cury; /* character position */ 47dbd550edSchristos gint lastx, lasty; 48dbd550edSchristos gint marked_x, marked_y, marked_maxx, marked_maxy; 49dbd550edSchristos 50dbd550edSchristos #ifdef HAVE_PANGO 51dbd550edSchristos PangoContext *conx; 52dbd550edSchristos PangoAttrList* alist; 53dbd550edSchristos #endif 54dbd550edSchristos }; 55dbd550edSchristos 56dbd550edSchristos struct _GtkViScreenClass 57dbd550edSchristos { 58dbd550edSchristos GtkWidgetClass parent_class; 59dbd550edSchristos 60dbd550edSchristos void (*rename) (GtkViScreen *vi, gchar *name, gint len); 61dbd550edSchristos void (*resized) (GtkViScreen *vi, gint width, gint height); 62dbd550edSchristos }; 63dbd550edSchristos 64dbd550edSchristos GtkType gtk_vi_screen_get_type (void); 65dbd550edSchristos GtkWidget* gtk_vi_screen_new (GtkAdjustment *vadj); 66dbd550edSchristos void gtk_vi_screen_set_adjustment (GtkViScreen *vi_screen, 67dbd550edSchristos GtkAdjustment *vadj); 68dbd550edSchristos void gtk_vi_screen_move (GtkViScreen *vi, gint row, gint col); 69dbd550edSchristos void gtk_vi_screen_clrtoel (GtkViScreen *vi); 70dbd550edSchristos void gtk_vi_screen_attribute(GtkViScreen *vi, gint attribute, gint on); 71dbd550edSchristos void gtk_vi_screen_addstr (GtkViScreen *vi, const char *str, int len); 72dbd550edSchristos void gtk_vi_screen_deleteln (GtkViScreen *vi); 73dbd550edSchristos void gtk_vi_screen_insertln (GtkViScreen *vi); 74dbd550edSchristos void gtk_vi_screen_refresh (GtkViScreen *vi); 75dbd550edSchristos void gtk_vi_screen_rewrite (GtkViScreen *vi, gint row); 76dbd550edSchristos 77dbd550edSchristos #endif /* __GTK_VI_SCREEN_H__ */ 78