1 
2 
3 /* This version of microEmacs is based on the public domain C
4  * version written by Dave G. Conroy.
5  * The D programming language version is written by Walter Bright.
6  * http://www.digitalmars.com/d/
7  * This program is in the public domain.
8  */
9 
10 /* D interface to Digital Mars C/C++ disp package.
11  * Windows only.
12  * http://www.digitalmars.com/rtl/disp.html
13  */
14 
15 module disp;
16 
17 version (Windows)
18 {
19 
20 extern (C)
21 {
22 
23 struct disp_t
24 { align(1):
25     uint numrows;
26     uint numcols;
27     uint cursorrow;
28     uint cursorcol;
29     ubyte mono;
30     ubyte snowycga;
31     ubyte mode;
32     ubyte inited;
33     ubyte ega;
34     ubyte[3] reserved;
35     short nowrap;
36 
37     union
38     {
39 	ushort *base;
40 	struct
41 	{   uint offset;
42 	    ushort basep;
43 	}
44     }
45     void *handle;
46 }
47 
48 extern __gshared disp_t disp_state;
49 
50 int	disp_printf(char *,...);
51 int	disp_getmode();
52 int	disp_getattr();
53 int	disp_putc(int);
54 void	disp_levelblockpoke(int,int,int,int,uint,uint *,uint,uint *,uint);
55 void	disp_open();
56 void	disp_puts(const char *);
57 void	disp_box(int,int,uint,uint,uint,uint);
58 void	disp_close();
59 void	disp_move(int,int);
60 void	disp_flush();
61 void	disp_eeol();
62 void	disp_eeop();
63 void	disp_startstand();
64 void	disp_endstand();
65 void	disp_setattr(int);
66 void	disp_setcursortype(int);
67 void	disp_pokew(int,int,ushort);
68 void	disp_scroll(int,uint,uint,uint,uint,uint);
69 void	disp_setmode(ubyte);
70 void	disp_peekbox(ushort *,uint,uint,uint,uint);
71 void	disp_pokebox(ushort *,uint,uint,uint,uint);
72 void	disp_fillbox(uint,uint,uint,uint,uint);
73 void	disp_hidecursor();
74 void	disp_showcursor();
75 ushort	disp_peekw(int,int);
76 
77 enum
78 {
79     DISP_REVERSEVIDEO       = 0x70,
80     DISP_NORMAL             = 0x07,
81     DISP_UNDERLINE          = 0x01,
82     DISP_NONDISPLAY         = 0x00,
83 
84     DISP_INTENSITY          = 0x08,
85     DISP_BLINK              = 0x80,
86 
87     DISP_CURSORBLOCK	    = 100,
88     DISP_CURSORHALF	    = 50,
89     DISP_CURSORUL	    = 20,
90 }
91 
92 }
93 
94 }