home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pypil112.zip / PIL-1.1.2.zip / Lib / site-packages / PIL / SunImagePlugin.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2001-12-25  |  3KB  |  63 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.2)
  3.  
  4. __version__ = '0.2'
  5. import string
  6. import Image
  7. import ImageFile
  8. import ImagePalette
  9.  
  10. def i16(c):
  11.     return ord(c[1]) + (ord(c[0]) << 8)
  12.  
  13.  
  14. def i32(c):
  15.     return ord(c[3]) + (ord(c[2]) << 8) + (ord(c[1]) << 16) + (ord(c[0]) << 24)
  16.  
  17.  
  18. def _accept(prefix):
  19.     return i32(prefix) == 1504078485
  20.  
  21.  
  22. class SunImageFile(ImageFile.ImageFile):
  23.     format = 'SUN'
  24.     format_description = 'Sun Raster File'
  25.     
  26.     def _open(self):
  27.         s = self.fp.read(32)
  28.         if i32(s) != 1504078485:
  29.             raise SyntaxError, 'not an SUN raster file'
  30.         
  31.         offset = 32
  32.         self.size = (i32(s[4:8]), i32(s[8:12]))
  33.         depth = i32(s[12:16])
  34.         if depth == 1:
  35.             (self.mode, rawmode) = ('1', '1;I')
  36.         elif depth == 8:
  37.             self.mode = rawmode = 'L'
  38.         elif depth == 24:
  39.             (self.mode, rawmode) = ('RGB', 'BGR')
  40.         else:
  41.             raise SyntaxError, 'unsupported mode'
  42.         compression = i32(s[20:24])
  43.         if i32(s[24:28]) != 0:
  44.             length = i32(s[28:32])
  45.             offset = offset + length
  46.             self.palette = ImagePalette.raw('RGB;L', self.fp.read(length))
  47.             if self.mode == 'L':
  48.                 self.mode = 'P'
  49.             
  50.         
  51.         stride = (self.size[0] * depth + 7) / 8 + 3 & -4
  52.         if compression == 1:
  53.             self.tile = [
  54.                 ('raw', (0, 0) + self.size, offset, (rawmode, stride))]
  55.         elif compression == 2:
  56.             self.tile = [
  57.                 ('sun_rle', (0, 0) + self.size, offset, rawmode)]
  58.         
  59.  
  60.  
  61. Image.register_open('SUN', SunImageFile, _accept)
  62. Image.register_extension('SUN', '.ras')
  63.