[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]


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