add libvncserver
[presencevnc] / libvnc / vncterm / VNConsole.h
1 #include <rfb/rfb.h>
2
3 /* this is now the default */
4 #define USE_ATTRIBUTE_BUFFER
5
6 typedef struct vncConsole {
7   /* width and height in cells (=characters) */
8   int width, height;
9
10   /* current position */
11   int x,y;
12
13   /* characters */
14   char *screenBuffer;
15
16 #ifdef USE_ATTRIBUTE_BUFFER
17   /* attributes: colours. If NULL, default to gray on black, else
18      for each cell an unsigned char holds foreColour|(backColour<<4) */
19   char *attributeBuffer;
20 #endif
21
22   /* if this is set, the screen doesn't scroll. */
23   rfbBool wrapBottomToTop;
24
25   /* height and width of one character */
26   int cWidth, cHeight;
27   /* offset of characters */
28   int xhot,yhot;
29
30   /* colour */
31   unsigned char foreColour,backColour;
32   int8_t cx1,cy1,cx2,cy2;
33
34   /* input buffer */
35   char *inputBuffer;
36   int inputCount;
37   int inputSize;
38   long selectTimeOut;
39   rfbBool doEcho; /* if reading input, do output directly? */
40
41   /* selection */
42   char *selection;
43
44   /* mouse */
45   rfbBool wasRightButtonDown;
46   rfbBool currentlyMarking;
47   int markStart,markEnd;
48
49   /* should text cursor be drawn? (an underscore at current position) */
50   rfbBool cursorActive;
51   rfbBool cursorIsDrawn;
52   rfbBool dontDrawCursor; /* for example, while scrolling */
53
54   rfbFontDataPtr font;
55   rfbScreenInfoPtr screen;
56 } vncConsole, *vncConsolePtr;
57
58 #ifdef USE_ATTRIBUTE_BUFFER
59 vncConsolePtr vcGetConsole(int *argc,char **argv,
60                            int width,int height,rfbFontDataPtr font,
61                            rfbBool withAttributes);
62 #else
63 vncConsolePtr vcGetConsole(int argc,char **argv,
64                            int width,int height,rfbFontDataPtr font);
65 #endif
66 void vcDrawCursor(vncConsolePtr c);
67 void vcHideCursor(vncConsolePtr c);
68 void vcCheckCoordinates(vncConsolePtr c);
69
70 void vcPutChar(vncConsolePtr c,unsigned char ch);
71 void vcPrint(vncConsolePtr c,unsigned char* str);
72 void vcPrintF(vncConsolePtr c,char* format,...);
73
74 void vcPutCharColour(vncConsolePtr c,unsigned char ch,
75                      unsigned char foreColour,unsigned char backColour);
76 void vcPrintColour(vncConsolePtr c,unsigned char* str,
77                    unsigned char foreColour,unsigned char backColour);
78 void vcPrintFColour(vncConsolePtr c,unsigned char foreColour,
79                     unsigned char backColour,char* format,...);
80
81 char vcGetCh(vncConsolePtr c);
82 char vcGetChar(vncConsolePtr c); /* blocking */
83 char *vcGetString(vncConsolePtr c,char *buffer,int maxLen);
84
85 void vcKbdAddEventProc(rfbBool down,rfbKeySym keySym,rfbClientPtr cl);
86 void vcPtrAddEventProc(int buttonMask,int x,int y,rfbClientPtr cl);
87 void vcSetXCutTextProc(char* str,int len, struct _rfbClientRec* cl);
88
89 void vcToggleMarkCell(vncConsolePtr c,int pos);
90 void vcUnmark(vncConsolePtr c);
91
92 void vcProcessEvents(vncConsolePtr c);
93
94 /* before using this function, hide the cursor */
95 void vcScroll(vncConsolePtr c,int lineCount);