xref: /netbsd-src/external/bsd/nvi/dist/gtk/gtkviscreen.h (revision 8d01a27e2b735e802aea2b531dbc8b21a5af4376)
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