What's the anatomy of the .mip file?

I’m writing an image converter in C# and I need some documentation on Quake’s .mip images.

Maybe there is info on https://www.gamers.org/dEngine/quake/ ?
https://quakewiki.org/wiki/.mip is sadly missing any content so far.
http://openarena.ws/board/index.php?topic=1710.0 has source code in the zip that has mip code.

Thanks. This changes everything. I planned to do .png to .mip first because that always bugged me. Add more formats as I go along. Then much later look into .wad and .bmp and maybe make it like Slade in a way. Add color translation because I think that is really neat.

there is no .mip file format, only bsp/wad chunks.

qpic:
uint32 width, height;
byte imagedata[width*height];

miptex:
char name[16]; /dupe of the wad’s name, hopefully/
uint32 width, height;
uint32 offset[4]=
{ /hacks assume this, so expect breakages if you vary from this/
40,
40+widthheight,
40+width
height+width/2height/2,
40+width
height+width/2height/2+width/4height/4
};
byte mip0[widthheight];
byte mip1[width/2
height/2];
byte mip2[width/4height/4];
byte mip3[width/8
height/8];

all pixel data are 8bit indexes into the single palette.
note that conchars, palette, colormap, and pop.lmp lumps/files are headerless and thus neither qpics nor miptex lumps, even if the wad file implies otherwise.