home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 1: Collection A / 17Bit_Collection_A.iso / files / 290.dms / 290.adf / quickrif.source / jiff.h < prev    next >
C/C++ Source or Header  |  1989-01-31  |  4KB  |  148 lines

  1.  
  2. /************ I usually put these in a file called format.h ****/
  3.  
  4. #define LO_RES
  5.  
  6. #ifdef HI_RES
  7. #define XMAX 640
  8. #define YMAX 200
  9. #define PLANES 4
  10. #define MAXCOL (1<<PLANES)
  11. #define XASPECT 5
  12. #define YASPECT 11
  13. #endif HI_RES
  14.  
  15. #ifdef LO_RES
  16. #define XMAX 320
  17. #define YMAX 200
  18. #define PLANES 5
  19. #define MAXCOL (1<<PLANES)
  20. #define XASPECT 10
  21. #define YASPECT 11
  22. #endif LO_RES
  23.  
  24. /* EA handy make a long from 4 chars macros redone to work with Aztec*/
  25. #define MAKE_ID(a, b, c, d)\
  26.     ( ((long)(a)<<24) + ((long)(b)<<16) + ((long)(c)<<8) + (long)(d) )
  27.  
  28. /* these are the IFF types I deal with */
  29. #define FORM MAKE_ID('F', 'O', 'R', 'M')
  30. #define ILBM MAKE_ID('I', 'L', 'B', 'M')
  31. #define BMHD MAKE_ID('B', 'M', 'H', 'D')
  32. #define CMAP MAKE_ID('C', 'M', 'A', 'P')
  33. #define BODY MAKE_ID('B', 'O', 'D', 'Y')
  34.  
  35. /* and these are the IFF types I ignore but don't squawk about */
  36. #define GRAB MAKE_ID('G', 'R', 'A', 'B')
  37. #define SPRT MAKE_ID('S', 'P', 'R', 'T')
  38. #define CAMG MAKE_ID('C', 'A', 'M', 'G')
  39. #define CRNG MAKE_ID('C', 'R', 'N', 'G')
  40. #define CCRT MAKE_ID('C', 'C', 'R', 'T')
  41.  
  42. #define VRUN MAKE_ID('V', 'R', 'U', 'N')
  43. #define RIFF MAKE_ID('R', 'I', 'F', 'F')
  44.  
  45.  
  46. /* Some macros for raster memory allocation ... redefine if you're
  47.    sensible and manage memory locally */
  48.  
  49. /* ralloc - raster alloc*/
  50. #define ralloc(amount)  (PLANEPTR)AllocMem((long)(amount), (long)MEMF_CHIP)
  51. /* rfree - raster free*/
  52. #define rfree(pt, amount)    FreeMem( (pt), (long)(amount) )
  53.  
  54. #define lalloc(amount)  AllocMem((long)(amount), 0L)
  55. #define lfree(pt, amount) FreeMem( pt, (long)amount)
  56.  
  57. /*line_bytes = the number of words * 2 (for bytes) a raster line takes up */
  58. #define line_bytes(width)    (((width+15)>>4)<<1)
  59.  
  60. /* psize - plane size in bytes (an even number) of a raster given
  61.    width and height */
  62. #define psize(width, height) ( line_bytes(width)*height)
  63.  
  64. /* the place to throw excess bits */
  65. #ifdef LATER
  66. #define bit_bucket(file, length) fseek(file, (long)(length), 1)
  67. #endif LATER
  68.  
  69.  
  70. union bytes4
  71.     {
  72.     char b4_name[4];
  73.     long b4_type;
  74.     };
  75.  
  76. struct iff_chunk
  77.     {
  78.     union bytes4 iff_type;
  79.     long iff_length;
  80.     };
  81.  
  82. struct ilbm_chunk
  83.     {
  84.     long form;
  85.     long iff_length;
  86.     long ilbm;
  87.     };
  88.  
  89. struct form_chunk
  90.     {
  91.     union bytes4 fc_type; /* == FORM */
  92.     long fc_length;
  93.     union bytes4 fc_subtype;
  94.     };
  95.  
  96. struct BitMapHeader
  97.     {
  98.     UWORD w, h;
  99.     UWORD x, y;
  100.     UBYTE nPlanes;
  101.     UBYTE masking;
  102.     UBYTE compression;
  103.     UBYTE pad1;
  104.     UWORD transparentColor;
  105.     UBYTE xAspect, yAspect;
  106.     WORD pageWidth, pageHeight;
  107.     };
  108.  
  109. /*ILBM_info is the structure read_iff returns, and is hopefully all
  110.   you need to deal with out of the iff reader routines below*/
  111. struct ILBM_info
  112.     {
  113.     struct BitMapHeader header;
  114.     UBYTE cmap[MAXCOL*3];    /*say hey aztec don't like odd length structures*/
  115.     struct BitMap bitmap;
  116.     };
  117.  
  118.  
  119. /* I sure wish C function "prototypes" were real and not just ANSI */
  120. extern struct ILBM_info *read_iff();  /* read_iff( char *filename ); */
  121. extern void free_planes();        /* free_planes( struct BitMap *bitmap); */
  122. extern int write_iff();
  123. /* write_iff(char *name, unsigned char *colors, struct BitMap *bits,
  124.     short xoff, short yoff, short width, short compressed); */
  125.  
  126.  
  127. /* some error conditions */
  128. #define LOAD_BADFILE 1
  129. #define LOAD_NOFILE  2
  130. #define LOAD_NOMEM     3
  131.  
  132.  
  133. /* Anyone know where some useful minterms are defined? */
  134. #define COPY_MINTERM        0xc0
  135.  
  136. /***
  137.  
  138.         A meditation for the guru from the Diamond Sutra -
  139.  
  140.         So shall you think of all this fleeting world:
  141.         A star at dawn, a bubble in a stream;
  142.         A flash of lightning in a summer cloud,
  143.         A flickering lamp, a phantom, and a dream.
  144.  
  145. ***/
  146.  
  147.  
  148.