#ifndef DATATYPES_PICTURECLASS_H #define DATATYPES_PICTURECLASS_H /* ** $VER: pictureclass.h 44.1 (15.4.1999) ** Includes Release 44.1 ** ** Interface definitions for DataType picture objects. ** ** Copyright © 1992-1999 Amiga, Inc. ** All Rights Reserved */ #ifndef UTILITY_TAGITEM_H #include <utility/tagitem.h> #endif #ifndef DATATYPES_DATATYPESCLASS_H #include <datatypes/datatypesclass.h> #endif #ifndef LIBRARIES_IFFPARSE_H #include <libraries/iffparse.h> #endif /*****************************************************************************/ #define PICTUREDTCLASS "picture.datatype" /*****************************************************************************/ /* Picture attributes */ /* Mode ID of the picture (ULONG) */ #define PDTA_ModeID (DTA_Dummy + 200) /* Bitmap header information (struct BitMapHeader *) */ #define PDTA_BitMapHeader (DTA_Dummy + 201) /* Pointer to a class-allocated bitmap, that will end * up being freed by picture.class when DisposeDTObject() * is called (struct BitMap *). */ #define PDTA_BitMap (DTA_Dummy + 202) /* Picture colour table (struct ColorRegister *) */ #define PDTA_ColorRegisters (DTA_Dummy + 203) /* Color table to use with SetRGB32CM() (ULONG *) */ #define PDTA_CRegs (DTA_Dummy + 204) /* Color table; this table is initialized during the layout * process and will contain the colours the picture will use * after remapping. If no remapping takes place, these colours * will match those in the PDTA_CRegs table (ULONG *). */ #define PDTA_GRegs (DTA_Dummy + 205) /* Shared pen table; this table is initialized during the layout * process while the picture is being remapped (UBYTE *). */ #define PDTA_ColorTable (DTA_Dummy + 206) /* Shared pen table; in most places this table will be identical to * the PDTA_ColorTable table. Some of the colours in this table might * match the original colour palette a little better than the colours * picked for the other table. The picture.datatype uses the two tables * during remapping, alternating for each pixel (UBYTE *). */ #define PDTA_ColorTable2 (DTA_Dummy + 207) /* OBSOLETE; DO NOT USE */ #define PDTA_Allocated (DTA_Dummy + 208) /* Number of colors used by the picture. (UWORD) */ #define PDTA_NumColors (DTA_Dummy + 209) /* Number of colors allocated by the picture (UWORD) */ #define PDTA_NumAlloc (DTA_Dummy + 210) /* Remap the picture (BOOL); defaults to TRUE */ #define PDTA_Remap (DTA_Dummy + 211) /* Screen to remap to (struct Screen *) */ #define PDTA_Screen (DTA_Dummy + 212) /* Free the source bitmap after remapping (BOOL) */ #define PDTA_FreeSourceBitMap (DTA_Dummy + 213) /* Pointer to a Point structure */ #define PDTA_Grab (DTA_Dummy + 214) /* Pointer to the destination (remapped) bitmap */ #define PDTA_DestBitMap (DTA_Dummy + 215) /* Pointer to class-allocated bitmap, that will end * up being freed by the class after DisposeDTObject() * is called (struct BitMap *) */ #define PDTA_ClassBitMap (DTA_Dummy + 216) /* Number of colors used for sparse remapping (UWORD) */ #define PDTA_NumSparse (DTA_Dummy + 217) /* Pointer to a table of pen numbers indicating * which colors should be used when remapping the image. * This array must contain as many entries as there * are colors specified with PDTA_NumSparse (UBYTE *). */ #define PDTA_SparseTable (DTA_Dummy + 218) /* Index number of the picture to load (ULONG). (V44) */ #define PDTA_WhichPicture (DTA_Dummy + 219) /* Get the number of pictures stored in the file (ULONG *). (V44) */ #define PDTA_GetNumPictures (DTA_Dummy + 220) /* Maximum number of colours to use for dithering (ULONG). (V44) */ #define PDTA_MaxDitherPens (DTA_Dummy + 221) /* Quality of the dithering algorithm to be used during colour * quantization (ULONG). (V44) */ #define PDTA_DitherQuality (DTA_Dummy + 222) /* Pointer to the allocated pen table (UBYTE *). (V44) */ #define PDTA_AllocatedPens (DTA_Dummy + 223) /*****************************************************************************/ /* When querying the number of pictures stored in a file, the * following value denotes "the number of pictures is unknown". */ #define PDTANUMPICTURES_Unknown (0) /*****************************************************************************/ /* V43 extensions (attributes) */ /* Set the sub datatype interface mode (LONG); see "Interface modes" below */ #define PDTA_SourceMode (DTA_Dummy + 250) /* Set the app datatype interface mode (LONG); see "Interface modes" below */ #define PDTA_DestMode (DTA_Dummy + 251) /* Allocates the resulting bitmap as a friend bitmap (BOOL) */ #define PDTA_UseFriendBitMap (DTA_Dummy + 255) /* NULL or mask plane for use with BltMaskBitMapRastPort() (PLANEPTR) */ #define PDTA_MaskPlane (DTA_Dummy + 258) /*****************************************************************************/ /* Interface modes */ #define PMODE_V42 (0) /* Compatibility mode */ #define PMODE_V43 (1) /* Extended mode */ /*****************************************************************************/ /* V43 extensions (methods) */ #define PDTM_Dummy (DTM_Dummy + 0x60) /* Transfer pixel data to the picture object in the specified format */ #define PDTM_WRITEPIXELARRAY (PDTM_Dummy + 0) /* Transfer pixel data from the picture object in the specified format */ #define PDTM_READPIXELARRAY (PDTM_Dummy + 1) /* PDTM_WRITEPIXELARRAY, PDTM_READPIXELARRAY */ struct pdtBlitPixelArray { ULONG MethodID; APTR pbpa_PixelData; /* The pixel data to transfer to/from */ ULONG pbpa_PixelFormat; /* Format of the pixel data (see "Pixel Formats" below) */ ULONG pbpa_PixelArrayMod; /* Number of bytes per row */ ULONG pbpa_Left; /* Left edge of the rectangle to transfer pixels to/from */ ULONG pbpa_Top; /* Top edge of the rectangle to transfer pixels to/from */ ULONG pbpa_Width; /* Width of the rectangle to transfer pixels to/from */ ULONG pbpa_Height; /* Height of the rectangle to transfer pixels to/from */ }; /* Pixel formats */ #define PBPAFMT_RGB 0 /* 3 bytes per pixel (red, green, blue) */ #define PBPAFMT_RGBA 1 /* 4 bytes per pixel (red, green, blue, alpha channel) */ #define PBPAFMT_ARGB 2 /* 4 bytes per pixel (alpha channel, red, green, blue) */ #define PBPAFMT_LUT8 3 /* 1 byte per pixel (using a separate colour map) */ #define PBPAFMT_GREY8 4 /* 1 byte per pixel (0==black, 255==white) */ /*****************************************************************************/ /* Masking techniques */ #define mskNone 0 #define mskHasMask 1 #define mskHasTransparentColor 2 #define mskLasso 3 #define mskHasAlpha 4 /* Compression techniques */ #define cmpNone 0 #define cmpByteRun1 1 #define cmpByteRun2 2 /* NOTE: unused (V44) */ /* Bitmap header (BMHD) structure */ struct BitMapHeader { UWORD bmh_Width; /* Width in pixels */ UWORD bmh_Height; /* Height in pixels */ WORD bmh_Left; /* Left position */ WORD bmh_Top; /* Top position */ UBYTE bmh_Depth; /* Number of planes */ UBYTE bmh_Masking; /* Masking type */ UBYTE bmh_Compression; /* Compression type */ UBYTE bmh_Pad; UWORD bmh_Transparent; /* Transparent color */ UBYTE bmh_XAspect; UBYTE bmh_YAspect; WORD bmh_PageWidth; WORD bmh_PageHeight; }; /*****************************************************************************/ /* Color register structure */ struct ColorRegister { UBYTE red, green, blue; }; /*****************************************************************************/ /* IFF types that may be in pictures */ #define ID_ILBM MAKE_ID('I','L','B','M') #define ID_BMHD MAKE_ID('B','M','H','D') #define ID_CMAP MAKE_ID('C','M','A','P') #define ID_CRNG MAKE_ID('C','R','N','G') #define ID_GRAB MAKE_ID('G','R','A','B') #define ID_SPRT MAKE_ID('S','P','R','T') #define ID_DEST MAKE_ID('D','E','S','T') #define ID_CAMG MAKE_ID('C','A','M','G') #ifndef ID_BODY #define ID_BODY MAKE_ID('B','O','D','Y') #endif /* ID_BODY */ #endif /* DATATYPES_PICTURECLASS_H */