xref: /netbsd-src/external/bsd/nvi/dist/motif_l/m_motif.h (revision 8d01a27e2b735e802aea2b531dbc8b21a5af4376)
1 /*	$NetBSD: m_motif.h,v 1.2 2013/11/22 15:52:06 christos Exp $	*/
2 /*-
3  * Copyright (c) 1996
4  *	Rob Zimmermann.  All rights reserved.
5  * Copyright (c) 1996
6  *	Keith Bostic.  All rights reserved.
7  *
8  * See the LICENSE file for redistribution information.
9  *
10  *	"Id: m_motif.h,v 8.11 1996/12/20 10:26:59 bostic Exp  (Berkeley) Date: 1996/12/20 10:26:59 ";
11  */
12 
13 /*
14  * Color support
15  */
16 #define	COLOR_INVALID	0xff	/* force color change */
17 
18 /*
19  * These are color indices.  When vi passes color info, we can do 2..0x3f
20  * in the 8 bits I've allocated.
21  */
22 #define	COLOR_STANDARD	0x00	/* standard video */
23 #define	COLOR_INVERSE	0x01	/* reverse video */
24 
25 /* These are flag bits, they override the above colors. */
26 #define	COLOR_CARET	0x80	/* draw the caret */
27 #define	COLOR_SELECT	0x40	/* draw the selection */
28 
29 #define	ToRowCol( scr, lin, r, c )	\
30 	    r = (lin) / scr->cols;	\
31 	    c = ((lin) - r * (scr->cols)) % scr->cols;
32 #define	Linear( scr, y, x )	\
33 	    ( (y) * scr->cols + (x) )
34 #define	CharAt( scr, y, x )	\
35 	    ( scr->characters + Linear( scr, y, x ) )
36 #define	FlagAt( scr, y, x )	\
37 	    ( scr->flags + Linear( scr, y, x ) )
38 
39 #define	XPOS( scr, x )	\
40 	scr->ch_width * (x)
41 #define	YTOP( scr, y )	\
42 	scr->ch_height * (y)
43 #define	YPOS( scr, y )	\
44 	YTOP( scr, ((y)+1) ) - scr->ch_descent
45 
46 #define	ROW( scr, y )	\
47 	( (y) / scr->ch_height )
48 
49 #define	COLUMN( scr, x )	\
50 	( (x) / scr->ch_width )
51 
52 /* Describes a single 'screen' implemented in X widgetry. */
53 typedef	struct {
54     Widget	parent,		/* the pane */
55 		area,		/* text goes here */
56 		form,		/* holds text and scrollbar */
57 		scroll;		/* not connected yet */
58     Region	clip;
59     int		color;
60     int		rows,
61 		cols;
62     int		ch_width,
63 		ch_height,
64 		ch_descent;
65     int		curx, cury;
66     char	*characters;
67     char	*flags;
68     Boolean	init;
69 } xvi_screen;
70 
71 /* Option type. */
72 typedef enum {
73 	optToggle,
74 	optInteger,
75 	optString,
76 	optFile,
77 	optTerminator
78 } optKind;
79 
80 /* Option entry. */
81 typedef struct {
82 	optKind	kind;				/* Option type. */
83 	String	name;				/* Option name. */
84 	void	*value;				/* Current option value. */
85 	u_int	flags;				/* Associated flags. */
86 } optData;
87 
88 /* Option page. */
89 typedef	struct {
90 	String	name;
91 	String	description;
92 	Widget	holder;
93 	optData	*toggles;
94 	optData	*ints;
95 	optData	*others;
96 } optSheet;
97 
98 /* Utilities for converting X resources...
99  *
100  * __XutConvertResources( Widget, String root, XutResource *, int count )
101  *	The resource block is loaded with converted values
102  *	If the X resource does not exist, no change is made to the value
103  *	'root' should be the application name.
104  */
105 typedef	enum {
106     XutRKinteger,
107     XutRKboolean,
108     XutRKpixel,
109     XutRKpixelBackup,	/* if XutRKpixel fails */
110     XutRKfont,
111     XutRKcursor
112 } XutResourceKind;
113 
114 typedef struct {
115     String		name;
116     XutResourceKind	kind;
117     void		*value;
118 } XutResource;
119 
120 /* Internal use: */
121 extern GC	   __vi_copy_gc;
122 extern void	 (*__vi_exitp) __P((void));
123 extern xvi_screen *__vi_screen;
124 
125 #include "motif_extern.h"
126