home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Programming / DOpus4-GPL / Program / pchg.h < prev    next >
C/C++ Source or Header  |  2000-01-27  |  2KB  |  76 lines

  1. #ifndef    PCHG_H
  2. #define    PCHG_H
  3. /*
  4. **    $Filename: iff/pchg.h $
  5. **    $Revision: 0.6 $
  6. **
  7. ** Definitions for the PCHG chunk
  8. */
  9.  
  10. #define    ID_PCHG        MAKE_ID('P','C','H','G')
  11.  
  12. /* Compression modes */
  13.  
  14. #define PCHG_COMP_NONE 0
  15. #define PCHG_COMP_HUFFMANN 1
  16.  
  17. /* Flags */
  18.  
  19. #define PCHGB_12BIT            (0)
  20. #define PCHGB_32BIT            (1)
  21. #define PCHGB_USE_ALPHA        (2)
  22.  
  23.  
  24. #define PCHGF_12BIT            (1<<0)    /* Use SmallLineChanges */
  25. #define PCHGF_32BIT            (1<<1)    /* Use BigLineChanges    */
  26. #define PCHGF_USE_ALPHA        (1<<2)    /* Meaningful only of PCHGB_32BIT is on: use the Alpha
  27.                                                     channel info */
  28.  
  29. /* Structures for the PCHG chunk */
  30.  
  31. struct PCHGHeader {
  32.    UWORD Compression;
  33.    UWORD Flags;
  34.    WORD  StartLine;
  35.    UWORD LineCount;
  36.    UWORD ChangedLines;
  37.    UWORD MinReg;
  38.    UWORD MaxReg;
  39.    UWORD MaxChanges;
  40.    ULONG TotalChanges;
  41. };
  42.  
  43. struct PCHGCompHeader {
  44.    ULONG CompInfoSize;
  45.    ULONG OriginalDataSize;
  46. };
  47.  
  48. struct SmallLineChanges {
  49.    UBYTE ChangeCount16;
  50.    UBYTE ChangeCount32;
  51. /*   UWORD PaletteChange[];*/
  52. };
  53.  
  54. struct BigLineChanges {
  55.    UWORD ChangeCount;
  56. /*   struct BigPaletteChange PaletteChange[];*/
  57. };
  58.  
  59. struct BigPaletteChange {
  60.    UWORD Register;
  61.    UBYTE Alpha, Red, Blue, Green;
  62. };
  63.  
  64. /* Errors */
  65.  
  66. #define PCHGERR_NOMEM            (-1)
  67. #define PCHGERR_UNKNOWNCOMP    (-2)
  68.  
  69. VOID __regargs PCHG_CFastDecomp(APTR Source, APTR Dest, WORD *TreeCode, ULONG OriginalSize);
  70. UBYTE *__regargs PCHG_CompHuffmann(APTR Source, ULONG SourceSize, ULONG *DataSize, ULONG *TreeSize);
  71. VOID __regargs PCHG_SetUserCopList(WORD Offset, UWORD Length, struct ViewPort *ViewPort, struct PCHGHeader *PCHG, APTR LineMask, APTR LineData);
  72. LONG __regargs PCHG_ParsePCHG(struct PCHGHeader *PCHG, struct ViewPort *ViewPort);
  73. struct PCHGHeader *__regargs PCHG_SHAM2PCHG(UWORD *SHAMChunk, ULONG SHAMSize, WORD Increment);
  74.  
  75. #endif
  76.