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); 96