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 / MspImagePlugin.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2001-12-25  |  3KB  |  76 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.2)
  3.  
  4. __version__ = '0.1'
  5. import Image
  6. import ImageFile
  7.  
  8. def i16(c):
  9.     return ord(c[0]) + (ord(c[1]) << 8)
  10.  
  11.  
  12. def _accept(prefix):
  13.     return prefix[:4] in [
  14.         'DanM',
  15.         'LinS']
  16.  
  17.  
  18. class MspImageFile(ImageFile.ImageFile):
  19.     format = 'MSP'
  20.     format_description = 'Windows Paint'
  21.     
  22.     def _open(self):
  23.         s = self.fp.read(32)
  24.         if s[:4] not in [
  25.             'DanM',
  26.             'LinS']:
  27.             raise SyntaxError, 'not an MSP file'
  28.         
  29.         sum = 0
  30.         for i in range(0, 32, 2):
  31.             sum = sum ^ i16(s[i:i + 2])
  32.         
  33.         if sum != 0:
  34.             raise SyntaxError, 'bad MSP checksum'
  35.         
  36.         self.mode = '1'
  37.         self.size = (i16(s[4:]), i16(s[6:]))
  38.         if s[:4] == 'DanM':
  39.             self.tile = [
  40.                 ('raw', (0, 0) + self.size, 32, ('1', 0, 1))]
  41.         else:
  42.             self.tile = [
  43.                 ('msp', (0, 0) + self.size, 32 + 2 * self.size[1], None)]
  44.  
  45.  
  46.  
  47. def o16(i):
  48.     return chr(i & 255) + chr(i >> 8 & 255)
  49.  
  50.  
  51. def _save(im, fp, filename):
  52.     if im.mode != '1':
  53.         raise IOError, 'cannot write mode %s as MSP' % im.mode
  54.     
  55.     header = [
  56.         0] * 16
  57.     (header[0], header[1]) = (i16('Da'), i16('nM'))
  58.     (header[2], header[3]) = im.size
  59.     (header[4], header[5]) = (1, 1)
  60.     (header[6], header[7]) = (1, 1)
  61.     (header[8], header[9]) = im.size
  62.     sum = 0
  63.     for h in header:
  64.         sum = sum ^ h
  65.     
  66.     header[12] = sum
  67.     for h in header:
  68.         fp.write(o16(h))
  69.     
  70.     ImageFile._save(im, fp, [
  71.         ('raw', (0, 0) + im.size, 32, ('1', 0, 1))])
  72.  
  73. Image.register_open('MSP', MspImageFile, _accept)
  74. Image.register_save('MSP', _save)
  75. Image.register_extension('MSP', '.msp')
  76.