# 
 | 
# Python Imaging Library 
 | 
# $Id$ 
 | 
# 
 | 
# stuff to read GIMP palette files 
 | 
# 
 | 
# History: 
 | 
# 1997-08-23 fl     Created 
 | 
# 2004-09-07 fl     Support GIMP 2.0 palette files. 
 | 
# 
 | 
# Copyright (c) Secret Labs AB 1997-2004.  All rights reserved. 
 | 
# Copyright (c) Fredrik Lundh 1997-2004. 
 | 
# 
 | 
# See the README file for information on usage and redistribution. 
 | 
# 
 | 
  
 | 
import re, string 
 | 
  
 | 
## 
 | 
# File handler for GIMP's palette format. 
 | 
  
 | 
class GimpPaletteFile: 
 | 
  
 | 
    rawmode = "RGB" 
 | 
  
 | 
    def __init__(self, fp): 
 | 
  
 | 
        self.palette = map(lambda i: chr(i)*3, range(256)) 
 | 
  
 | 
        if fp.readline()[:12] != "GIMP Palette": 
 | 
            raise SyntaxError, "not a GIMP palette file" 
 | 
  
 | 
        i = 0 
 | 
  
 | 
        while i <= 255: 
 | 
  
 | 
            s = fp.readline() 
 | 
  
 | 
            if not s: 
 | 
                break 
 | 
            # skip fields and comment lines 
 | 
            if re.match("\w+:|#", s): 
 | 
                continue 
 | 
            if len(s) > 100: 
 | 
                raise SyntaxError, "bad palette file" 
 | 
  
 | 
            v = tuple(map(int, string.split(s)[:3])) 
 | 
            if len(v) != 3: 
 | 
                raise ValueError, "bad palette entry" 
 | 
  
 | 
            if 0 <= i <= 255: 
 | 
                self.palette[i] = chr(v[0]) + chr(v[1]) + chr(v[2]) 
 | 
  
 | 
            i = i + 1 
 | 
  
 | 
        self.palette = string.join(self.palette, "") 
 | 
  
 | 
  
 | 
    def getpalette(self): 
 | 
  
 | 
        return self.palette, self.rawmode 
 |