home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 February / maximum-cd-2011-02.iso / DiscContents / digsby_setup85.exe / lib / PIL / ImagePalette.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-11-24  |  4.2 KB  |  165 lines

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