GR graphics files are 8-bits-per-pixels but only 4-bits of color, with 
transparency and no palette.  Compression is the standard TempleOS LZW 
compression.

#define DCF_COMPRESSED          1 //This is the only saved flag.
#define DCF_PALETTE             2

#define TRANSPARENT             0xFF
#define BLACK                   0
#define BLUE                    1
#define GREEN                   2
#define CYAN                    3
#define RED                     4
#define PURPLE                  5
#define BROWN                   6
#define LTGRAY                  7
#define DKGRAY                  8
#define LTBLUE                  9
#define LTGREEN                 10
#define LTCYAN                  11
#define LTRED                   12
#define LTPURPLE                13
#define YELLOW                  14
#define WHITE                   15

class CBGR48
{
  U16   r,g,b,pad;
};

CBGR48 gr_palette_std[16]={
0x000000000000,0x00000000AAAA,0x0000AAAA0000,0x0000AAAAAAAA,
0xAAAA00000000,0xAAAA0000AAAA,0xAAAA55550000,0xAAAAAAAAAAAA,
0x555555555555,0x55555555FFFF,0x5555FFFF5555,0x5555FFFFFFFF,
0xFFFF55555555,0xFFFF5555FFFF,0xFFFFFFFF5555,0xFFFFFFFFFFFF};

class GRFile
{
  I32   width;
  I32   width_internal; //Rounded-up to multiple of 8.
  I32   height;
  I32   flags;          //DCF_COMPRESSED? See ::/Kernel/Compress.HC.
  CBGR48 palette[16];   //Included if DCF_PALETTE.
  U8    body[];
};

See DCSave(), GRWrite(), DCLoad(), and GRRead().