Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.stsci.edu/spst/UnixTransition/doc/colorcube.py
Дата изменения: Fri Feb 28 14:46:09 2014
Дата индексирования: Sat Mar 1 14:41:25 2014
Кодировка:

Поисковые слова: http www.astronomy.ru forum index.php topic 4644.0.html
#!/usr/bin/env python

"""Utility to generate a table of browser safe colors.
"""
__version__ = '$Id: colorcube.py,v 1.0 1998/03/19 18:57:56 friedric Exp $'
__author__ = "Robin Friedrich"
__date__ = "Feb. 18, 1998"

# colorcube.py
# COPYRIGHT (C) 1998 ROBIN FRIEDRICH email:Robin.Friedrich@pdq.net
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted,
# provided that the above copyright notice appear in all copies and that
# both that copyright notice and this permission notice appear in
# supporting documentation.
# THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.

from HTMLgen import *

hexes = ('00','33','66','99','CC','FF')

def main(filename):
# Create a fresh document
doc = SimpleDocument(title='Web Safe Colors', bgcolor = '#FFFFFF')
# Create an invisible table for layout
bodytable = TableLite(cellpadding=5, border=0, html_escape="off")
# Set up a table for the 216 color cube
colortable = TableLite(cellpadding=0, border=0, cellspacing=1, html_escape="off")
colortable.append(Caption("The 216 Web Color Cube"))
for i in (0,1,2,3,4,5):
for j in (0,1,2,3,4,5):
tr = TR()
for k in (0,1,2,3,4,5):
tr.append(makecell("#%s%s%s" % (hexes[i], hexes[j], hexes[k])))
colortable.append(tr)
# append the table as a cell in the body table
bodyrow = TR(TD(colortable))
# Set up a table for the greyscale
greytable = TableLite(cellpadding=0, border=0, cellspacing=1, html_escape="off")
greytable.append(Caption("The 16 Grey Levels"))
for a in '0123456789ABCDEF':
greytable.append( TR( makecell("#%s%s%s%s%s%s" % ((a,)*6)) ) )
bodyrow.append(TD(greytable))
# Set up a table containing the pure colors
puretable = TableLite(cellpadding=0, border=0, cellspacing=1, html_escape="off")
puretable.append(Caption("The Pure Colors"))
for a in '123456789ABCDEF':
tr = TR()
tr.append(makecell("#%s%s0000" % (a,a) ) )
tr.append(makecell("#00%s%s00" % (a,a) ) )
tr.append(makecell("#0000%s%s" % (a,a) ) )
puretable.append(tr)
bodyrow.append(TD(puretable))
# Now attach the body row to the bodytable
bodytable.append(bodyrow)
# Attach the bodytable to the document and write it all out
doc.append(bodytable)
doc.write(filename)

def makecell(color):
"""Return a table cell object (TD) of the given color tag
"""
cell = TD(bgcolor=color, align='center', height=26, width=60)
cell.append(Font(color, color = contrast(color), size = -2))
return cell

def contrast(color):
"""Compute luminous efficiency of given color and return either
white or black based on which would contrast more.
"""
# I know this is not exact; just my guess
R = eval('0x'+color[1:3])
G = eval('0x'+color[3:5])
B = eval('0x'+color[5:7])
lumen = 0.6*R + G + 0.3*B
if lumen > 250:
return "#000000"
else:
return "#FFFFFF"

if __name__ == '__main__':
main('colorcube.html')