
The GIMP Paintbrush File Format Version 2 (.gbr)
------------------------------------------------

HEADER
------

Bytes 0  - 3:  header_size: 
	Type: 32 bit unsigned int
	Value: size of brush header (28) + length of brush name

Bytes 4  - 7: version
	Type: 32 bit unsigned int 
	Value: The file format version. Currently

Bytes 8  - 11: width
	Type: 32 bit unsigned int 
	Value: Brush width

Bytes 12 - 15: height
	Type: 32 bit unsigned int 
	Value: Brush height

Bytes 16 - 19: bytes
	Type: 32 bit unsigned int 
	Value: Colour depth of brush. 
	1 = greyscale, 4 = RGBA

Bytes 20 - 23: magic_number
	Type: 32 bit unsigned int 
	Value: GIMP brush magic number. 
	('G' << 24) + ('I' << 16) + ('M' << 8) + 'P'

Bytes 24 - 27: spacing
	Type: 32 bit unsigned int 
	Value: Default spacing to be used for brush. Percentage
	of brush width.

Bytes 28 - (header_size - 28):
	Type: char *
	Value: UTF-8 string - name of brush


BODY
----
	Size: width * height * bytes
	Type: uchar *
	Value: Pixel values (row-first) for brush



The GIMP Paintbrush File Format Version 1 (.gbr)
------------------------------------------------

Based on examples and code, it seems that v1 is like v2, but it is
lacking bytes 20 - 27 (no magic or spacing info), and thus having
as last header field:

Bytes 20 - (header_size - 20):
    Type: char *
    Value: undefined encoding string - name of brush

GBR v1 is deprecated and should never be used to save new brushes.
