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 }