Created
January 3, 2017 00:24
-
-
Save rofl0r/12c766fc7e72f90cb56daf5d15652fc9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* gcc console.c -lncurses | |
* | |
* then run after export TERM=xterm-256color | |
* | |
* (C) 2010, 2017 rofl0r | |
* | |
* displays a nice 256color picture on the terminal, if the terminal | |
* supports it. | |
*/ | |
#include <stdint.h> | |
#include <stdio.h> | |
#include <strings.h> | |
#include <string.h> | |
#include <stdlib.h> | |
#include <curses.h> | |
unsigned char rgbdata[] = ( | |
"\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C" | |
"\x00\xF4\x1C\x1C\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xE8\x28\x28\x00\xE4\x2C\x2C\x00\xD8\x28\x28\x00\xDC\x34\x34" | |
"\x00\xD4\x34\x34\x00\xD4\x3C\x34\x00\xD4\x3C\x3C\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x44" | |
"\x00\xBC\x4C\x4C\x00\xBC\x54\x4C\x00\xB4\x54\x4C\x00\xB4\x5C\x54\x00\xAC\x5C\x54\x00\xA8\x58\x58\x00\xA4\x64\x5C\x00\xA4\x64\x5C" | |
"\x00\x98\x68\x58\x00\x9C\x6C\x64\x00\x98\x68\x68\x00\x94\x74\x6C\x00\x94\x74\x6C\x00\x8C\x7C\x6C\x00\x8C\x7C\x74\x00\x84\x7C\x74" | |
"\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x8C\x7C\x00\x74\x8C\x7C\x00\x74\x94\x84\x00\x6C\x94\x84\x00\x6C\x94\x8C\x00\x6C\x9C\x8C" | |
"\x00\x64\x9C\x8C\x00\x60\xA0\xA0\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x50\xB0\x90\x00\x4C\xB4\xA4" | |
"\x00\x44\xB4\xA4\x00\x44\xBC\xA4\x00\x44\xBC\xAC\x00\x44\xBC\xAC\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C" | |
"\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xE4\x2C\x2C" | |
"\x00\xE4\x2C\x2C\x00\xDC\x34\x2C\x00\xDC\x34\x34\x00\xDC\x34\x34\x00\xD4\x3C\x34\x00\xD4\x3C\x3C\x00\xCC\x44\x3C\x00\xCC\x44\x3C" | |
"\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x44\x00\xBC\x4C\x4C\x00\xB4\x54\x4C\x00\xB4\x54\x54\x00\xB4\x5C\x54\x00\xAC\x5C\x54" | |
"\x00\xA8\x58\x58\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x9C\x6C\x64\x00\x9C\x6C\x64\x00\x98\x78\x68\x00\x94\x74\x6C\x00\x8C\x74\x6C" | |
"\x00\x8C\x7C\x6C\x00\x8C\x7C\x74\x00\x84\x84\x74\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x8C\x7C\x00\x74\x8C\x7C\x00\x74\x94\x84" | |
"\x00\x6C\x94\x84\x00\x6C\x94\x8C\x00\x64\x9C\x8C\x00\x64\x9C\x8C\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x54\xAC\x9C" | |
"\x00\x54\xAC\x9C\x00\x50\xB0\x90\x00\x4C\xB4\xA4\x00\x44\xB4\xA4\x00\x44\xBC\xAC\x00\x44\xBC\xAC\x00\x3C\xC4\xAC\x00\x3C\xC4\xAC" | |
"\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xEC\x24\x24" | |
"\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xE4\x2C\x2C\x00\xE4\x2C\x2C\x00\xDC\x34\x2C\x00\xDC\x34\x34\x00\xD4\x34\x34\x00\xD4\x3C\x34" | |
"\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x4C\x00\xBC\x54\x4C\x00\xB4\x54\x4C" | |
"\x00\xB4\x54\x54\x00\xAC\x5C\x54\x00\xAC\x5C\x54\x00\xA8\x68\x58\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x9C\x6C\x64\x00\x9C\x6C\x64" | |
"\x00\x98\x78\x68\x00\x94\x74\x6C\x00\x8C\x74\x6C\x00\x8C\x7C\x74\x00\x84\x7C\x74\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x84\x7C" | |
"\x00\x7C\x8C\x7C\x00\x74\x8C\x84\x00\x74\x94\x84\x00\x6C\x94\x84\x00\x6C\x94\x8C\x00\x64\x9C\x8C\x00\x64\x9C\x8C\x00\x5C\xA4\x94" | |
"\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x4C\xB4\xA4\x00\x4C\xB4\xA4\x00\x44\xB4\xA4\x00\x44\xBC\xAC" | |
"\x00\x3C\xBC\xAC\x00\x3C\xC4\xAC\x00\x3C\xC4\xB4\x00\x3C\xC4\xB4\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C" | |
"\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xE8\x28\x28\x00\xE4\x2C\x2C\x00\xE4\x2C\x2C\x00\xDC\x34\x2C" | |
"\x00\xDC\x34\x34\x00\xD4\x34\x34\x00\xD4\x3C\x34\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x44\x44\x00\xC4\x4C\x44" | |
"\x00\xBC\x4C\x4C\x00\xBC\x54\x4C\x00\xB4\x54\x4C\x00\xB4\x54\x54\x00\xAC\x5C\x54\x00\xAC\x5C\x54\x00\xA4\x64\x5C\x00\xA4\x64\x5C" | |
"\x00\xA4\x64\x5C\x00\x9C\x6C\x64\x00\x9C\x6C\x64\x00\x94\x74\x6C\x00\x94\x74\x6C\x00\x8C\x74\x6C\x00\x8C\x7C\x74\x00\x84\x7C\x74" | |
"\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x84\x7C\x00\x7C\x8C\x7C\x00\x74\x8C\x84\x00\x74\x94\x84\x00\x6C\x94\x84\x00\x6C\x9C\x8C" | |
"\x00\x64\x9C\x8C\x00\x64\x9C\x8C\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x4C\xB4\xA4" | |
"\x00\x4C\xB4\xA4\x00\x44\xBC\xA4\x00\x44\xBC\xAC\x00\x3C\xBC\xAC\x00\x3C\xC4\xAC\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x34\xCC\xB4" | |
"\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xE8\x28\x28" | |
"\x00\xE4\x2C\x2C\x00\xD8\x28\x28\x00\xDC\x34\x2C\x00\xDC\x34\x34\x00\xD4\x34\x34\x00\xD4\x3C\x3C\x00\xCC\x3C\x3C\x00\xCC\x44\x3C" | |
"\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x44\x00\xBC\x4C\x4C\x00\xB4\x54\x4C\x00\xB4\x54\x4C\x00\xB4\x54\x54\x00\xAC\x5C\x54" | |
"\x00\xAC\x5C\x54\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x98\x68\x58\x00\x9C\x6C\x64\x00\x98\x68\x68\x00\x94\x74\x6C\x00\x94\x74\x6C" | |
"\x00\x8C\x7C\x6C\x00\x8C\x7C\x74\x00\x84\x7C\x74\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x8C\x7C\x00\x74\x8C\x7C\x00\x74\x8C\x84" | |
"\x00\x6C\x94\x84\x00\x6C\x94\x84\x00\x6C\x9C\x8C\x00\x64\x9C\x8C\x00\x64\x9C\x94\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x54\xAC\x9C" | |
"\x00\x54\xAC\x9C\x00\x50\xB0\x90\x00\x4C\xB4\xA4\x00\x4C\xB4\xA4\x00\x44\xBC\xA4\x00\x44\xBC\xAC\x00\x3C\xBC\xAC\x00\x3C\xC4\xAC" | |
"\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xCC\xBC\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xEC\x24\x24" | |
"\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xE8\x28\x28\x00\xE4\x2C\x2C\x00\xD8\x28\x28\x00\xDC\x34\x34\x00\xD4\x34\x34\x00\xD4\x3C\x34" | |
"\x00\xD4\x3C\x3C\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x44\x00\xBC\x4C\x4C\x00\xB4\x54\x4C" | |
"\x00\xB4\x54\x4C\x00\xB4\x5C\x54\x00\xAC\x5C\x54\x00\xAC\x5C\x54\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x98\x68\x58\x00\x9C\x6C\x64" | |
"\x00\x98\x68\x68\x00\x94\x74\x6C\x00\x94\x74\x6C\x00\x8C\x7C\x6C\x00\x8C\x7C\x74\x00\x84\x7C\x74\x00\x84\x84\x74\x00\x7C\x84\x7C" | |
"\x00\x7C\x8C\x7C\x00\x74\x8C\x7C\x00\x74\x94\x84\x00\x6C\x94\x84\x00\x6C\x94\x8C\x00\x6C\x9C\x8C\x00\x64\x9C\x8C\x00\x64\x9C\x94" | |
"\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x50\xB0\x90\x00\x4C\xB4\xA4\x00\x44\xB4\xA4\x00\x44\xBC\xA4" | |
"\x00\x44\xBC\xAC\x00\x3C\xC4\xAC\x00\x3C\xC4\xB4\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC\x00\x2C\xD4\xBC" | |
"\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xF4\x1C\x1C\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xE4\x2C\x2C\x00\xE4\x2C\x2C\x00\xDC\x34\x2C" | |
"\x00\xDC\x34\x34\x00\xD4\x34\x34\x00\xD4\x3C\x34\x00\xD4\x3C\x3C\x00\xCC\x44\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x4C\x44" | |
"\x00\xBC\x4C\x44\x00\xBC\x54\x4C\x00\xB4\x54\x4C\x00\xB4\x54\x4C\x00\xAC\x5C\x54\x00\xAC\x5C\x54\x00\xA8\x58\x58\x00\xA4\x64\x5C" | |
"\x00\xA4\x64\x5C\x00\x9C\x6C\x64\x00\x9C\x6C\x64\x00\x98\x68\x68\x00\x94\x74\x6C\x00\x8C\x74\x6C\x00\x8C\x7C\x6C\x00\x84\x7C\x74" | |
"\x00\x84\x84\x74\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x78\x68\x78\x00\x64\x3C\x6C\x00\x68\x68\x78\x00\x6C\x94\x84\x00\x6C\x94\x8C" | |
"\x00\x64\x9C\x8C\x00\x64\x9C\x8C\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x50\xB0\x90" | |
"\x00\x4C\xB4\xA4\x00\x44\xB4\xA4\x00\x44\xBC\xAC\x00\x44\xBC\xAC\x00\x3C\xC4\xAC\x00\x3C\xC4\xB4\x00\x34\xC4\xB4\x00\x34\xCC\xB4" | |
"\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC\x00\x24\xD4\xBC\x00\x24\xD4\xBC\x00\xF4\x1C\x1C\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xEC\x24\x24" | |
"\x00\xE4\x2C\x2C\x00\xE4\x2C\x2C\x00\xDC\x34\x2C\x00\xDC\x34\x34\x00\xD4\x34\x34\x00\xD4\x3C\x34\x00\xCC\x3C\x3C\x00\xCC\x44\x3C" | |
"\x00\xC8\x48\x38\x00\xA0\x20\x60\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x68\x38\x68\x00\x78\x48\x68" | |
"\x00\x88\x48\x68\x00\x98\x58\x58\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x9C\x6C\x64\x00\x9C\x6C\x64\x00\x98\x78\x68\x00\x94\x74\x6C" | |
"\x00\x8C\x74\x6C\x00\x8C\x7C\x74\x00\x84\x7C\x74\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x84\x7C\x00\x7C\x8C\x7C\x00\x68\x68\x78" | |
"\x00\x64\x3C\x6C\x00\x68\x68\x78\x00\x6C\x94\x8C\x00\x64\x9C\x8C\x00\x64\x9C\x8C\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x58\xA8\x98" | |
"\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x4C\xB4\xA4\x00\x4C\xB4\xA4\x00\x44\xB4\xA4\x00\x44\xBC\xAC\x00\x3C\xBC\xAC\x00\x3C\xC4\xAC" | |
"\x00\x34\xC4\xB4\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC\x00\x24\xD4\xBC\x00\x24\xD4\xC4\x00\x24\xD4\xC4" | |
"\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xEC\x24\x24\x00\xE4\x2C\x2C\x00\xE4\x2C\x2C\x00\xDC\x34\x2C\x00\xDC\x34\x34\x00\xD4\x34\x34" | |
"\x00\xD4\x3C\x34\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x44\x44\x00\x98\x48\x58\x00\x64\x3C\x6C\x00\x88\x48\x58" | |
"\x00\xB4\x54\x4C\x00\xA8\x58\x58\x00\x98\x58\x58\x00\x88\x48\x68\x00\x68\x38\x68\x00\x88\x58\x68\x00\x98\x68\x58\x00\x9C\x6C\x64" | |
"\x00\x9C\x6C\x64\x00\x98\x78\x68\x00\x94\x74\x6C\x00\x8C\x7C\x6C\x00\x8C\x7C\x74\x00\x84\x7C\x74\x00\x84\x84\x74\x00\x7C\x84\x7C" | |
"\x00\x7C\x8C\x7C\x00\x7C\x8C\x7C\x00\x74\x8C\x84\x00\x68\x68\x78\x00\x64\x3C\x6C\x00\x68\x68\x78\x00\x64\x9C\x8C\x00\x64\x9C\x94" | |
"\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x58\xA8\x98\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x4C\xB4\xA4\x00\x4C\xB4\xA4\x00\x44\xBC\xA4" | |
"\x00\x44\xBC\xAC\x00\x3C\xBC\xAC\x00\x3C\xC4\xAC\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x28\xC8\xB8\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC" | |
"\x00\x24\xD4\xBC\x00\x24\xDC\xC4\x00\x1C\xDC\xC4\x00\x1C\xDC\xC4\x00\xEC\x24\x24\x00\xE8\x28\x28\x00\xE4\x2C\x2C\x00\xE4\x2C\x2C" | |
"\x00\xDC\x34\x2C\x00\xDC\x34\x34\x00\xD4\x3C\x34\x00\xD4\x3C\x3C\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x4C\x44" | |
"\x00\xBC\x4C\x44\x00\x98\x48\x58\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x78\x48\x68" | |
"\x00\x88\x58\x68\x00\x98\x68\x68\x00\x9C\x6C\x64\x00\x98\x68\x68\x00\x94\x74\x6C\x00\x78\x58\x68\x00\x64\x3C\x6C\x00\x78\x58\x68" | |
"\x00\x84\x7C\x74\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x78\x68\x78\x00\x64\x3C\x6C\x00\x68\x68\x78\x00\x74\x94\x84\x00\x68\x68\x78" | |
"\x00\x64\x3C\x6C\x00\x68\x68\x78\x00\x64\x9C\x94\x00\x60\xA0\xA0\x00\x60\xA0\xA0\x00\x68\x68\x78\x00\x68\x48\x68\x00\x68\x48\x68" | |
"\x00\x68\x48\x68\x00\x60\x60\x60\x00\x58\x78\x88\x00\x60\xA0\xA0\x00\x3C\xBC\xAC\x00\x3C\xC4\xAC\x00\x34\xC4\xB4\x00\x34\xCC\xB4" | |
"\x00\x28\xC8\xB8\x00\x2C\xD4\xBC\x00\x2C\xD4\xBC\x00\x24\xD4\xC4\x00\x24\xDC\xC4\x00\x1C\xDC\xC4\x00\x1C\xDC\xCC\x00\x1C\xDC\xCC" | |
"\x00\xE8\x28\x28\x00\xE4\x2C\x2C\x00\xD8\x28\x28\x00\xDC\x34\x34\x00\xD4\x34\x34\x00\xD4\x3C\x34\x00\xD4\x3C\x3C\x00\xCC\x3C\x3C" | |
"\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x44\x00\xBC\x4C\x4C\x00\x98\x48\x58\x00\x64\x3C\x6C\x00\x88\x48\x68" | |
"\x00\xAC\x5C\x54\x00\x98\x58\x58\x00\x88\x48\x68\x00\x78\x48\x68\x00\x78\x48\x68\x00\x88\x58\x68\x00\x98\x68\x68\x00\x94\x74\x6C" | |
"\x00\x94\x74\x6C\x00\x78\x58\x68\x00\x64\x3C\x6C\x00\x78\x58\x78\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x8C\x7C\x00\x78\x68\x78" | |
"\x00\x64\x3C\x6C\x00\x68\x68\x78\x00\x6C\x94\x84\x00\x68\x68\x78\x00\x64\x3C\x6C\x00\x60\x60\xA0\x00\x5C\xA4\x94\x00\x60\x60\xA0" | |
"\x00\x68\x48\x68\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x60\xA0\xA0" | |
"\x00\x3C\xC4\xB4\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC\x00\x24\xD4\xBC\x00\x24\xD4\xC4\x00\x1C\xDC\xC4" | |
"\x00\x1C\xDC\xC4\x00\x18\xE8\xC8\x00\x14\xE4\xCC\x00\x14\xE4\xCC\x00\xE4\x2C\x2C\x00\xD8\x28\x28\x00\xDC\x34\x34\x00\xD4\x34\x34" | |
"\x00\xD4\x3C\x34\x00\xD4\x3C\x3C\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x44\x00\xBC\x54\x4C" | |
"\x00\xB4\x54\x4C\x00\x88\x48\x58\x00\x64\x3C\x6C\x00\x88\x48\x68\x00\xA8\x68\x58\x00\xA4\x64\x5C\x00\x98\x68\x58\x00\x88\x58\x68" | |
"\x00\x68\x48\x68\x00\x78\x58\x68\x00\x90\x70\x70\x00\x8C\x74\x6C\x00\x8C\x7C\x6C\x00\x78\x58\x68\x00\x64\x3C\x6C\x00\x68\x58\x78" | |
"\x00\x78\x78\x78\x00\x78\x78\x78\x00\x78\x78\x78\x00\x68\x58\x78\x00\x64\x3C\x6C\x00\x68\x68\x78\x00\x64\x9C\x8C\x00\x68\x68\x78" | |
"\x00\x64\x3C\x6C\x00\x58\x78\x88\x00\x5C\xA4\x94\x00\x58\x78\x88\x00\x68\x48\x68\x00\x50\x70\x90\x00\x60\xA0\xA0\x00\x50\xB0\x90" | |
"\x00\x44\xB4\xA4\x00\x44\xBC\xAC\x00\x3C\xC4\xAC\x00\x3C\xC4\xB4\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC" | |
"\x00\x24\xD4\xBC\x00\x24\xD4\xC4\x00\x1C\xDC\xC4\x00\x1C\xDC\xC4\x00\x18\xE8\xC8\x00\x14\xE4\xCC\x00\x14\xE4\xCC\x00\x14\xE4\xCC" | |
"\x00\xDC\x34\x2C\x00\xDC\x34\x34\x00\xD4\x34\x34\x00\xD4\x3C\x34\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xC8\x48\x38\x00\xC4\x44\x44" | |
"\x00\xC4\x4C\x44\x00\xBC\x4C\x4C\x00\xBC\x54\x4C\x00\xB4\x54\x4C\x00\xB4\x54\x54\x00\x88\x48\x58\x00\x64\x3C\x6C\x00\x88\x48\x68" | |
"\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x9C\x6C\x64\x00\x90\x70\x70\x00\x88\x58\x68\x00\x78\x58\x68\x00\x68\x48\x68\x00\x70\x70\x70" | |
"\x00\x84\x7C\x74\x00\x78\x68\x78\x00\x78\x58\x78\x00\x68\x48\x68\x00\x64\x3C\x6C\x00\x68\x48\x78\x00\x68\x58\x78\x00\x68\x48\x78" | |
"\x00\x64\x3C\x6C\x00\x68\x68\x78\x00\x64\x9C\x8C\x00\x68\x68\x78\x00\x64\x3C\x6C\x00\x58\x78\x88\x00\x54\xAC\x9C\x00\x60\xA0\xA0" | |
"\x00\x60\xA0\xA0\x00\x50\x70\x90\x00\x68\x48\x78\x00\x68\x48\x68\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x64\x3C\x6C\x00\x60\xA0\xA0" | |
"\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC\x00\x24\xD4\xBC\x00\x24\xDC\xC4\x00\x1C\xDC\xC4\x00\x1C\xDC\xC4\x00\x14\xE4\xCC" | |
"\x00\x14\xE4\xCC\x00\x18\xE8\xD8\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\xDC\x34\x34\x00\xD4\x3C\x34\x00\xD4\x3C\x34\x00\xCC\x3C\x3C" | |
"\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x4C\x00\xBC\x54\x4C\x00\xB4\x54\x4C\x00\xB4\x54\x54" | |
"\x00\xAC\x5C\x54\x00\xAC\x5C\x54\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x98\x68\x58\x00\x9C\x6C\x64\x00\x9C\x6C\x64\x00\x94\x74\x6C" | |
"\x00\x94\x74\x6C\x00\x8C\x7C\x6C\x00\x8C\x7C\x74\x00\x84\x7C\x74\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x84\x7C\x00\x7C\x8C\x7C" | |
"\x00\x74\x8C\x84\x00\x74\x94\x84\x00\x6C\x94\x84\x00\x6C\x94\x8C\x00\x64\x9C\x8C\x00\x64\x9C\x94\x00\x5C\xA4\x94\x00\x5C\xA4\x94" | |
"\x00\x58\xA8\x98\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x4C\xB4\xA4\x00\x4C\xB4\xA4\x00\x44\xBC\xA4\x00\x44\xBC\xAC\x00\x3C\xBC\xAC" | |
"\x00\x3C\xC4\xAC\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC\x00\x24\xD4\xC4\x00\x24\xDC\xC4" | |
"\x00\x1C\xDC\xC4\x00\x1C\xDC\xCC\x00\x14\xE4\xCC\x00\x14\xE4\xCC\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4" | |
"\x00\xD4\x3C\x34\x00\xD4\x3C\x3C\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x44\x00\xBC\x4C\x4C" | |
"\x00\xBC\x54\x4C\x00\xB4\x54\x4C\x00\xB4\x5C\x54\x00\xAC\x5C\x54\x00\xAC\x5C\x54\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x9C\x6C\x64" | |
"\x00\x9C\x6C\x64\x00\x9C\x6C\x64\x00\x94\x74\x6C\x00\x94\x74\x6C\x00\x8C\x7C\x6C\x00\x8C\x7C\x74\x00\x84\x7C\x74\x00\x84\x84\x74" | |
"\x00\x7C\x84\x7C\x00\x7C\x8C\x7C\x00\x74\x8C\x7C\x00\x74\x8C\x84\x00\x6C\x94\x84\x00\x6C\x94\x84\x00\x6C\x9C\x8C\x00\x64\x9C\x8C" | |
"\x00\x64\x9C\x94\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x50\xB0\x90\x00\x4C\xB4\xA4\x00\x4C\xB4\xA4" | |
"\x00\x44\xBC\xA4\x00\x44\xBC\xAC\x00\x3C\xBC\xAC\x00\x3C\xC4\xB4\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xCC\xBC" | |
"\x00\x24\xD4\xBC\x00\x24\xD4\xC4\x00\x24\xDC\xC4\x00\x1C\xDC\xC4\x00\x1C\xDC\xCC\x00\x14\xE4\xCC\x00\x14\xE4\xCC\x00\x0C\xEC\xD4" | |
"\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\xD4\x3C\x3C\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44" | |
"\x00\xC4\x4C\x44\x00\xBC\x4C\x44\x00\xBC\x4C\x4C\x00\xB4\x54\x4C\x00\xB4\x54\x4C\x00\xB4\x5C\x54\x00\xAC\x5C\x54\x00\xA8\x58\x58" | |
"\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x9C\x6C\x64\x00\x9C\x6C\x64\x00\x98\x78\x68\x00\x94\x74\x6C\x00\x8C\x74\x6C\x00\x8C\x7C\x6C" | |
"\x00\x8C\x7C\x74\x00\x84\x84\x74\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x8C\x7C\x00\x74\x8C\x84\x00\x74\x8C\x84\x00\x6C\x94\x84" | |
"\x00\x6C\x94\x8C\x00\x6C\x9C\x8C\x00\x64\x9C\x8C\x00\x60\xA0\xA0\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x54\xAC\x9C\x00\x54\xAC\x9C" | |
"\x00\x50\xB0\x90\x00\x4C\xB4\xA4\x00\x44\xB4\xA4\x00\x44\xBC\xAC\x00\x3C\xBC\xAC\x00\x3C\xC4\xAC\x00\x3C\xC4\xB4\x00\x34\xC4\xB4" | |
"\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC\x00\x24\xD4\xBC\x00\x24\xD4\xC4\x00\x1C\xDC\xC4\x00\x1C\xDC\xC4\x00\x18\xE8\xC8" | |
"\x00\x14\xE4\xCC\x00\x18\xE8\xD8\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4" | |
"\x00\xCC\x3C\x3C\x00\xCC\x44\x3C\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x44\x00\xBC\x4C\x4C\x00\xB4\x54\x4C\x00\xB4\x54\x54" | |
"\x00\xAC\x5C\x54\x00\xAC\x5C\x54\x00\xA8\x58\x58\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x9C\x6C\x64\x00\x9C\x6C\x64\x00\x98\x78\x68" | |
"\x00\x94\x74\x6C\x00\x8C\x74\x6C\x00\x8C\x7C\x6C\x00\x84\x7C\x74\x00\x84\x84\x74\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x8C\x7C" | |
"\x00\x74\x8C\x7C\x00\x74\x94\x84\x00\x6C\x94\x84\x00\x6C\x94\x8C\x00\x64\x9C\x8C\x00\x64\x9C\x8C\x00\x5C\xA4\x94\x00\x5C\xA4\x94" | |
"\x00\x5C\xA4\x94\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x4C\xB4\xA4\x00\x4C\xB4\xA4\x00\x44\xB4\xA4\x00\x44\xBC\xAC\x00\x3C\xBC\xAC" | |
"\x00\x3C\xC4\xAC\x00\x3C\xC4\xB4\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC\x00\x24\xD4\xBC\x00\x24\xD4\xC4" | |
"\x00\x1C\xDC\xC4\x00\x1C\xDC\xC4\x00\x14\xE4\xCC\x00\x14\xE4\xCC\x00\x18\xE8\xD8\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4" | |
"\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\xC8\x48\x38\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x4C" | |
"\x00\xBC\x54\x4C\x00\xB4\x54\x4C\x00\xB4\x54\x54\x00\xAC\x5C\x54\x00\xAC\x5C\x54\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\xA4\x64\x5C" | |
"\x00\x9C\x6C\x64\x00\x9C\x6C\x64\x00\x98\x78\x68\x00\x94\x74\x6C\x00\x8C\x74\x6C\x00\x8C\x7C\x74\x00\x84\x7C\x74\x00\x84\x84\x74" | |
"\x00\x7C\x84\x7C\x00\x7C\x84\x7C\x00\x7C\x8C\x7C\x00\x74\x8C\x84\x00\x74\x94\x84\x00\x6C\x94\x84\x00\x6C\x94\x8C\x00\x64\x9C\x8C" | |
"\x00\x64\x9C\x8C\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x58\xA8\x98\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x50\xB0\x90\x00\x4C\xB4\xA4" | |
"\x00\x44\xB4\xA4\x00\x44\xBC\xAC\x00\x3C\xBC\xAC\x00\x3C\xC4\xAC\x00\x34\xC4\xB4\x00\x34\xCC\xB4\x00\x28\xC8\xB8\x00\x2C\xCC\xBC" | |
"\x00\x2C\xD4\xBC\x00\x24\xD4\xBC\x00\x24\xDC\xC4\x00\x1C\xDC\xC4\x00\x1C\xDC\xCC\x00\x14\xE4\xCC\x00\x14\xE4\xCC\x00\x18\xE8\xD8" | |
"\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4" | |
"\x00\xC4\x44\x44\x00\xC4\x4C\x44\x00\xBC\x4C\x4C\x00\xBC\x54\x4C\x00\xB4\x54\x4C\x00\xB4\x5C\x54\x00\xAC\x5C\x54\x00\xAC\x5C\x54" | |
"\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x98\x68\x58\x00\x9C\x6C\x64\x00\x9C\x6C\x64\x00\x94\x74\x6C\x00\x94\x74\x6C\x00\x8C\x7C\x6C" | |
"\x00\x8C\x7C\x74\x00\x84\x7C\x74\x00\x84\x84\x74\x00\x7C\x84\x7C\x00\x7C\x8C\x7C\x00\x74\x8C\x7C\x00\x74\x8C\x84\x00\x74\x94\x84" | |
"\x00\x6C\x94\x84\x00\x6C\x9C\x8C\x00\x64\x9C\x8C\x00\x64\x9C\x8C\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x58\xA8\x98\x00\x54\xAC\x9C" | |
"\x00\x54\xAC\x9C\x00\x4C\xB4\xA4\x00\x4C\xB4\xA4\x00\x44\xBC\xA4\x00\x44\xBC\xAC\x00\x3C\xBC\xAC\x00\x3C\xC4\xAC\x00\x34\xC4\xB4" | |
"\x00\x34\xCC\xB4\x00\x2C\xCC\xBC\x00\x2C\xCC\xBC\x00\x2C\xD4\xBC\x00\x24\xD4\xBC\x00\x24\xDC\xC4\x00\x1C\xDC\xC4\x00\x1C\xDC\xCC" | |
"\x00\x14\xE4\xCC\x00\x14\xE4\xCC\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4" | |
"\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\xBC\x4C\x44\x00\xBC\x4C\x44\x00\xB4\x54\x4C\x00\xB4\x54\x4C" | |
"\x00\xB4\x5C\x54\x00\xB4\x5C\x54\x00\xAC\x5C\x54\x00\xAC\x5C\x54\x00\xA4\x64\x5C\x00\xA4\x64\x5C\x00\x9C\x6C\x64\x00\x9C\x6C\x64" | |
"\x00\x94\x74\x6C\x00\x94\x74\x6C\x00\x8C\x7C\x6C\x00\x8C\x7C\x6C\x00\x84\x7C\x74\x00\x84\x7C\x74\x00\x7C\x84\x7C\x00\x7C\x84\x7C" | |
"\x00\x74\x8C\x7C\x00\x74\x8C\x7C\x00\x6C\x94\x84\x00\x6C\x94\x84\x00\x6C\x9C\x8C\x00\x6C\x9C\x8C\x00\x64\x9C\x94\x00\x64\x9C\x94" | |
"\x00\x5C\xA4\x94\x00\x5C\xA4\x94\x00\x54\xAC\x9C\x00\x54\xAC\x9C\x00\x4C\xB4\xA4\x00\x4C\xB4\xA4\x00\x44\xBC\xA4\x00\x44\xBC\xA4" | |
"\x00\x3C\xBC\xAC\x00\x3C\xBC\xAC\x00\x34\xC4\xB4\x00\x34\xC4\xB4\x00\x2C\xCC\xBC\x00\x2C\xCC\xBC\x00\x24\xD4\xBC\x00\x24\xD4\xBC" | |
"\x00\x24\xDC\xC4\x00\x24\xDC\xC4\x00\x1C\xDC\xCC\x00\x1C\xDC\xCC\x00\x14\xE4\xCC\x00\x14\xE4\xCC\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4" | |
"\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4\x00\x0C\xEC\xD4"); | |
typedef struct { | |
unsigned char dummy; | |
unsigned char b; | |
unsigned char g; | |
unsigned char r; | |
} RGB; | |
int PIC_WIDTH=60; | |
uint32_t* colors; | |
int lastattr = 0; | |
int main() { | |
int ret = 1, availcolors = 0; | |
initscr(); | |
noecho(); | |
cbreak(); | |
keypad(stdscr, TRUE); | |
if(has_colors() != true || can_change_color() != TRUE) goto out; | |
ret = 0; | |
start_color(); | |
availcolors = COLORS; | |
uint32_t *col = (uint32_t*) rgbdata; | |
colors = calloc(256, 4); | |
memset(colors, '@', 256 * 4); | |
int line = -1, i, j; | |
for(i = 0; i< sizeof(rgbdata)/4; i++) { | |
if(!(i % PIC_WIDTH)) line++; | |
move(line, i % PIC_WIDTH); | |
uint32_t *palette = colors; | |
for (j = 0; j<256; j++) { | |
RGB rgb = *((RGB*) col); | |
RGB palrgb = *((RGB*) palette); | |
if(palrgb.dummy == '@') { | |
*palette = *col; | |
#ifdef debug | |
printf("rgb: %02X %02X %02X", rgb.r, rgb.g, rgb.b); | |
#endif | |
int nr = rgb.r == 0 ? 0 : rgb.r == 255 ? 1000 : (rgb.r * 3921568) / (1000 * 1000); | |
int ng = rgb.g == 0 ? 0 : rgb.g == 255 ? 1000 : (rgb.g * 3921568) / (1000 * 1000); | |
int nb = rgb.b == 0 ? 0 : rgb.b == 255 ? 1000 : (rgb.b * 3921568) / (1000 * 1000); | |
init_color(j+1, nr, ng, nb); | |
init_pair(j+1, 1, j+1); | |
if (lastattr) attroff(lastattr); | |
lastattr = COLOR_PAIR(j+1); | |
attron(lastattr); | |
break; | |
} else if(*palette == *col) { | |
if (lastattr) attroff(lastattr); | |
lastattr = COLOR_PAIR(j+1); | |
attron(lastattr); | |
break; | |
} | |
palette++; | |
} | |
addch(' '); | |
col++; | |
} | |
getch(); | |
out: | |
endwin(); | |
if(ret == 1) printf("error: your terminal can not change colors\n"); | |
if(availcolors < 256) | |
printf("warning: your terminal has only %d colors!\n" | |
"so you probably missed some of the beauty.\n", availcolors); | |
return ret; | |
} | |
conpix is available here http://github.com/rofl0r/conpix and concol here http://github.com/rofl0r/concol
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
program was written in 2010 and published on the KDE bugtracker.
it's a perfect small example program to show the power of the
initc
terminfo capability, which can override the terminal's built-in colors with user-supplied RGB values. the ncurses init_color() function makes this capability available.i removed some commented out code and variable-decl-in-for-loop, so it can be compiled without -std=c99.
i've since published a small PoC program called
conpix
to display arbitrary images sampled down to 256 colors in the terminal, and a C library calledconcol
which supplies an easy-to-use API to deal with 256 colors with custom RGB values and other improvements to make creating a terminal app simpler than to use the crude ncurses API. that library can use ncurses/netbsd-curses as a backend, but it also features an SDL backend so one can actually make fullscreen, terminal-like apps.