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