diff options
author | dscho <dscho> | 2001-11-19 17:12:42 +0000 |
---|---|---|
committer | dscho <dscho> | 2001-11-19 17:12:42 +0000 |
commit | 9e192f40f2a7fe0785fce8739f270fa1e826eb56 (patch) | |
tree | 65944bbe47859257df9ca6dd828d8edfb4a5950c /x11vnc.c | |
parent | bbcc2f51e676568f25a19eeac6ef2bd800cebeca (diff) | |
download | libtdevnc-9e192f40f2a7fe0785fce8739f270fa1e826eb56.tar.gz libtdevnc-9e192f40f2a7fe0785fce8739f270fa1e826eb56.zip |
first support for colourmaps
Diffstat (limited to 'x11vnc.c')
-rw-r--r-- | x11vnc.c | 29 |
1 files changed, 23 insertions, 6 deletions
@@ -131,6 +131,8 @@ void checkForImageUpdates(rfbScreenInfoPtr s,char *b) int main(int argc,char** argv) { + Screen *sc; + Colormap cm; XImage *framebufferImage; char *backupImage; int xscreen,i; @@ -168,12 +170,27 @@ int main(int argc,char** argv) screen->rfbServerFormat.trueColour = TRUE; if ( screen->rfbServerFormat.bitsPerPixel == 8 ) { - screen->rfbServerFormat.redShift = 0; - screen->rfbServerFormat.greenShift = 2; - screen->rfbServerFormat.blueShift = 5; - screen->rfbServerFormat.redMax = 3; - screen->rfbServerFormat.greenMax = 7; - screen->rfbServerFormat.blueMax = 3; + if(CellsOfScreen(ScreenOfDisplay(dpy,xscreen))!=0) { + XColor color[256]; + int i; + screen->rfbServerFormat.trueColour = FALSE; + screen->colourMap = malloc(sizeof(rfbColourMap)); + screen->colourMap.is16 = TRUE; + screen->colourMap.count = XQueryColors(dpy,DefaultColormap(dpy,xscreen),color,256); + screen->colourMap.data.shorts = malloc(6*screen->colourMap.count); + for(i=0;i<screen->colourMap.count;i++) { + screen->colourMap.data.shorts[i*6+0] = color[i].red; + screen->colourMap.data.shorts[i*6+2] = color[i].green; + screen->colourMap.data.shorts[i*6+4] = color[i].blue; + } + } else { + screen->rfbServerFormat.redShift = 0; + screen->rfbServerFormat.greenShift = 2; + screen->rfbServerFormat.blueShift = 5; + screen->rfbServerFormat.redMax = 3; + screen->rfbServerFormat.greenMax = 7; + screen->rfbServerFormat.blueMax = 3; + } } else { screen->rfbServerFormat.redShift = 0; if ( framebufferImage->red_mask ) |