The Picture Datatype ******************** The V40 picture.datatype distributed with OS 3.1 had several weak points and missing features which made it inadequate when the first RTG systems with true-color support became available. For this reason, nowadays the original V40/V42 version has been obsoleted by third party replacements featuring true-color support and other useful extensions. OS 3.5 integrates a rewritten picture.datatype whose API tries to be as compatible as possible to these unofficial versions. The V44 picture.datatype works transparently with both `CyberGraphX' and `Picasso 96'. It also integrates color reduction algorithms to convert high/true-color pictures to palette-mapped bitmaps. The API allows the programmer to choose among several quantization and dithering techniques to get better quality or faster conversion. General concepts ================ palette-mapped a picture, bitmap or screen is said to be palette-mapped when the color of its pixels must be determined by looking up a color palette containing the RGB triplets associated with an index value. The palette is also called CLUT (Color Look-Up Table). direct-mapped a picture, bitmap or screen whose pixels directly contain an RGB triplet. Direct-mapped pictures do not need a palette. native bitmap a bitmap in which the image data is represented by bitplanes in the native format of the Amiga chipset (OCS/ECS/AGA). RTG bitmap a bitmap with a custom pixel format which may not be accessed directly. Drawing into the bitmap must be performed through the functions provided by the graphics.library or by the RTG system. Backwards compatibility ======================= For backwards compatibility, the unofficial V43 picture.datatype implementations which were distributed with `CyberGraphX' and `Picasso 96' behaved just like the V42 and eariler implementations by default. The picture returned to the application was stored in a native planar bitmap, up to 8 bitplanes deep. In order to let the datatype allocate custom bitmaps (chunky 8bpp or hi/truecolor), the application should set the PDTA_DestMode attribute to PMODE_V43. This has changed as of V44. PMODE_V43 is now active by default. Applications should never expect to get a native bitmap from the picture.datatype unless they explicitly ask for PMODE_V42. The following summary shows the different behaviour kept by all the known implementations of the picture.datatype: picture.datatype V40/V42 (OS 3.1) PDTA_DestMode is ignored. picture.datatype V43 (CyberGraphX) PDTA_DestMode defaults to PMODE_V42. The returned bitmap is always a planar one, with up to 8 bitplanes. picture.datatype V43 (Picasso 96) PDTA_DestMode defaults to PMODE_V42. However, the returned bitmap is NOT native. picture.datatype V44 (OS 3.5) PDTA_DestMode defaults to PMODE_V43. It can be explicitly forced to PMODE_V42. The V42 mode is retained in picture.datatype V44 for backwards compatibility only. Use of the V42 mode in new applications is STRONGLY DISCOURAGED. The V43 mode provides better performance for both the internal operations carried out by the datatype and for most bitmap to screen blitting operations. New methods in unofficial V43 picture.datatype ============================================== PDTM_WRITEPIXELARRAY Transfer pixel data to the picture object in the specified format PDTM_READPIXELARRAY Transfer pixel data from the picture object in the specified format New tags in unofficial V43 picture.datatype =========================================== PDTA_SourceMode Set the sub datatype interface mode PDTA_DestMode Set the app datatype interface mode PDTA_UseFriendBitMap Allocates the resulting bitmap as a friend bitmap PDTA_MaskPlane NULL or mask plane for use with BltMaskBitMapRastPort() New tags in V44 =============== PDTA_WhichPicture Index number of the picture to load PDTA_GetNumPictures Get the number of pictures stored in the file PDTA_MaxDitherPens Maximum number of colours to use for dithering PDTA_DitherQuality Quality of the dithering algorithm to be used during color quantization PDTA_AllocatedPens Pointer to the allocated pen table