From bd9e5747e514ad33adc050a81dc4ff09a2a188e7 Mon Sep 17 00:00:00 2001 From: dscho Date: Mon, 10 Feb 2003 14:16:32 +0000 Subject: added colourmapexample; fixed LinuxVNC to show the right colours --- examples/.cvsignore | 2 +- examples/Makefile.am | 2 +- examples/colourmaptest.c | 32 ++++++++++++++++++++++++++++++++ vncterm/VNConsole.c | 5 ++++- 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 examples/colourmaptest.c diff --git a/examples/.cvsignore b/examples/.cvsignore index 7aab2d4..61a17ba 100644 --- a/examples/.cvsignore +++ b/examples/.cvsignore @@ -9,4 +9,4 @@ storepasswd vncev Makefile.in .deps - +colourmaptest diff --git a/examples/Makefile.am b/examples/Makefile.am index 6875c21..c7635f5 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -10,7 +10,7 @@ endif noinst_HEADERS=radon.h noinst_PROGRAMS=example pnmshow regiontest pnmshow24 fontsel \ - vncev storepasswd $(BACKGROUND_TEST) $(MAC) + vncev storepasswd colourmaptest $(BACKGROUND_TEST) $(MAC) LDADD = -L.. -lvncserver diff --git a/examples/colourmaptest.c b/examples/colourmaptest.c new file mode 100644 index 0000000..1e03f9e --- /dev/null +++ b/examples/colourmaptest.c @@ -0,0 +1,32 @@ +#include "rfb.h" + + +int main(int argc,char** argv) +{ + int i; + uint8_t bytes[256*3]; + + rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,256,256,8,1,1); + + server->rfbServerFormat.trueColour=FALSE; + server->colourMap.count=256; + server->colourMap.is16=FALSE; + for(i=0;i<256;i++) { + bytes[i*3+0]=255-i; /* red */ + bytes[i*3+1]=0; /* green */ + bytes[i*3+2]=i; /* blue */ + } + bytes[128*3+0]=0xff; + bytes[128*3+1]=0; + bytes[128*3+2]=0; + server->colourMap.data.bytes=bytes; + + server->frameBuffer=malloc(256*256); + for(i=0;i<256*256;i++) + server->frameBuffer[i]=(i/256); + + rfbInitServer(server); + rfbRunEventLoop(server,-1,FALSE); + + return(0); +} diff --git a/vncterm/VNConsole.c b/vncterm/VNConsole.c index faf73ed..1335aee 100644 --- a/vncterm/VNConsole.c +++ b/vncterm/VNConsole.c @@ -24,11 +24,14 @@ unsigned char colourMap16[16*3]={ void MakeColourMap16(vncConsolePtr c) { + int i,j; rfbColourMap* colourMap=&(c->rfbScreen->colourMap); if(colourMap->count) free(colourMap->data.bytes); colourMap->data.bytes=malloc(16*3); - memcpy(colourMap->data.bytes,colourMap16,16*3); + for(i=0;i<16;i++) + for(j=0;j<3;j++) + colourMap->data.bytes[i*3+2-j]=colourMap16[i*3+j]; colourMap->count=16; colourMap->is16=FALSE; c->rfbScreen->rfbServerFormat.trueColour=FALSE; -- cgit v1.2.1