From 47c481b7ca247b6abdbece512be30427135b7a39 Mon Sep 17 00:00:00 2001
From: dscho <dscho>
Date: Mon, 10 Feb 2003 20:10:38 +0000
Subject: fixed LinuxVNC colours

---
 vncterm/LinuxVNC.c  | 16 ++++++++++++++++
 vncterm/VNConsole.c |  4 +---
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/vncterm/LinuxVNC.c b/vncterm/LinuxVNC.c
index ec4eb25..3165147 100644
--- a/vncterm/LinuxVNC.c
+++ b/vncterm/LinuxVNC.c
@@ -65,6 +65,17 @@ void do_key(Bool down,KeySym keySym,rfbClientPtr cl)
     isControl--;
 }
 
+/* these colours are from linux kernel drivers/char/console.c */
+unsigned char color_table[] = { 0, 4, 2, 6, 1, 5, 3, 7,
+				       8,12,10,14, 9,13,11,15 };
+/* the default colour table, for VGA+ colour systems */
+int default_red[] = {0x00,0xaa,0x00,0xaa,0x00,0xaa,0x00,0xaa,
+    0x55,0xff,0x55,0xff,0x55,0xff,0x55,0xff};
+int default_grn[] = {0x00,0x00,0xaa,0x55,0x00,0x00,0xaa,0xaa,
+    0x55,0x55,0xff,0xff,0x55,0x55,0xff,0xff};
+int default_blu[] = {0x00,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,
+    0x55,0x55,0x55,0x55,0xff,0xff,0xff,0xff};
+
 int main(int argc,char **argv)
 {
   int width=80,height=25;
@@ -103,6 +114,11 @@ int main(int argc,char **argv)
 
   /* console init */
   console=vcGetConsole(&argc,argv,width,height,&vgaFont,TRUE);
+  for(i=0;i<16;i++) {
+    console->rfbScreen->colourMap.data.bytes[i*3+0]=default_red[color_table[i]];
+    console->rfbScreen->colourMap.data.bytes[i*3+1]=default_grn[color_table[i]];
+    console->rfbScreen->colourMap.data.bytes[i*3+2]=default_blu[color_table[i]];
+  }
   console->rfbScreen->desktopName=title;
   console->rfbScreen->kbdAddEvent=do_key;
   console->selectTimeOut=100000;
diff --git a/vncterm/VNConsole.c b/vncterm/VNConsole.c
index 1335aee..72e2fdc 100644
--- a/vncterm/VNConsole.c
+++ b/vncterm/VNConsole.c
@@ -29,9 +29,7 @@ void MakeColourMap16(vncConsolePtr c)
   if(colourMap->count)
     free(colourMap->data.bytes);
   colourMap->data.bytes=malloc(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];
+  memcpy(colourMap->data.bytes,colourMap16,16*3);
   colourMap->count=16;
   colourMap->is16=FALSE;
   c->rfbScreen->rfbServerFormat.trueColour=FALSE;
-- 
cgit v1.2.3

