1    type Format =
2        | Gray = 0
3        | Ga = 1
4        | Ag = 33
5        | Rgb = 2
6        | Bgr = 18
7        | Rgba = 3
8        | Argb = 35
9        | Bgra = 19
10       | Abgr = 51
11   
12   type Color = struct
13       red : u8
14       green : u8
15       blue : u8
16   
17   type Image = struct
18       opaque : MutPtr
19       version : u32
20       width : u32
21       height : u32
22       format : Format
23       flags : u32
24       colormap_entries : u32
25       warning_or_error : u32
26       message : [CChar; 64]
27   
28   object Png =
29       val image_version : u32 = 1
30   
31       def begin_read_from_file "png_image_begin_read_from_file"
32           (image : mut ptr Image
33            file_name : CString) : i32
34   
35       def finish_read "png_image_finish_read"
36           (image : mut ptr Image
37            background : ptr Color
38            buffer : MutPtr
39            row_stride : i32
40            colormap : MutPtr) : i32
41   
42       def write_to_file "png_image_write_to_file"
43           (image : mut ptr Image
44            file : CString
45            convert_to_8bit : i32
46            buffer : Ptr
47            row_stride : i32
48            colormap : Ptr) : i32
49   
50   object Image =
51       val default = Image
52           opaque = null
53           version = 0
54           width = 0
55           height = 0
56           format = Format/Gray
57           flags = 0
58           colormap_entries = 0
59           warning_or_error = 0
60           message = memory@zero
61