Coverage for /usr/lib/python3/dist-packages/PIL/GimpPaletteFile.py: 26%

27 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2025-06-14 15:25 +0200

1# 

2# Python Imaging Library 

3# $Id$ 

4# 

5# stuff to read GIMP palette files 

6# 

7# History: 

8# 1997-08-23 fl Created 

9# 2004-09-07 fl Support GIMP 2.0 palette files. 

10# 

11# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. 

12# Copyright (c) Fredrik Lundh 1997-2004. 

13# 

14# See the README file for information on usage and redistribution. 

15# 

16from __future__ import annotations 

17 

18import re 

19 

20from ._binary import o8 

21 

22 

23class GimpPaletteFile: 

24 """File handler for GIMP's palette format.""" 

25 

26 rawmode = "RGB" 

27 

28 def __init__(self, fp): 

29 self.palette = [o8(i) * 3 for i in range(256)] 

30 

31 if fp.readline()[:12] != b"GIMP Palette": 

32 msg = "not a GIMP palette file" 

33 raise SyntaxError(msg) 

34 

35 for i in range(256): 

36 s = fp.readline() 

37 if not s: 

38 break 

39 

40 # skip fields and comment lines 

41 if re.match(rb"\w+:|#", s): 

42 continue 

43 if len(s) > 100: 

44 msg = "bad palette file" 

45 raise SyntaxError(msg) 

46 

47 v = tuple(map(int, s.split()[:3])) 

48 if len(v) != 3: 

49 msg = "bad palette entry" 

50 raise ValueError(msg) 

51 

52 self.palette[i] = o8(v[0]) + o8(v[1]) + o8(v[2]) 

53 

54 self.palette = b"".join(self.palette) 

55 

56 def getpalette(self): 

57 return self.palette, self.rawmode