# vim:ts=4:et # ##### BEGIN GPL LICENSE BLOCK ##### # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # ##### END GPL LICENSE BLOCK ##### # from struct import unpack default_palette = ( (0x00, 0x00, 0x00), (0x0f, 0x0f, 0x0f), (0x1f, 0x1f, 0x1f), (0x2f, 0x2f, 0x2f), (0x3f, 0x3f, 0x3f), (0x4b, 0x4b, 0x4b), (0x5b, 0x5b, 0x5b), (0x6b, 0x6b, 0x6b), (0x7b, 0x7b, 0x7b), (0x8b, 0x8b, 0x8b), (0x9b, 0x9b, 0x9b), (0xab, 0xab, 0xab), (0xbb, 0xbb, 0xbb), (0xcb, 0xcb, 0xcb), (0xdb, 0xdb, 0xdb), (0xeb, 0xeb, 0xeb), (0x0f, 0x0b, 0x07), (0x17, 0x0f, 0x0b), (0x1f, 0x17, 0x0b), (0x27, 0x1b, 0x0f), (0x2f, 0x23, 0x13), (0x37, 0x2b, 0x17), (0x3f, 0x2f, 0x17), (0x4b, 0x37, 0x1b), (0x53, 0x3b, 0x1b), (0x5b, 0x43, 0x1f), (0x63, 0x4b, 0x1f), (0x6b, 0x53, 0x1f), (0x73, 0x57, 0x1f), (0x7b, 0x5f, 0x23), (0x83, 0x67, 0x23), (0x8f, 0x6f, 0x23), (0x0b, 0x0b, 0x0f), (0x13, 0x13, 0x1b), (0x1b, 0x1b, 0x27), (0x27, 0x27, 0x33), (0x2f, 0x2f, 0x3f), (0x37, 0x37, 0x4b), (0x3f, 0x3f, 0x57), (0x47, 0x47, 0x67), (0x4f, 0x4f, 0x73), (0x5b, 0x5b, 0x7f), (0x63, 0x63, 0x8b), (0x6b, 0x6b, 0x97), (0x73, 0x73, 0xa3), (0x7b, 0x7b, 0xaf), (0x83, 0x83, 0xbb), (0x8b, 0x8b, 0xcb), (0x00, 0x00, 0x00), (0x07, 0x07, 0x00), (0x0b, 0x0b, 0x00), (0x13, 0x13, 0x00), (0x1b, 0x1b, 0x00), (0x23, 0x23, 0x00), (0x2b, 0x2b, 0x07), (0x2f, 0x2f, 0x07), (0x37, 0x37, 0x07), (0x3f, 0x3f, 0x07), (0x47, 0x47, 0x07), (0x4b, 0x4b, 0x0b), (0x53, 0x53, 0x0b), (0x5b, 0x5b, 0x0b), (0x63, 0x63, 0x0b), (0x6b, 0x6b, 0x0f), (0x07, 0x00, 0x00), (0x0f, 0x00, 0x00), (0x17, 0x00, 0x00), (0x1f, 0x00, 0x00), (0x27, 0x00, 0x00), (0x2f, 0x00, 0x00), (0x37, 0x00, 0x00), (0x3f, 0x00, 0x00), (0x47, 0x00, 0x00), (0x4f, 0x00, 0x00), (0x57, 0x00, 0x00), (0x5f, 0x00, 0x00), (0x67, 0x00, 0x00), (0x6f, 0x00, 0x00), (0x77, 0x00, 0x00), (0x7f, 0x00, 0x00), (0x13, 0x13, 0x00), (0x1b, 0x1b, 0x00), (0x23, 0x23, 0x00), (0x2f, 0x2b, 0x00), (0x37, 0x2f, 0x00), (0x43, 0x37, 0x00), (0x4b, 0x3b, 0x07), (0x57, 0x43, 0x07), (0x5f, 0x47, 0x07), (0x6b, 0x4b, 0x0b), (0x77, 0x53, 0x0f), (0x83, 0x57, 0x13), (0x8b, 0x5b, 0x13), (0x97, 0x5f, 0x1b), (0xa3, 0x63, 0x1f), (0xaf, 0x67, 0x23), (0x23, 0x13, 0x07), (0x2f, 0x17, 0x0b), (0x3b, 0x1f, 0x0f), (0x4b, 0x23, 0x13), (0x57, 0x2b, 0x17), (0x63, 0x2f, 0x1f), (0x73, 0x37, 0x23), (0x7f, 0x3b, 0x2b), (0x8f, 0x43, 0x33), (0x9f, 0x4f, 0x33), (0xaf, 0x63, 0x2f), (0xbf, 0x77, 0x2f), (0xcf, 0x8f, 0x2b), (0xdf, 0xab, 0x27), (0xef, 0xcb, 0x1f), (0xff, 0xf3, 0x1b), (0x0b, 0x07, 0x00), (0x1b, 0x13, 0x00), (0x2b, 0x23, 0x0f), (0x37, 0x2b, 0x13), (0x47, 0x33, 0x1b), (0x53, 0x37, 0x23), (0x63, 0x3f, 0x2b), (0x6f, 0x47, 0x33), (0x7f, 0x53, 0x3f), (0x8b, 0x5f, 0x47), (0x9b, 0x6b, 0x53), (0xa7, 0x7b, 0x5f), (0xb7, 0x87, 0x6b), (0xc3, 0x93, 0x7b), (0xd3, 0xa3, 0x8b), (0xe3, 0xb3, 0x97), (0xab, 0x8b, 0xa3), (0x9f, 0x7f, 0x97), (0x93, 0x73, 0x87), (0x8b, 0x67, 0x7b), (0x7f, 0x5b, 0x6f), (0x77, 0x53, 0x63), (0x6b, 0x4b, 0x57), (0x5f, 0x3f, 0x4b), (0x57, 0x37, 0x43), (0x4b, 0x2f, 0x37), (0x43, 0x27, 0x2f), (0x37, 0x1f, 0x23), (0x2b, 0x17, 0x1b), (0x23, 0x13, 0x13), (0x17, 0x0b, 0x0b), (0x0f, 0x07, 0x07), (0xbb, 0x73, 0x9f), (0xaf, 0x6b, 0x8f), (0xa3, 0x5f, 0x83), (0x97, 0x57, 0x77), (0x8b, 0x4f, 0x6b), (0x7f, 0x4b, 0x5f), (0x73, 0x43, 0x53), (0x6b, 0x3b, 0x4b), (0x5f, 0x33, 0x3f), (0x53, 0x2b, 0x37), (0x47, 0x23, 0x2b), (0x3b, 0x1f, 0x23), (0x2f, 0x17, 0x1b), (0x23, 0x13, 0x13), (0x17, 0x0b, 0x0b), (0x0f, 0x07, 0x07), (0xdb, 0xc3, 0xbb), (0xcb, 0xb3, 0xa7), (0xbf, 0xa3, 0x9b), (0xaf, 0x97, 0x8b), (0xa3, 0x87, 0x7b), (0x97, 0x7b, 0x6f), (0x87, 0x6f, 0x5f), (0x7b, 0x63, 0x53), (0x6b, 0x57, 0x47), (0x5f, 0x4b, 0x3b), (0x53, 0x3f, 0x33), (0x43, 0x33, 0x27), (0x37, 0x2b, 0x1f), (0x27, 0x1f, 0x17), (0x1b, 0x13, 0x0f), (0x0f, 0x0b, 0x07), (0x6f, 0x83, 0x7b), (0x67, 0x7b, 0x6f), (0x5f, 0x73, 0x67), (0x57, 0x6b, 0x5f), (0x4f, 0x63, 0x57), (0x47, 0x5b, 0x4f), (0x3f, 0x53, 0x47), (0x37, 0x4b, 0x3f), (0x2f, 0x43, 0x37), (0x2b, 0x3b, 0x2f), (0x23, 0x33, 0x27), (0x1f, 0x2b, 0x1f), (0x17, 0x23, 0x17), (0x0f, 0x1b, 0x13), (0x0b, 0x13, 0x0b), (0x07, 0x0b, 0x07), (0xff, 0xf3, 0x1b), (0xef, 0xdf, 0x17), (0xdb, 0xcb, 0x13), (0xcb, 0xb7, 0x0f), (0xbb, 0xa7, 0x0f), (0xab, 0x97, 0x0b), (0x9b, 0x83, 0x07), (0x8b, 0x73, 0x07), (0x7b, 0x63, 0x07), (0x6b, 0x53, 0x00), (0x5b, 0x47, 0x00), (0x4b, 0x37, 0x00), (0x3b, 0x2b, 0x00), (0x2b, 0x1f, 0x00), (0x1b, 0x0f, 0x00), (0x0b, 0x07, 0x00), (0x00, 0x00, 0xff), (0x0b, 0x0b, 0xef), (0x13, 0x13, 0xdf), (0x1b, 0x1b, 0xcf), (0x23, 0x23, 0xbf), (0x2b, 0x2b, 0xaf), (0x2f, 0x2f, 0x9f), (0x2f, 0x2f, 0x8f), (0x2f, 0x2f, 0x7f), (0x2f, 0x2f, 0x6f), (0x2f, 0x2f, 0x5f), (0x2b, 0x2b, 0x4f), (0x23, 0x23, 0x3f), (0x1b, 0x1b, 0x2f), (0x13, 0x13, 0x1f), (0x0b, 0x0b, 0x0f), (0x2b, 0x00, 0x00), (0x3b, 0x00, 0x00), (0x4b, 0x07, 0x00), (0x5f, 0x07, 0x00), (0x6f, 0x0f, 0x00), (0x7f, 0x17, 0x07), (0x93, 0x1f, 0x07), (0xa3, 0x27, 0x0b), (0xb7, 0x33, 0x0f), (0xc3, 0x4b, 0x1b), (0xcf, 0x63, 0x2b), (0xdb, 0x7f, 0x3b), (0xe3, 0x97, 0x4f), (0xe7, 0xab, 0x5f), (0xef, 0xbf, 0x77), (0xf7, 0xd3, 0x8b), (0xa7, 0x7b, 0x3b), (0xb7, 0x9b, 0x37), (0xc7, 0xc3, 0x37), (0xe7, 0xe3, 0x57), (0x7f, 0xbf, 0xff), (0xab, 0xe7, 0xff), (0xd7, 0xff, 0xff), (0x67, 0x00, 0x00), (0x8b, 0x00, 0x00), (0xb3, 0x00, 0x00), (0xd7, 0x00, 0x00), (0xff, 0x00, 0x00), (0xff, 0xf3, 0x93), (0xff, 0xf7, 0xc7), (0xff, 0xff, 0xff), (0x9f, 0x5b, 0x53), ) palette = default_palette def load_palette(filepath): if not filepath: palette = default_palette else: try: f = open(filepath, "rb") pal = f.read(768) if len(pal) < 768: pal = pal + b'\0' * (768 - len(pal)) palette = [] for i in range(256): palette.append(unpack("<3B", pal[i * 3 : i * 3 + 3])) palette = tuple(palette) except IOError: palette = default_palette return None return palette