| 1 | * [https://en.wikipedia.org/wiki/ILBM] |
| 2 | * [http://wiki.amigaos.net/wiki/ILBM_IFF_Interleaved_Bitmap] |
| 3 | |
| 4 | Chunk DPPV : |
| 5 | |
| 6 | {{{ |
| 7 | /* The chunk identifier DPPV */ |
| 8 | |
| 9 | #define ID_DPPV MakeID('D','P','P','V') |
| 10 | |
| 11 | typedef LONG LongFrac; |
| 12 | typedef struct ( LongFrac x,y,z; ) LFPoint; |
| 13 | typedef LongFrac APoint[3]; |
| 14 | |
| 15 | typedef union { |
| 16 | LFPoint l; |
| 17 | APoint a; |
| 18 | } UPoint; |
| 19 | |
| 20 | /* values taken by variable rotType */ |
| 21 | #define ROT_EULER 0 |
| 22 | #define ROT_INCR 1 |
| 23 | |
| 24 | /* Disk record describing Perspective state */ |
| 25 | |
| 26 | typedef struct { |
| 27 | WORD rotType; /* rotation type */ |
| 28 | WORD iA, iB, iC; /* rotation angles (in degrees) */ |
| 29 | LongFrac Depth; /* perspective depth */ |
| 30 | WORD uCenter, vCenter; /* coords of center perspective, |
| 31 | * relative to backing bitmap, |
| 32 | * in Virtual coords |
| 33 | */ |
| 34 | WORD fixCoord; /* which coordinate is fixed */ |
| 35 | WORD angleStep; /* large angle stepping amount */ |
| 36 | UPoint grid; /* gridding spacing in X,Y,Z */ |
| 37 | UPoint gridReset; /* where the grid goes on Reset */ |
| 38 | UPoint gridBrCenter; /* Brush center when grid was last on, |
| 39 | * as reference point |
| 40 | */ |
| 41 | UPoint permBrCenter; /* Brush center the last time the mouse |
| 42 | * button was clicked, a rotation performed, |
| 43 | * or motion along "fixed" axis |
| 44 | */ |
| 45 | LongFrac rot[3][3]; /* rotation matrix */ |
| 46 | } PerspState; |
| 47 | |
| 48 | }}} |