1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  | # 
 |  # Python Imaging Library 
 |  # $Id$ 
 |  # 
 |  # stuff to read simple, teragon-style palette files 
 |  # 
 |  # History: 
 |  #       97-08-23 fl     Created 
 |  # 
 |  # Copyright (c) Secret Labs AB 1997. 
 |  # Copyright (c) Fredrik Lundh 1997. 
 |  # 
 |  # See the README file for information on usage and redistribution. 
 |  # 
 |    
 |  import string 
 |    
 |  ## 
 |  # File handler for Teragon-style palette files. 
 |    
 |  class PaletteFile: 
 |    
 |      rawmode = "RGB" 
 |    
 |      def __init__(self, fp): 
 |    
 |          self.palette = map(lambda i: (i, i, i), range(256)) 
 |    
 |          while 1: 
 |    
 |              s = fp.readline() 
 |    
 |              if not s: 
 |                  break 
 |              if s[0] == "#": 
 |                  continue 
 |              if len(s) > 100: 
 |                  raise SyntaxError, "bad palette file" 
 |    
 |              v = map(int, string.split(s)) 
 |              try: 
 |                  [i, r, g, b] = v 
 |              except ValueError: 
 |                  [i, r] = v 
 |                  g = b = r 
 |    
 |              if 0 <= i <= 255: 
 |                  self.palette[i] = chr(r) + chr(g) + chr(b) 
 |    
 |          self.palette = string.join(self.palette, "") 
 |    
 |    
 |      def getpalette(self): 
 |    
 |          return self.palette, self.rawmode 
 |  
  |