#!/usr/bin/env python
# -*- coding: utf-8 -*-

#https://stackoverflow.com/questions/287871/print-in-terminal-with-colors
#https://stackoverflow.com/users/205580/eryksun
#https://svn.blender.org/svnroot/bf-blender/trunk/blender/build_files/scons/tools/bcolors.py
class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'

def color(num):
    return '\033['+str(num)+'m'

xpm3 = """
/* XPM */
static char * XFACE[] = {
/* <Values> */
/* <width/cols> <height/rows> <colors> <char on pixel>*/
"48 4 2 1",
/* <Colors> */
"a c #ffffff",
"b c #000000",
/* <Pixels> */
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab",
"abaabaababaaabaabababaabaabaababaabaaababaabaaab"
};
"""
xpm3 = """
/* XPM */
static char * blarg_xpm[] = {
"16 7 2 1",
"* c #000000",
". c #ffffff",
"**..*...........",
"*.*.*...........",
"**..*..**.**..**",
"*.*.*.*.*.*..*.*",
"**..*..**.*...**",
"...............*",
".............**."
}
"""

xpm3 = """
/* XPM */
static char * exemple_xpm[] = {
"24 20 3 1",
"       c None",
".      c #3A32E4",
"+      c #E43232",
"                        ",
"    ..                  ",
"   ....                 ",
"  ......++++++++        ",
" .........+++++++       ",
" ..........+++++++      ",
" ............++++++     ",
" .............++++++    ",
"  ..............++++    ",
"   +.............+++    ",
"   ++.............++    ",
"   +++.............+    ",
"   +++++.............   ",
"   ++++++.............. ",
"   ++++++++............ ",
"   +++++++++........... ",
"    +++++++++.........  ",
"     ++++++++++.......  ",
"      ++++++++++.....   ",
"       +++++++++ ...    "};
"""


if __name__ == '__main__':
    print "\033[2J"
    print bcolors.WARNING + "ansy color",
    for num in range(16):
        print u"\033[1;"+str(num+30)+u";"+str(num+40)+u"m",
    print bcolors.ENDC
    import os
    os.putenv('PYTHONIOENCODING', 'UTF-8')
    print  "halfblock",ord(u'▀'),'▀',ord(u'▄'),'▄'
    print "with color",
    for i in range(16):
	uc = 9600+i
	fg = 30+i
	bg = 90+i
	print color(fg)+color(bg)+unichr(uc)+bcolors.ENDC,
    print
    print 'xpm3 display'
    begindata = xpm3.rfind('{')+1
    enddata =xpm3.rfind('}')
    rawdata = xpm3[begindata:enddata]
    while '/*' in rawdata:
	begin = rawdata.find('/*')
	end = rawdata.find('*/')+2
	rawdata = rawdata[:begin] + rawdata[end:]
    jsondata = '['+rawdata+']'
    import json
    lines = json.loads(jsondata)[4:]
    uppertable = { 'a':34,'b':36, '*':34, '.':36, '+' : 31, ' ':30 }
    lowertable = { 'a':44,'b':46, '*':44, '.':46 , '+' : 41, ' ':40 }
    for i in range(0,len(lines),2):
        upperline = lines[i]
	if len(lines) > i+1:
            lowerline = lines[i+1]
        else:
            lowerline = []
            break;
        println = u''
        for upperpixel,lowerpixel in zip(upperline,lowerline):
            pixel = u"\033[1;%(uppercolor)s;%(lowercolor)sm%(chr)s" % {
                        'uppercolor' : uppertable[upperpixel],
                        'lowercolor' : lowertable[lowerpixel],
                        'chr' : unichr(9600)
                    }
            println += pixel
        print println+bcolors.ENDC
	
    
