home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / python2.6 / dist-packages / PIL / ImagePalette.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  4.7 KB  |  166 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import array
  5. import Image
  6.  
  7. class ImagePalette:
  8.     '''Colour palette for palette mapped images'''
  9.     
  10.     def __init__(self, mode = 'RGB', palette = None):
  11.         self.mode = mode
  12.         self.rawmode = None
  13.         if not palette:
  14.             pass
  15.         self.palette = range(256) * len(self.mode)
  16.         self.colors = { }
  17.         self.dirty = None
  18.         if len(self.mode) * 256 != len(self.palette):
  19.             raise ValueError, 'wrong palette size'
  20.         len(self.mode) * 256 != len(self.palette)
  21.  
  22.     
  23.     def getdata(self):
  24.         if self.rawmode:
  25.             return (self.rawmode, self.palette)
  26.         return (self.mode + ';L', self.tostring())
  27.  
  28.     
  29.     def tostring(self):
  30.         if self.rawmode:
  31.             raise ValueError('palette contains raw palette data')
  32.         self.rawmode
  33.         if Image.isStringType(self.palette):
  34.             return self.palette
  35.         return array.array('B', self.palette).tostring()
  36.  
  37.     
  38.     def getcolor(self, color):
  39.         if self.rawmode:
  40.             raise ValueError('palette contains raw palette data')
  41.         self.rawmode
  42.         if Image.isTupleType(color):
  43.             
  44.             try:
  45.                 return self.colors[color]
  46.             except KeyError:
  47.                 if Image.isStringType(self.palette):
  48.                     self.palette = map(int, self.palette)
  49.                 
  50.                 index = len(self.colors)
  51.                 if index >= 256:
  52.                     raise ValueError('cannot allocate more than 256 colors')
  53.                 index >= 256
  54.                 self.colors[color] = index
  55.                 self.palette[index] = color[0]
  56.                 self.palette[index + 256] = color[1]
  57.                 self.palette[index + 512] = color[2]
  58.                 self.dirty = 1
  59.                 return index
  60.             
  61.  
  62.         None<EXCEPTION MATCH>KeyError
  63.         raise ValueError('unknown color specifier: %r' % color)
  64.  
  65.     
  66.     def save(self, fp):
  67.         if self.rawmode:
  68.             raise ValueError('palette contains raw palette data')
  69.         self.rawmode
  70.         if type(fp) == type(''):
  71.             fp = open(fp, 'w')
  72.         
  73.         fp.write('# Palette\n')
  74.         fp.write('# Mode: %s\n' % self.mode)
  75.         for i in range(256):
  76.             fp.write('%d' % i)
  77.             for j in range(i, len(self.palette), 256):
  78.                 fp.write(' %d' % self.palette[j])
  79.             
  80.             fp.write('\n')
  81.         
  82.         fp.close()
  83.  
  84.  
  85.  
  86. def raw(rawmode, data):
  87.     palette = ImagePalette()
  88.     palette.rawmode = rawmode
  89.     palette.palette = data
  90.     palette.dirty = 1
  91.     return palette
  92.  
  93.  
  94. def new(mode, data):
  95.     return Image.core.new_palette(mode, data)
  96.  
  97.  
  98. def negative(mode = 'RGB'):
  99.     palette = range(256)
  100.     palette.reverse()
  101.     return ImagePalette(mode, palette * len(mode))
  102.  
  103.  
  104. def random(mode = 'RGB'):
  105.     randint = randint
  106.     import random
  107.     palette = map((lambda a, randint = randint: randint(0, 255)), [
  108.         0] * 256 * len(mode))
  109.     return ImagePalette(mode, palette)
  110.  
  111.  
  112. def wedge(mode = 'RGB'):
  113.     return ImagePalette(mode, range(256) * len(mode))
  114.  
  115.  
  116. def load(filename):
  117.     fp = open(filename, 'rb')
  118.     lut = None
  119.     if not lut:
  120.         
  121.         try:
  122.             import GimpPaletteFile
  123.             fp.seek(0)
  124.             p = GimpPaletteFile.GimpPaletteFile(fp)
  125.             lut = p.getpalette()
  126.         except (SyntaxError, ValueError):
  127.             pass
  128.         except:
  129.             None<EXCEPTION MATCH>(SyntaxError, ValueError)
  130.         
  131.  
  132.     None<EXCEPTION MATCH>(SyntaxError, ValueError)
  133.     if not lut:
  134.         
  135.         try:
  136.             import GimpGradientFile
  137.             fp.seek(0)
  138.             p = GimpGradientFile.GimpGradientFile(fp)
  139.             lut = p.getpalette()
  140.         except (SyntaxError, ValueError):
  141.             pass
  142.         except:
  143.             None<EXCEPTION MATCH>(SyntaxError, ValueError)
  144.         
  145.  
  146.     None<EXCEPTION MATCH>(SyntaxError, ValueError)
  147.     if not lut:
  148.         
  149.         try:
  150.             import PaletteFile
  151.             fp.seek(0)
  152.             p = PaletteFile.PaletteFile(fp)
  153.             lut = p.getpalette()
  154.         except (SyntaxError, ValueError):
  155.             pass
  156.         except:
  157.             None<EXCEPTION MATCH>(SyntaxError, ValueError)
  158.         
  159.  
  160.     None<EXCEPTION MATCH>(SyntaxError, ValueError)
  161.     if not lut:
  162.         raise IOError, 'cannot load palette'
  163.     lut
  164.     return lut
  165.  
  166.