#include /* this is now the default */ #define USE_ATTRIBUTE_BUFFER typedef struct vncConsole { /* width and height in cells (=characters) */ int width, height; /* current position */ int x,y; /* characters */ char *screenBuffer; #ifdef USE_ATTRIBUTE_BUFFER /* attributes: colours. If NULL, default to gray on black, else for each cell an unsigned char holds foreColour|(backColour<<4) */ char *attributeBuffer; #endif /* if this is set, the screen doesn't scroll. */ rfbBool wrapBottomToTop; /* height and width of one character */ int cWidth, cHeight; /* offset of characters */ int xhot,yhot; /* colour */ unsigned char foreColour,backColour; int8_t cx1,cy1,cx2,cy2; /* input buffer */ char *inputBuffer; int inputCount; int inputSize; long selectTimeOut; rfbBool doEcho; /* if reading input, do output directly? */ /* selection */ char *selection; /* mouse */ rfbBool wasRightButtonDown; rfbBool currentlyMarking; int markStart,markEnd; /* should text cursor be drawn? (an underscore at current position) */ rfbBool cursorActive; rfbBool cursorIsDrawn; rfbBool dontDrawCursor; /* for example, while scrolling */ rfbFontDataPtr font; rfbScreenInfoPtr screen; } vncConsole, *vncConsolePtr; #ifdef USE_ATTRIBUTE_BUFFER vncConsolePtr vcGetConsole(int *argc,char **argv, int width,int height,rfbFontDataPtr font, rfbBool withAttributes); #else vncConsolePtr vcGetConsole(int argc,char **argv, int width,int height,rfbFontDataPtr font); #endif void vcDrawCursor(vncConsolePtr c); void vcHideCursor(vncConsolePtr c); void vcCheckCoordinates(vncConsolePtr c); void vcPutChar(vncConsolePtr c,unsigned char ch); void vcPrint(vncConsolePtr c,unsigned char* str); void vcPrintF(vncConsolePtr c,char* format,...); void vcPutCharColour(vncConsolePtr c,unsigned char ch, unsigned char foreColour,unsigned char backColour); void vcPrintColour(vncConsolePtr c,unsigned char* str, unsigned char foreColour,unsigned char backColour); void vcPrintFColour(vncConsolePtr c,unsigned char foreColour, unsigned char backColour,char* format,...); char vcGetCh(vncConsolePtr c); char vcGetChar(vncConsolePtr c); /* blocking */ char *vcGetString(vncConsolePtr c,char *buffer,int maxLen); void vcKbdAddEventProc(rfbBool down,rfbKeySym keySym,rfbClientPtr cl); void vcPtrAddEventProc(int buttonMask,int x,int y,rfbClientPtr cl); void vcSetXCutTextProc(char* str,int len, struct _rfbClientRec* cl); void vcToggleMarkCell(vncConsolePtr c,int pos); void vcUnmark(vncConsolePtr c); void vcProcessEvents(vncConsolePtr c); /* before using this function, hide the cursor */ void vcScroll(vncConsolePtr c,int lineCount);