From 9e192f40f2a7fe0785fce8739f270fa1e826eb56 Mon Sep 17 00:00:00 2001 From: dscho Date: Mon, 19 Nov 2001 17:12:42 +0000 Subject: first support for colourmaps --- x11vnc.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/x11vnc.c b/x11vnc.c index 33ecfdf..a9bb1d1 100644 --- a/x11vnc.c +++ b/x11vnc.c @@ -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;icolourMap.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 ) -- cgit v1.2.3