VNCviewGS/colortables.cc
2015-09-23 19:06:46 -05:00

196 lines
9.2 KiB
C++

#pragma noroot
#include <types.h>
#include <stdlib.h>
unsigned char *bigcoltab640a = NULL;
unsigned char *bigcoltab640b = NULL;
unsigned char *bigcoltab320 = NULL;
const unsigned char coltab320[] = {
/* bbgggrrr - incoming pixel data */
/* 00000 */ 0x00,0x00,0x00,0x22,0x77,0x77,0x77,0x77,
/* 00001 */ 0x00,0x00,0x22,0x22,0x22,0x77,0x77,0x77,
/* 00010 */ 0x55,0x55,0x22,0x22,0x22,0x22,0x66,0x66,
/* 00011 */ 0x55,0x55,0x22,0x22,0x22,0x22,0x66,0x66,
/* 00100 */ 0x55,0x55,0x55,0x22,0x22,0x66,0x66,0x66,
/* 00101 */ 0x55,0x55,0x55,0x55,0x22,0x66,0x66,0x66,
/* 00110 */ 0xAA,0xAA,0xAA,0xAA,0x99,0x99,0x99,0x99,
/* 00111 */ 0xAA,0xAA,0xAA,0xAA,0x99,0x99,0x99,0x99,
/* 01000 */ 0x00,0x00,0x22,0x22,0x22,0x77,0x77,0x77,
/* 01001 */ 0x00,0x00,0x22,0x22,0x22,0x22,0x77,0x77,
/* 01010 */ 0x55,0x11,0x11,0x11,0x11,0x22,0x66,0x66,
/* 01011 */ 0x55,0x11,0x11,0x11,0x11,0x11,0x66,0x66,
/* 01100 */ 0x55,0x55,0x11,0x11,0x11,0x11,0x88,0x88,
/* 01101 */ 0x55,0x55,0x11,0x11,0x11,0x88,0x88,0x88,
/* 01110 */ 0xAA,0xAA,0xAA,0x11,0x11,0x99,0x99,0x99,
/* 01111 */ 0xAA,0xAA,0xAA,0xAA,0x99,0x99,0x99,0x99,
/* 10000 */ 0x44,0x44,0x33,0x33,0x33,0x33,0x33,0x33,
/* 10001 */ 0x44,0x33,0x33,0x33,0x33,0x33,0x33,0x88,
/* 10010 */ 0x44,0x33,0x33,0x33,0x33,0x33,0x88,0x88,
/* 10011 */ 0x44,0x33,0x33,0x33,0x33,0x33,0x88,0x88,
/* 10100 */ 0xBB,0xBB,0x11,0x11,0x11,0xEE,0x88,0x88,
/* 10101 */ 0xBB,0xBB,0xBB,0x11,0xEE,0xEE,0x88,0x88,
/* 10110 */ 0xBB,0xBB,0xBB,0xBB,0xEE,0xEE,0xEE,0x88,
/* 10111 */ 0xBB,0xBB,0xBB,0xBB,0xEE,0xEE,0xEE,0xFF,
/* 11000 */ 0x44,0x44,0x44,0x33,0x33,0x33,0x33,0x33,
/* 11001 */ 0x44,0x44,0x33,0x33,0x33,0x33,0x33,0xCC,
/* 11010 */ 0x44,0x44,0xDD,0xDD,0xDD,0xDD,0xCC,0xCC,
/* 11011 */ 0x44,0xDD,0xDD,0xDD,0xDD,0xCC,0xCC,0xCC,
/* 11100 */ 0xBB,0xBB,0xDD,0xDD,0xDD,0xCC,0xCC,0xCC,
/* 11101 */ 0xBB,0xBB,0xBB,0xDD,0xDD,0xCC,0xCC,0xCC,
/* 11110 */ 0xBB,0xBB,0xBB,0xBB,0xEE,0xEE,0xFF,0xFF,
/* 11111 */ 0xBB,0xBB,0xBB,0xBB,0xBB,0xFF,0xFF,0xFF
};
/* Based on grayscale palette */
const unsigned char coltab640[] = {
/* bbgggrrr - incoming pixel data */
/* 00000 */ 0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x55,
/* 00001 */ 0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,
/* 00010 */ 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
/* 00011 */ 0x55,0x55,0x55,0x55,0x55,0x55,0xAA,0xAA,
/* 00100 */ 0x55,0x55,0x55,0x55,0xAA,0xAA,0xAA,0xAA,
/* 00101 */ 0x55,0x55,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
/* 00110 */ 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
/* 00111 */ 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,
/* 01000 */ 0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x55,
/* 01001 */ 0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,
/* 01010 */ 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xAA,
/* 01011 */ 0x55,0x55,0x55,0x55,0x55,0xAA,0xAA,0xAA,
/* 01100 */ 0x55,0x55,0x55,0xAA,0xAA,0xAA,0xAA,0xAA,
/* 01101 */ 0x55,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
/* 01110 */ 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,
/* 01111 */ 0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,
/* 10000 */ 0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,
/* 10001 */ 0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
/* 10010 */ 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xAA,
/* 10011 */ 0x55,0x55,0x55,0x55,0x55,0xAA,0xAA,0xAA,
/* 10100 */ 0x55,0x55,0x55,0xAA,0xAA,0xAA,0xAA,0xAA,
/* 10101 */ 0x55,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
/* 10110 */ 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,
/* 10111 */ 0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,
/* 11000 */ 0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,
/* 11001 */ 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
/* 11010 */ 0x55,0x55,0x55,0x55,0x55,0x55,0xAA,0xAA,
/* 11011 */ 0x55,0x55,0x55,0x55,0xAA,0xAA,0xAA,0xAA,
/* 11100 */ 0x55,0x55,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
/* 11101 */ 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
/* 11110 */ 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,
/* 11111 */ 0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF
};
BOOLEAN AllocateBigColorTables (void)
{
bigcoltab640a = malloc(65536);
bigcoltab640b = malloc(65536);
bigcoltab320 = malloc(65536);
if (bigcoltab640a==NULL || bigcoltab640b==NULL || bigcoltab320==NULL)
return FALSE;
return TRUE;
}
/* iters = number of iterations to do (must be > 0) */
BOOLEAN MakeBigColorTables (unsigned int iters)
{
static unsigned int i = 0;
unsigned int iMax = i + iters;
if (iMax < i) /* Deal with wraparound */
iMax = 0;
/* The addressing scheme here depends on the IIgs's little-endianness */
do {
bigcoltab320[i] = (coltab320[i&0xFF]&0xF0) + (coltab320[i>>8]&0x0F);
bigcoltab640a[i] = (coltab640[i&0xFF]&0xC0) + (coltab640[i>>8]&0x30);
bigcoltab640b[i] = (coltab640[i&0xFF]&0x0C) + (coltab640[i>>8]&0x03);
i++;
} while (i != iMax);
if (iMax == 0)
return TRUE; /* Done */
else
return FALSE; /* In progress */
}
#if 0
/* Old 640-mode color tables for dithered color (with alternating tables
* used in alternating display columns); based on standard 640-mode palette.
*/
const unsigned char coltab640[] = {
/* bbgggrrr - incoming pixel data */
/* 00000 */ 0x00,0x00,0x00,0x44,0x44,0x44,0x44,0x44,
/* 00001 */ 0x00,0x00,0x00,0x44,0x44,0x44,0x44,0x66,
/* 00010 */ 0x00,0x00,0x22,0x22,0x22,0x22,0x66,0x66,
/* 00011 */ 0x88,0x88,0x22,0x22,0x22,0x22,0x66,0x66,
/* 00100 */ 0x88,0x88,0x22,0x22,0x22,0x22,0x66,0x66,
/* 00101 */ 0x88,0x88,0x88,0x22,0x22,0x22,0x66,0x66,
/* 00110 */ 0x88,0x88,0xAA,0xAA,0xAA,0xAA,0x66,0x66,
/* 00111 */ 0x88,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x66,
/* 01000 */ 0x11,0x11,0x11,0x44,0x44,0x44,0x44,0x44,
/* 01001 */ 0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x77,
/* 01010 */ 0x11,0x11,0x22,0x22,0x22,0x22,0x77,0x77,
/* 01011 */ 0x99,0x99,0x22,0x22,0x22,0x22,0x77,0x77,
/* 01100 */ 0x99,0x99,0x22,0x22,0x22,0x22,0x77,0x77,
/* 01101 */ 0x99,0x99,0x22,0x22,0x22,0x22,0x77,0x77,
/* 01110 */ 0x99,0x99,0xBB,0xBB,0xBB,0xBB,0xEE,0xEE,
/* 01111 */ 0x99,0xBB,0xBB,0xBB,0xBB,0xBB,0xEE,0xEE,
/* 10000 */ 0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,
/* 10001 */ 0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x77,
/* 10010 */ 0x11,0x11,0x33,0x33,0x55,0x55,0x77,0x77,
/* 10011 */ 0x99,0x99,0x33,0x33,0x33,0x33,0x77,0x77,
/* 10100 */ 0x99,0x99,0x33,0x33,0x33,0x33,0x77,0x77,
/* 10101 */ 0x99,0x99,0x99,0x33,0x33,0x33,0x77,0x77,
/* 10110 */ 0x99,0x99,0xBB,0xBB,0xBB,0xBB,0xEE,0xEE,
/* 10111 */ 0x99,0x99,0xBB,0xBB,0xBB,0xBB,0xEE,0xEE,
/* 11000 */ 0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,
/* 11001 */ 0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,
/* 11010 */ 0x99,0x99,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,
/* 11011 */ 0x99,0x99,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,
/* 11100 */ 0x99,0x99,0xDD,0xDD,0xDD,0xDD,0xDD,0xFF,
/* 11101 */ 0x99,0x99,0xDD,0xDD,0xDD,0xDD,0xFF,0xFF,
/* 11110 */ 0x99,0x99,0xDD,0xDD,0xDD,0xFF,0xFF,0xFF,
/* 11111 */ 0x99,0x99,0xDD,0xDD,0xFF,0xFF,0xFF,0xFF
};
const unsigned char coltab640alt[] = {
/* bbgggrrr - incoming pixel data */
/* 00000 */ 0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x11,
/* 00001 */ 0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x99,
/* 00010 */ 0x00,0x00,0x88,0x88,0x88,0x88,0x99,0x99,
/* 00011 */ 0x22,0x22,0x88,0x88,0x88,0x88,0x99,0x99,
/* 00100 */ 0x22,0x22,0x88,0x88,0x88,0x88,0x99,0x99,
/* 00101 */ 0x22,0x22,0x22,0x88,0x88,0x88,0x99,0x99,
/* 00110 */ 0x22,0x22,0xAA,0xAA,0xAA,0xAA,0x99,0x99,
/* 00111 */ 0x22,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x99,
/* 01000 */ 0x44,0x44,0x44,0x11,0x11,0x11,0x11,0x11,
/* 01001 */ 0x44,0x44,0x44,0x55,0x55,0x55,0x55,0xDD,
/* 01010 */ 0x44,0x44,0x88,0x88,0x88,0x88,0xDD,0xDD,
/* 01011 */ 0x66,0x66,0x88,0x88,0x88,0x88,0xDD,0xDD,
/* 01100 */ 0x66,0x66,0x88,0x88,0x88,0x88,0xDD,0xDD,
/* 01101 */ 0x66,0x66,0x88,0x88,0x88,0x88,0xDD,0xDD,
/* 01110 */ 0x66,0x66,0xEE,0xEE,0xEE,0xEE,0xBB,0xBB,
/* 01111 */ 0x66,0xEE,0xEE,0xEE,0xEE,0xEE,0xBB,0xBB,
/* 10000 */ 0x44,0x44,0x55,0x55,0x55,0x55,0x55,0x55,
/* 10001 */ 0x44,0x44,0x55,0x55,0x55,0x55,0x55,0xDD,
/* 10010 */ 0x44,0x44,0xCC,0xCC,0x55,0x55,0xDD,0xDD,
/* 10011 */ 0x66,0x66,0xCC,0xCC,0xCC,0xCC,0xDD,0xDD,
/* 10100 */ 0x66,0x66,0xCC,0xCC,0xCC,0xCC,0xDD,0xDD,
/* 10101 */ 0x66,0x66,0x66,0xCC,0xCC,0xCC,0xDD,0xDD,
/* 10110 */ 0x66,0x66,0xEE,0xEE,0xEE,0xEE,0xBB,0xBB,
/* 10111 */ 0x66,0x66,0xEE,0xEE,0xEE,0xEE,0xBB,0xBB,
/* 11000 */ 0x44,0x44,0x55,0x55,0x55,0x55,0x55,0x55,
/* 11001 */ 0x44,0x44,0x55,0x55,0x55,0x55,0x55,0x55,
/* 11010 */ 0x66,0x66,0x77,0x77,0x77,0x77,0x77,0x77,
/* 11011 */ 0x66,0x66,0x77,0x77,0x77,0x77,0x77,0x77,
/* 11100 */ 0x66,0x66,0x77,0x77,0x77,0x77,0x77,0xFF,
/* 11101 */ 0x66,0x66,0x77,0x77,0x77,0x77,0xFF,0xFF,
/* 11110 */ 0x66,0x66,0x77,0x77,0x77,0xFF,0xFF,0xFF,
/* 11111 */ 0x66,0x66,0x77,0x77,0xFF,0xFF,0xFF,0xFF
};
#endif /* 0 */