From bd9e5747e514ad33adc050a81dc4ff09a2a188e7 Mon Sep 17 00:00:00 2001
From: dscho <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.3

