TABLE OF CONTENTS

render.library/AddChunkyImageA
render.library/AddHistogramA
render.library/AddRGB
render.library/AddRGBImageA
render.library/AllocRenderMem
render.library/AllocRenderVec
render.library/AllocRenderVecClear
render.library/ApplyAlphaChannelA
render.library/BestPen
render.library/Chunky2BitMapA
render.library/Chunky2RGBA
render.library/ChunkyArrayDiversityA
render.library/ConvertChunkyA
render.library/CountRGB
render.library/CreateAlphaArrayA
render.library/CreateHistogramA
render.library/CreateMapEngineA
render.library/CreatePaletteA
render.library/CreatePenTableA
render.library/CreateRMHandlerA
render.library/CreateScaleEngineA
render.library/DeleteHistogram
render.library/DeleteMapEngine
render.library/DeletePalette
render.library/DeleteRMHandler
render.library/DeleteScaleEngine
render.library/ExportPaletteA
render.library/ExtractAlphaChannelA
render.library/ExtractPaletteA
render.library/FlushPalette
render.library/FreeRenderMem
render.library/FreeRenderVec
render.library/ImportPaletteA
render.library/InsertAlphaChannelA
render.library/MapChunkyArrayA
render.library/MapRGBArrayA
render.library/MixAlphaChannelA
render.library/MixRGBArrayA
render.library/Planar2ChunkyA
render.library/QueryHistogram
render.library/RenderA
render.library/RGBArrayDiversityA
render.library/ScaleA
render.library/ScaleOrdinate
render.library/SortPaletteA
render.library/TintRGBArrayA
render.library/AddChunkyImageA                 render.library/AddChunkyImageA

   NAME
        AddChunkyImageA - add chunky bytes to a histogram.
        AddChunkyImage  - varargs stub for AddChunkyImageA.

   SYNOPSIS
        success = AddChunkyImageA(histogram,chunky,width,height,
        d0                        a0        a1     d0    d1     
                                  palette,taglist)
                                  a2      a3
        
        ULONG AddChunkyImageA(APTR,UBYTE *,UWORD,UWORD,
                              APTR,struct TagItem *)
        
        ULONG AddChunkyImage(APTR,UBYTE *,UWORD,UWORD,
                             APTR,tag,...,TAG_DONE)

   FUNCTION
        This function adds an array of chunky bytes to a histogram. The
        color information contained in the chunky array and its palette
        will be stored in the histogram.

   INPUTS
        histogram       - pointer to a histogram
        chunky          - pointer to an array of chunky bytes
        width           - width to be added [pixels]
        height          - lines to be added [rows]
        palette         - pointer to a palette
                          created with CreatePaletteA()
        taglist         - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the chunky array [pixels].
                Default - equals to the specified width.

        RND_ProgressHook (ULONG) - Pointer to a callback hook
                structure for progress display operations. Refer to
                render/renderhooks.h for further information.
                Default - NULL.
        
   RESULTS
        success - return value to indicate whether the operation succeeded.
                  You must at least check for ADDH_SUCCESS. Adding data to
                  histograms may fail at any time and the histogram may
                  thereof get inaccurate.

   NOTES
        - It is not possible with this function to directly add a chunky
          array that represents a HAM color scheme. In this case you have
          to convert it to an RGB array via Chunky2RGBA(), and then to
          call AddRGBImageA().
           
        - This function may call the progress callback Hook with
          the PMSGTYPE_LINES_ADDED message.
        
   SEE ALSO
        AddRGBImageA(), CreateHistogramA(), render/renderhooks.h


render.library/AddHistogramA                     render.library/AddHistogramA

   NAME
        AddHistogramA - add a histogram to another histogram.
        AddHistogram  - varargs stub for AddHistogramA.

   SYNOPSIS
        success = AddHistogramA(desthistogram,sourcehistogram,taglist)
        d0                      a0            a1              a2
        
        ULONG AddHistogramA(APTR,APTR,struct TagItem *)
        
        ULONG AddHistogram(APTR,APTR,tag,...,TAG_DONE)

   FUNCTION
        This function adds a histogram to another histogram,
        according to the following scheme:
        
        desthistogram + sourcehistogram -> desthistogram
        
        The color information contained in the source histogram
        will be added to the destination histogram.

   INPUTS
        desthistogram       - pointer to destination histogram
        sourcehistogram     - pointer to source histogram
        taglist             - pointer to an array of TagItems

   TAGS
        RND_Weight (UWORD)  - multiplication factor for the
                number of representations in sourcehistogram

   RESULTS
        success - return value to indicate whether the operation succeeded.
                  You must at least check for ADDH_SUCCESS. Adding data to
                  histograms may fail at any time and the histogram may
                  thereof get inaccurate.
       
   SEE ALSO
        CreateHistogramA()


render.library/AddRGB                                   render.library/AddRGB

   NAME
        AddRGB - add a RGB value to a histogram.

   SYNOPSIS
        success = AddRGB(histogram,RGB,count)
        d0               a0        d0  d1
        
        ULONG AddRGB(APTR,ULONG,ULONG)

   FUNCTION
        This function adds a given number of representations for a
        single RGB value to a histogram.

   INPUTS
        histogram    - pointer to a histogram
        RGB          - RGB value to be added
        count        - number of representations for that RGB value

   RESULTS
        success - return value to indicate whether the operation succeeded.
                  You must at least check for ADDH_SUCCESS. Adding data to
                  histograms may fail at any time and the histogram may
                  thereof get inaccurate.

   SEE ALSO
        AddRGBImageA(), CreateHistogramA()


render.library/AddRGBImageA                       render.library/AddRGBImageA

   NAME
        AddRGBImageA - add an array of RGB data to a histogram.
        AddRGBImage  - varargs stub for AddRGBImageA.

   SYNOPSIS
        success = AddRGBImageA(histogram,rgb,width,height,taglist)
        d0                     a0        a1  d0    d1     a2
        
        ULONG AddRGBImageA(APTR,ULONG *,UWORD,UWORD,struct TagItem *)
        
        ULONG AddRGBImage(APTR,ULONG *,UWORD,UWORD,tag,...,TAG_DONE) 

   FUNCTION
        This function adds an array of RGB pixels to a histogram. The
        color information contained in the RGB array gets stored in the
        histogram.

   INPUTS
        histogram       - pointer to a histogram
        rgb             - pointer to an array of RGB data
        width           - width to be added [pixels]
        height          - lines to be added [rows]
        taglist         - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the RGB array [pixels].
                Default - equals to the specified width.

        RND_ProgressHook (ULONG) - Pointer to a callback hook
                structure for progress display operations. Refer to
                render/renderhooks.h for further information.
                Default - NULL.

   RESULTS
        success - return value to indicate whether the operation succeeded.
                  You must at least check for ADDH_SUCCESS. Adding data to
                  histograms may fail at any time and the histogram may
                  thereof get inaccurate.

   NOTES
        - This function may call the progress callback Hook with
          the PMSGTYPE_LINES_ADDED message.
        
   SEE ALSO
        AddRGB(), CreateHistogramA(), render/renderhooks.h


render.library/AllocRenderMem                   render.library/AllocRenderMem

   NAME
        AllocRenderMem - allocate memory from a render-memhandler.

   SYNOPSIS
        mem = AllocRenderMem(rendermemhandler,size)
        d0                   a0               d0

        APTR AllocRenderMem(APTR, ULONG)

   FUNCTION
        AllocRenderMem will allocate a memory block from a
        render-memhandler, or from public memory. If there is no memory
        block of the requested size available, NULL will be returned.
        You must check this return value. The request may fail at any
        time. Every call to this function must be followed by a call to
        FreeRenderMem.

   INPUTS
        rendermemhandler - pointer to a render-memhandler, or NULL.
                           If you pass NULL, MEMF_ANY will be used.
        size             - the size of the desired block in bytes

   RESULTS
        mem              - pointer to a block of memory, or NULL if the
                           allocation failed.

   NOTES
        There is no real need for this function being available to you,
        except for helping you to create a smart, lean and sexy memory
        management - the idea is to enable your application and the
        library to share a particular memory pool.

   SEE ALSO
        FreeRenderMem(), AllocRenderVec(), CreateRMHandlerA()


render.library/AllocRenderVec                   render.library/AllocRenderVec

   NAME
        AllocRenderVec - allocate memory from a render-memhandler, 
                         and keep track of the allocated size and
                         the memhandler itself.

   SYNOPSIS
        mem = AllocRenderVec(rendermemhandler,size)
        d0                   a0               d0

        APTR AllocRenderVec(APTR, ULONG)

   FUNCTION
        AllocRenderVec will allocate a memory block from a
        render-memhandler, or from public memory. If there is no memory
        block of the requested size available, NULL will be returned.
        You must check this return value. The request may fail at any
        time. Any call to this function must be followed by a call to
        FreeRenderVec(). AllocRenderVec() keeps track of the allocated
        size and the memhandler itself.

   INPUTS
        rendermemhandler - pointer to a render-memhandler, or NULL.
                           If you pass NULL, MEMF_ANY will be used.
        size             - the size of the desired block in bytes

   RESULTS
        mem              - pointer to a block of memory, or NULL
                           if the allocation failed.

   SEE ALSO
        FreeRenderVec(), AllocRenderVecClear(), AllocRenderMem(),
        CreateRMHandlerA()


render.library/AllocRenderVecClear         render.library/AllocRenderVecClear

   NAME
        AllocRenderVecClear - allocate a clear block of memory from a
                              render-memhandler

   SYNOPSIS
        mem = AllocRenderVecClear(rendermemhandler,size)
        d0                        a0               d0

        APTR AllocRenderVecClear(APTR, ULONG)

   FUNCTION
        AllocRenderVecClear will allocate a clear memory block from a
        render-memhandler, or from public memory. If there is no memory
        block of the requested size available, NULL will be returned.
        You must check this return value. The request may fail at any
        time. Any call to this function must be followed by a call to
        FreeRenderVec(). AllocRenderVecClear() keeps track of the
        allocated size and the memhandler itself.

   INPUTS
        rendermemhandler - pointer to a render-memhandler, or NULL.
                           If you pass NULL, MEMF_ANY will be used.
        size             - the size of the desired block in bytes

   RESULTS
        mem              - pointer to a block of memory filled with
                           NULL bytes, or NULL if the allocation failed.

   SEE ALSO
        FreeRenderVec(), AllocRenderVec(), AllocRenderMem(),
        CreateRMHandlerA()


render.library/ApplyAlphaChannelA           render.library/ApplyAlphaChannelA

   NAME
        ApplyAlphaChannelA - compose RGB array via alpha-channel.
        ApplyAlphaChannel  - varargs stub for ApplyAlphaChannelA.

   SYNOPSIS
        ApplyAlphaChannelA(sourcearray,width,height,destarray,tags)
                           a0          d0    d1     a1        a2

        void ApplyAlphaChannelA(ULONG *,UWORD,UWORD,ULONG *,
                                struct TagItem *)

        void ApplyAlphaChannel(ULONG *,UWORD,UWORD,ULONG *,
                               tag,...,TAG_DONE)

   FUNCTION
        This function uses the alpha-channel information (by default taken
        from the source array) to perform a composition of the source and
        destination array. The result will be written to the
        destination array.

   INPUTS
        sourcearray         - pointer to an ARGB array
        width               - width [pixels]
        height              - height [rows]
        destarray           - pointer to a RGB array
        taglist             - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the source array [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of the dest array [pixels].
                Default - equals to the specified width.

        RND_AlphaChannel (ULONG) - Pointer to the alpha-channel array.
                Default - equals to the pointer to the source array.

        RND_AlphaModulo (UWORD) - Pixel offset that will be used when
                proceeding from one alpha-channel value to the next [bytes].
                Default - 4.

        RND_AlphaWidth (ULONG) - Total width of the alpha-channel array
                [pixels]. Default - equals to the specified width.

   RESULTS
        none
       
   SEE ALSO
        InsertAlphaChannelA(), ExtractAlphaChannelA(), MixAlphaChannelA()


render.library/BestPen                                 render.library/BestPen

   NAME
        BestPen - find the best matching pen.

   SYNOPSIS
        pen = BestPen(palette,RGB)
        d0            a0      d0
        
        LONG BestPen(APTR,ULONG)

   FUNCTION
        Determine a palette's pen number that matches best a given RGB
        value.

   INPUTS
        palette   - palette created with CreatePaletteA()
        RGB       - RGB value to find a match for

   RESULTS
        pen       - pen number or -1 if no pen could be found.
                    (Usually this occurs when the palette is empty.)


render.library/Chunky2BitMapA                   render.library/Chunky2BitMapA

   NAME
        Chunky2BitMapA - convert chunky data to bitplanes.
        Chunky2BitMap  - varargs stub for Chunky2BitMapA.

   SYNOPSIS
        Chunky2BitMapA(chunky,sx,sy,width,height,bitmap,dx,dy,taglist)
                       a0     d0 d1 d2    d3     a1     d4 d5 a2
        
        void Chunky2BitMapA(UBYTE *,UWORD,UWORD,UWORD,UWORD,
                            struct BitMap *,UWORD,UWORD,struct TagItem *)
        
        void Chunky2BitMap(UBYTE *,UWORD,UWORD,UWORD,UWORD,
                           struct BitMap *,UWORD,UWORD,tag,...,TAG_DONE) 

   FUNCTION
        Converts an array of chunky bytes to the bitplanes associated
        with a BitMap structure. You can specify clip areas both inside
        the chunky array and the BitMap. This function merges the data
        into the destination BitMap if required. BMF_INTERLEAVED is also
        handled.
        
        You may only process BMF_STANDARD bitmaps with this function.

   INPUTS
        chunky     - pointer to an array of chunky bytes
        sx         - left edge inside the chunky array [pixels]
        sy         - top edge inside the chunky array [rows]
        width      - width [pixels]
        height     - height [rows]
        bitmap     - pointer to an initialized BitMap structure
        dx         - destination left edge inside BitMap [pixels]
        dy         - destination top edge inside BitMap [rows]
        taglist    - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the chunky array [pixels].
                Default - equals to the specified width.

        RND_PenTable (ULONG) - Pointer to a table of 256 UBYTEs
                for a secondary conversion of the pen numbers.
                Default - NULL.

   RESULTS
        none

   IMPORTANT NOTES
        Starting with v39, you are not allowed to assume foreign BitMap
        structures being of a planar type. You may pass a BitMap
        structure to this function only if the BMF_STANDARD flag is set.

        Also remember to set-up your own BitMap structure with the
        BMF_STANDARD flag if you wish to convert it with this function.
        Consider Chunky2BitMapA() being low-level. The BitMap structure
        involved here is intended to hold planar information. Since v39,
        this is different to what graphics.library might associate with
        a BitMap structure.

        Do not use this function with BitMap structures that are
        actually being displayed. If you wish to transfer chunky bytes
        to visible areas, use graphics.library functions, such as
        WriteChunkyPixels(), or WritePixelArray8(). You may also use
        Chunky2BitMapA() followed by BltBitMapRastPort() etc.

        With a graphics card supplied, WriteChunkyPixels() can be
        hundereds times faster than Chunky2BitMapA() followed by
        BltBitMapRastPort(). If you have to provide backward
        compatibility, it is worth the effort to differenciate between
        Kick 2.x and OS 3.x. Use Chunky2BitMapA() in the first case,
        WritePixelArray8() in the second case, and WriteChunkyPixels()
        if the system runs under OS3.1 and is supplied with a graphics
        card.

SEE ALSO
        Planar2ChunkyA(), graphics/gfx.h,
        graphics.library/WriteChunkyPixels()


render.library/Chunky2RGBA                         render.library/Chunky2RGBA

   NAME
        Chunky2RGBA - convert an array of chunky bytes to RGB data.
        Chunky2RGB  - varargs stub for Chunky2RGBA.

   SYNOPSIS
        success = Chunky2RGBA(chunky,width,height,rgb,palette,taglist)
        d0                    a0     d0    d1     a1  a2      a3
        
        ULONG Chunky2RGBA(UBYTE *,UWORD,UWORD,ULONG *,APTR,struct TagItem *)
        
        ULONG Chunky2RGB(UBYTE *,UWORD,UWORD,ULONG *,APTR,tag,...,TAG_DONE) 

   FUNCTION
        This function converts an array of chunky bytes to RGB data.

   INPUTS
        chunky      - pointer to an array of chunky bytes
        width       - width to be converted [pixels]
        height      - height to be converted [rows]
        rgb         - pointer to RGB destination buffer
        palette     - pointer to a palette created
                      with CreatePaletteA()
        taglist     - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the chunky array [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of the RGB array [pixels].
                Default - equals to the specified width.

        RND_ColorMode (ULONG) - Color mode that defines how to determine
                a pixel's actual color. Valid types:

                COLORMODE_CLUT          - normal palette lookup
                COLORMODE_HAM8          - HAM8 mode palette lookup
                COLORMODE_HAM6          - HAM6 mode palette lookup
                
                Default - COLORMODE_CLUT.

        RND_LeftEdge (UWORD) - Horizontal starting position inside the
                chunky array [pixels]. This is mainly intended to allow
                the conversion of HAM clip areas.
                Default - 0.

        RND_ProgressHook (ULONG) - Pointer to a callback hook
                structure for progress display operations. Refer to
                render/renderhooks.h for further information.
                Default - NULL.

        RND_PenTable (ULONG) - Pointer to a table of 256 UBYTEs
                for an additional conversion of the pen numbers.
                Default - NULL.
                Note: This is not defined for HAM modes.

        RND_LineHook (ULONG) - Pointer to a callback hook structure
                for line-related operations during conversion. This
                hook is executed once before a line is processed and
                once after it has been completed. Refer to
                render/renderhooks.h for further information.
                Default - NULL.

   RESULTS
        success - CONV_SUCCESS to indicate that the operation
                  succeeded. Currently, the only reason for this
                  function to fail is CONV_CALLBACK_ABORTED.

   NOTES
        - This function may call the progress callback Hook
          with the PMSGTYPE_LINES_CONVERTED message type.

   SEE ALSO
        render/render.h


render.library/ChunkyArrayDiversityA     render.library/ChunkyArrayDiversityA

   NAME
        ChunkyArrayDiversityA - calculate chunky array adaptibility
        ChunkyArrayDiversity  - varargs stub for ChunkyArrayDiversityA.

   SYNOPSIS
        diversity = ChunkyArrayDiversityA(chunkyarray,palette,
        d0                                a0          a1
                                          width,height,taglist)
                                          d0    d1     a2

        LONG ChunkyArrayDiversityA(UBYTE *,APTR,UWORD,UWORD,
                                   struct TagItem *)

        LONG ChunkyArrayDiversity(UBYTE *,UWORD,UWORD,
                                  tag,...,TAG_DONE)

   FUNCTION
        Calculate a chunky array's adaptibility to a palette or
        mapping-engine.

   INPUTS
        chunkyarray - pointer to an array of chunky bytes
        palette     - the chunky array's palette
        width       - width to be processed [pixels]
        height      - height to be processed [pixels]
        taglist     - pointer to an array of tagitems

   TAGS
        RND_Palette (ULONG) - pointer to a palette. Either this or the
                RND_MapEngine argument is obligatory!

        RND_MapEngine (ULONG) - pointer to a mapping-engine. Either this
                or the RND_Palette argument is obligatory!

        RND_SourceWidth (UWORD) - Total width of the RGB array [pixels].
                Default - equals to the specified width.

        RND_Interleave (ULONG) - number of pixels to skip horizontally.
                Default - 0.

   RESULTS
        diversity - an indicator for the chunky array's adaptibility
                    to the given palette or mapping-engine. 0 indicates
                    perfect adaptibility, 195075 indicates the worst case.

   IMPLEMENTATION   
        Every color in the source array is adapted to the specified
        palette or mapping-engine. Now assume p2 is the RGB of the
        palette entry that matches best with the requested color p1.

            R
            |
            |      * p2
            |     /
            |    /
            |   / d
            |__/_________G
           /  /
          /  * p1
         /
        B

        This function sums up the diversity d² for every color in the
        source array, and divides it by the number of pixels processed:

                          k=pixels
                  1         ___
        D   =   ------   .  \\  `   d(k)²
                pixels      /__,

                             k=1

        D is returned, so what you get is the average d² for all RGB
        values that appear in the array. d² is summed up instead of d
        because it is a better indicator for most purposes.

        Best case - all pixels match perfectly: D(min) = 0.
        Worst case - all pixels are white, and the only available color
        in the palette is black: D(max) = 255²+255²+255² = 195075.
        
   EXAMPLE        
        D indicates a palette's applicability for the given chunky
        array. You can e.g. use it to decide whether error diffusion
        should be enabled for ConvertChunkyA().

        dithermode = DITHERMODE_NONE;

        D = ChunkyArrayDiversity(sourcearray, palette, width, height, 
            RND_Palette, destpalette, RND_Interleave, 4, TAG_DONE);

        if (D > threshold)
        {
            dithermode = DITHERMODE_FS;
        }

        ConvertChunky(sourcearray, palette, width, height, destarray,
            destpalette, RND_DitherMode, dithermode, TAG_DONE);

        The interleave factor increases speed drastically. You gain a
        lot of performance if only dithering can be avoided sometimes.

   SEE ALSO
        RGBArrayDiversityA()


render.library/ConvertChunkyA                   render.library/ConvertChunkyA

   NAME
        ConvertChunkyA - convert an array of chunky bytes to a new palette.
        ConvertChunky  - varargs stub for ConvertChunkyA.

   SYNOPSIS
        success = ConvertChunkyA(source,sourcepalette,width,height,dest,        
        d0                       a0     a1            d0    d1     a2   
                                 destpalette,taglist)
                                 a3          a4
        
        ULONG ConvertChunkyA(UBYTE *,APTR,UWORD,UWORD,UBYTE *,
                             APTR,struct TagItem *)
        
        ULONG ConvertChunky(UBYTE *,APTR,UWORD,UWORD,UBYTE *,
                            APTR,tag,...,TAG_DONE)

   FUNCTION
        This function converts a source array of chunky bytes to another
        chunky array, and adapts it to a new palette.

   INPUTS
        source        - pointer to a source array of chunky bytes
        sourcepalette - pointer to the source array's palette
        width         - width to be converted [pixels]
        height        - height to be converted [rows]
        dest          - pointer to the destination chunky array
        destpalette   - pointer to the destination array's palette
        taglist       - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of source array [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of dest array [pixels].
                Default - equals to the specified width.

        RND_DitherMode (UWORD) - Error diffusion mode. Valid types:

                DITHERMODE_NONE   - no error diffusion

                DITHERMODE_FS     - Floyd-Steinberg
                                    Does not handle a dither amount.

                DITHERMODE_RANDOM - Random dithering
                                    Handles RND_DitherAmount.

                DITHERMODE_EDD    - EDD dithering
                                    Does not handle a dither amount.

                Default - DITHERMODE_NONE.

        RND_DitherAmount (UWORD) - Dither intensity (0-255).
                Only valid with certain dither modes (see above).
                Default - 128.

        RND_LineHook (ULONG) - Pointer to a callback hook structure
                for line-related operations during conversion. This
                hook is executed once before a line is rendered and
                once after a line has been completed. Refer to
                render/renderhooks.h for further information.
                Default - NULL.

        RND_OffsetColorZero (UWORD) - First pen number to appear
                in the rendered chunky image. This offset will be
                added to the palette's indices. Default - 0.
                Note: RND_PenTable overrides RND_OffsetColorZero.

        RND_PenTable (ULONG) - Pointer to a table of 256 UBYTEs
                for a secondary conversion of the pen numbers.
                Default - NULL.
                Note: RND_PenTable overrides RND_OffsetColorZero.

        RND_ProgressHook (ULONG) - Pointer to a callback hook
                structure for progress display operations. Refer to
                render/renderhooks.h for further information.
                Default - NULL.

        RND_ScaleEngine (ULONG) - Pointer to a scaling-engine.
                This scaling-engine will be used to scale the
                source data stream before it is being rendered.
                Default - NULL.

                Notes: 
                - The scaling engine's destination width and
                  height specifications override the width and
                  height arguments for RenderA().
                - The scaling-engine must have been created with
                  PIXFMT_CHUNKY_CLUT.

        RND_MapEngine (ULONG) - Pointer to a mapping-engine.
                This can greatly improve performance.
                Default - NULL.
                
                Notes:
                - The mapping-engine must have been created for
                  the destination palette that is specified for
                  ConvertChunkyA().
                - With dithering enabled, you better do not
                  specify a mapping-engine which was created with
                  a link to a histogram. Accurate conversion could
                  not be guaranteed in this case.

   RESULTS
        success - returncode to indicate whether the operation
                  succeeded. You must at least check for
                  CONV_SUCCESS.

   NOTES
        - This function may call the progress callback Hook with
          the PMSGTYPE_LINES_CONVERTED message type.
        
   SEE ALSO
        MapChunkyArrayA(), RenderA(), CreatePenTableA(),
        CreatePaletteA(), render/render.h, render/renderhooks.h


render.library/CountRGB                               render.library/CountRGB

   NAME
        CountRGB     - count a RGB value in a histogram.

   SYNOPSIS
        count = CountRGB(histogram,RGB)
        d0               a0        d0
        
        ULONG CountRGB(APTR,ULONG)

   FUNCTION
        Counts the number of occurances for a given RGB value. The
        result may depend on the histogram's accuracy.

   INPUTS
        histogram - pointer to a histogram

   RESULTS
        count     - number of representations for the
                    specified RGB value.

   NOTE
        You only get the exact result for 24bit histograms. The lower
        the resolution, the more colors are actually put together into
        one `category' of similar colors. A 24bit histogram
        differenciates 16,7 million colors, a 15bit histogram, for
        instance, only 32768.


render.library/CreateAlphaArrayA             render.library/CreateAlphaArrayA

   NAME
        CreateAlphaArrayA - create an alpha-channel for a RGB array.
        CreateAlphaArray  - varargs stub for CreateAlphaArrayA.

   SYNOPSIS
        CreateAlphaArrayA(rgbarray,width,height,tags)
                          a0       d0    d1     a1

        void CreateAlphaArrayA(ULONG *,UWORD,UWORD,struct TagItem *)

        void CreateAlphaArray(ULONG *,UWORD,UWORD,tag,...,TAG_DONE)

   FUNCTION
        This function creates an alpha-channel for the given RGB array.
        The alpha-channel will be the difference in brightness towards
        black (0x000000), or optionally towards another RGB value.

   INPUTS
        rgbarray            - pointer to a RGB array
        width               - width [pixels]
        height              - height [rows]
        taglist             - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the RGB array [pixels].
                Default - equals to the specified width.

        RND_AlphaChannel (ULONG) - Alpha-channel destination array.
                Default - equals to rgbarray. the upmost byte in the
                RGB array is a good place for an alpha-channel, usually.

        RND_AlphaWidth (UWORD) - Total width of the alpha-channel array
                [pixels]. Default - equals to the specified width.

        RND_AlphaModulo (UWORD) - Alpha-channel pixel modulo [bytes].
                Default - 4
                
        RND_MaskRGB (ULONG) - The RGB value to compute the alpha-channel
                towards. Default - 0x000000

   RESULTS
        none


render.library/CreateHistogramA               render.library/CreateHistogramA

   NAME
        CreateHistogramA - create and set up a histogram.
        CreateHistogram  - varargs stub for CreateHistogramA.

   SYNOPSIS
        hst = CreateHistogramA(taglist)
        d0                     a1
        
        APTR CreateHistogramA(struct TagItem *)
        
        APTR CreateHistogram(tag,...,TAG_DONE)

   FUNCTION
        Allocates and initializes a histogram.

   INPUTS
        taglist - pointer to an array of TagItems

   TAGS
        RND_RMHandler (ULONG) - pointer to a render-memhandler
                created with CreateRMHandlerA().
                Default - NULL.

        RND_HSType (UWORD) - Type of histogram. Valid types:

                HSTYPE_12BIT            - 12bit dynamic histogram
                HSTYPE_15BIT            - 15bit dynamic histogram
                HSTYPE_18BIT            - 18bit dynamic histogram
                HSTYPE_21BIT            - 21bit dynamic histogram
                HSTYPE_24BIT            - 24bit dynamic histogram
                HSTYPE_12BIT_TURBO      - 12bit tabular histogram
                HSTYPE_15BIT_TURBO      - 15bit tabular histogram
                HSTYPE_18BIT_TURBO      - 18bit tabular histogram

                Default - HSTYPE_15BIT_TURBO.

   RESULTS
        histogram - pointer to a histogram ready for usage,
                    or NULL if something went wrong.

   SEE ALSO
        DeleteHistogram(), QueryHistogram(), render/render.h


render.library/CreateMapEngineA               render.library/CreateMapEngineA

   NAME
        CreateMapEngineA - create a mapping-engine.
        CreateMapEngine - varargs stub for CreateMappingEngineA.

   SYNOPSIS
        engine = CreateMapEngineA(palette,taglist)
        d0                        a0       a1

        ULONG CreateMapEngineA(APTR,struct TagItem *)
        
        ULONG CreateMapEngine(APTR,tag,...,TAG_DONE)

  FUNCTION
        This function will create and prepare a mapping-engine for
        usage. Mapping-engines are highly optimized low-level conversion
        units for rendering to a specific palette.

        Mapping-engines are immediately dependent from a palette, and
        they may be additionally coupled with a histogram. In the latter
        case, mapping-engines adapt only RGB values that can be found in
        the histogram.

        Mapping-engines do not incorporate the contents of their
        palettes and histograms. They are getting notified, and they
        automagically update themselves when needed. This update takes
        place only on demand, i.e. whenever you pass a mapping-engine to
        a function. The mapping-engine checks if any changes applied to
        the palette or histogram, and it reconstructs itself. The
        palette's pen-adaption buffers are updated as well - palettes
        and mapping-engines are just good friends.

   INPUTS
        palette       - pointer to a palette
        taglist       - pointer to an array of TagItems

   TAGS
        RND_RMHandler (ULONG) - Pointer to a render-memhandler.
                This will be used for the mapping-engine's
                buffers. Default - The palette's memhandler.
   
        RND_Histogram (ULONG) - Pointer to a histogram.
                The histogram must be of a HSTYPE_..._TURBO type,
                and have the same resolution as the palette.
                Default - none.

   RESULTS
        engine - pointer to a mapping-engine ready for usage,
                 or NULL if something went wrong.

   NOTES
        You must free a mapping-engine before you DeletePalette() the
        palette it is dependent from. The same applies for the
        histogram.

   SEE ALSO
        DeleteMapEngine(), MapRGBArrayA(), CreateRMHandlerA()


render.library/CreatePaletteA                   render.library/CreatePaletteA

   NAME
        CreatePaletteA - create a palette.
        CreatePalette  - vararg stub for CreatePaletteA.

   SYNOPSIS
        palette = CreatePaletteA(taglist)
        d0                       a1
        
        APTR CreatePaletteA(struct TagItem *)
        
        APTR CreatePalette(tag,...,TAG_DONE)

   FUNCTION
        This function creates and initializes a palette that can hold up
        to 256 color entries.

   INPUTS
        taglist     - pointer to an array of TagItems

   TAGS
        RND_HSType (ULONG) - the palette's resolution. Palette adaption
                accuracy and memory consumption depend on this constant.
                A palette's resolution is specified analogously to a
                histogram's resolution. Valid types:

                HSTYPE_12BIT
                HSTYPE_15BIT
                HSTYPE_18BIT

                Default - HSTYPE_15BIT.

        RND_RMHandler (ULONG) - pointer to a render-memhandler that was
                created with CreateRMHandler(). Default - NULL.
        
   RESULTS
        palette  - a palette ready for usage,
                   or NULL if something went wrong.

   SEE ALSO
        DeletePalette(), ImportPaletteA(), ExportPaletteA(), 
        ExtractPaletteA(), FlushPalette(), render/render.h


render.library/CreatePenTableA                 render.library/CreatePenTableA

   NAME
        CreatePenTableA - create a pen conversion table.
        CreatePenTable  - varargs stub for CreatePenTableA.

   SYNOPSIS
        CreatePenTableA(chunky,oldpalette,width,height,newpalette,
                        a0     a1         d0    d1     a2
                        pentab,taglist)
                        a3     a4
        
        void CreatePenTableA(UBYTE *,APTR,UWORD,UWORD,APTR,
                             UBYTE *,struct TagItem *)
        
        void CreatePenTable(UBYTE *,APTR,UWORD,UWORD,APTR,
                            UBYTE *,tag,...,TAG_DONE)

   FUNCTION
        This function creates a table for the conversion of a particular
        array of chunky bytes. It scans through the chunky array, adapts
        the found palette entries to a new palette, and generates an
        output table of 256 UBYTEs. The resulting table is handled as
        follows:

        new_pen_number = pentab[old_pen_number]
        
   INPUTS
        chunky      - pointer to an array of chunky bytes
        oldpalette  - pointer to the original palette
        width       - width to be processed [pixels]
        height      - height to be processed [rows]
        newpalette  - pointer to a palette to be adapted to
        pentab      - pointer to the destination table
        taglist     - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the chunky array [pixels].
                Default - equals to the specified width.

        RND_PenTable (ULONG) - Pointer to a table of 256 UBYTEs
                for a secondary conversion of the pen numbers.
                Default - NULL.
        
   RESULTS
        none
        
   NOTES
        The destination table is assumed to have 256 entries,
        with no respect to what color indices actually occur in
        the chunky array.

   SEE ALSO
        ConvertChunkyA(), CreatePaletteA()


render.library/CreateRMHandlerA               render.library/CreateRMHandlerA

   NAME
        CreateRMHandlerA - Create and set up a memory handler.
        CreateRMHandler  - varargs stub for CreateRMHandlerA.

   SYNOPSIS
        rmh = CreateRMHandlerA(taglist)
        d0                     a1
        
        APTR CreateRMHandlerA(struct TagItem *)
        
        APTR CreateRMHandler(tag,...,TAG_DONE)

   FUNCTION
        This function allocates and initializes a render-memhandler.
        This is a custom memory resource manager for histograms,
        rendering, palettes, and many other render.library
        objects and functions. You may use a render-memhandler for your
        own purposes, too.

        A render-memhandler helps to avoid memory fragmentation as well
        as extreme stressing of the system's public memory lists.
        Private memory management is supported as well as v39 exec pools
        and common public memory. Future versions might provide more
        types of memory management.

   INPUTS
        taglist - pointer to an array of TagItems

   TAGS
        RND_MemType (UWORD) - type of memory management. Valid types:

                RMHTYPE_POOL            - v39 exec dynamic pool
                RMHTYPE_PRIVATE         - you supply a private memory pool
                RMHTYPE_PUBLIC          - use common public memory

                Default - RMHTYPE_PUBLIC.

        RND_MemBlock (ULONG) - pointer to a block of memory
                used for private memory management. This tag
                is obligatory if you specify RMHTYPE_PRIVATE
                and is ignored otherwise. 
                Default - none.

        RND_MemSize (ULONG) - size of the memory block used
                for private memory management. This tag is
                obligatory if you specify RMHTYPE_PRIVATE
                and is ignored otherwise. 
                Default - none.

        RND_MemFlags (ULONG) - memory flags, as defined in
                exec/memory.h. These are ignored for
                RMHTYPE_PRIVATE. Default - MEMF_ANY.

   RESULTS
        rmh - a render-memhandler ready for usage, or NULL if
              something went wrong.

   NOTES
        You must check for the presence of exec v39 before you create a
        memhandler with RMHTYPE_POOL specified.

   SEE ALSO
        AllocRenderMem(), AllocRenderVec(), DeleteRMHandler(),
        exec.library/CreatePool(), render/render.h, exec/memory.h


render.library/CreateScaleEngineA           render.library/CreateScaleEngineA

   NAME
        CreateScaleEngineA - Create a scaling-engine.
        CreateScaleEngine  - varargs stub for CreateScaleEngineA.

   SYNOPSIS
        scaleengine = CreateScaleEngineA(sourcewidth,sourceheight,
        d0                               d0          d1           
                                         destwidth,destheight,taglist)
                                         d2        d3         a1
        
        APTR CreateScaleEngineA(UWORD,UWORD,UWORD,
                                UWORD,struct TagItem *)
        
        APTR CreateScaleEngine(UWORD,UWORD,UWORD,
                               UWORD,tag,...,TAG_DONE)

   FUNCTION
        Allocates and initializes a scaling-engine for a specific set of
        scaling parameters. Once set up, a scaling-engine is highly
        optimized for its particular parameter specifications.

   INPUTS
        sourcewidth  - source width [pixels]
        sourceheight - source height [rows]
        destwidth    - destination width [pixels]
        destheight   - destination height [rows]
        taglist      - pointer to an array of tag items

   TAGS
        RND_RMHandler (ULONG) - pointer to a render-memhandler,
                such as created with CreateRMHandlerA().
                Default - NULL.

        RND_PixelFormat (ULONG) - Type of data to process.
                Currently defined are PIXFMT_CHUNKY_CLUT
                and PIXFMT_0RGB_32. Default - PIXFMT_CHUNKY_CLUT.

        RND_Coordinates (ULONG) - Pointer to an array of coordinates
                for texturemapped scaling. This array consists of
                4 WORD pairs of x/y coordinates each. The array forms
                a trapezoid inside the destination buffer for the source
                array being mapped to. Any parameters are valid, since
                clipping is fully implemented. Default - NULL.

   RESULTS
        engine - a scaling-engine ready for usage, or NULL
                 if something went wrong.

   SEE ALSO
        DeleteScaleEngine(), ScaleA()


render.library/DeleteHistogram                 render.library/DeleteHistogram

   NAME
        DeleteHistogram - dispose a histogram.

   SYNOPSIS
        DeleteHistogram(histogram)
                        a0

        void DeleteHistogram(APTR)

   FUNCTION
        Removes a histogram and frees all associated memory.

   INPUTS
        histogram   - pointer to a histogram
                      Passing a NULL pointer is safe.

   RESULTS
        none


render.library/DeleteMapEngine                 render.library/DeleteMapEngine

   NAME
        DeleteMapEngine - dispose a mapping-engine.

   SYNOPSIS
        DeleteMapEngine(engine)
                        a0

        void DeleteMapEngine(APTR)

   FUNCTION
        Removes a mapping-engine and frees all associated memory.

   INPUTS
        engine   - pointer to a mapping-engine

   NOTES
        You must free mapping-engines before you delete the
        palettes and histograms they're dependent from.

   RESULTS
        none

   SEE ALSO
        CreateMapEngine()


render.library/DeleteRMHandler                 render.library/DeleteRMHandler

   NAME
        DeleteRMHandler - free a render-memhandler.

   SYNOPSIS
        DeleteRMHandler(rendermemhandler)
                        a0

        void DeleteRMHandler(APTR)

   FUNCTION
        DeleteRMHandler() will remove and free a previously created
        render-memhandler. That does not imply that any outstanding
        memory will be returned to the system or to whatever memory
        ressources. You are responsible for freeing each memory block
        that you have allocated from a render-memhandler.

   INPUTS
        render-memhandler - a render-memhandler to be deleted.

   RESULTS
        none

   NOTES
        You are not allowed to call DeleteRMHandler() before every
        single byte has been returned to the memhandler.

   SEE ALSO
        CreateRMHandlerA()


render.library/DeletePalette                     render.library/DeletePalette

   NAME
        DeletePalette - dispose a palette.

   SYNOPSIS
        DeletePalette(palette)
                      a0

        void DeletePalette(APTR)

   FUNCTION
        This function deletes a palette and frees all
        associated memory.

   INPUTS
        palette   - pointer to a palette created
                    with CreatePaletteA()

   RESULTS
        none

   SEE ALSO
        CreatePaletteA(), FlushPalette()


render.library/DeleteScaleEngine             render.library/DeleteScaleEngine

   NAME
        DeleteScaleEngine - dispose a scaling-engine.

   SYNOPSIS
        DeleteScaleEngine(engine)
                          a0

        void DeleteScaleEngine(APTR)

   FUNCTION
        Deletes a scaling-engine and frees all associated memory.

   INPUTS
        engine   - a scaling-engine to be removed

   RESULTS
        none

   SEE ALSO
        CreateScaleEngineA()


render.library/ExportPaletteA                   render.library/ExportPaletteA

   NAME
        ExportPaletteA - export a palette.
        ExportPalette  - varargs stub for ExportPaletteA.

   SYNOPSIS
        ExportPaletteA(palette,buffer,taglist)
                       a0      a1     a2
        
        ExportPaletteA(APTR,APTR,struct TagItem *)
        
        ExportPalette(APTR,APTR,tag,...,TAG_DONE)

   FUNCTION
        This function exports a palette (or a part of it)
        to a colortable.

   INPUTS
        palette   - pointer to a palette created
                    with CreatePaletteA()
        buffer    - pointer to a destination buffer
        taglist   - pointer to an array of tag items

   TAGS
        RND_PaletteFormat (ULONG) - format of the color table
                to be exported. Valid types:

                PALFMT_RGB32    - ULONG red,green,blue
                PALFMT_RGB8     - ULONG 0x00rrggbb
                PALFMT_RGB4     - UWORD 0xrgb

                Default - PALFMT_RGB8.

        RND_FirstColor (ULONG) - first color entry to export.
                Default - 0.
        
        RND_NumColors (ULONG) - number of colors to export.
                Default - the number of colors inside the palette.

   RESULTS
        none

   SEE ALSO
        CreatePaletteA(), ImportPaletteA()


render.library/ExtractAlphaChannelA       render.library/ExtractAlphaChannelA

   NAME
        ExtractAlphaChannelA - extract alpha-channel from an ARGB array.
        ExtractAlphaChannel  - varargs stub for ExtractAlphaChannelA.

   SYNOPSIS
        ExtractAlphaChannelA(argbarray,width,height,chunkyarray,tags)
                             a0       d0    d1     a1          a2

        void ExtractAlphaChannelA(ULONG *,UWORD,UWORD,UBYTE *,
                                  struct TagItem *)

        void ExtractAlphaChannel(ULONG *,UWORD,UWORD,UBYTE *,
                                 tag,...,TAG_DONE)

   FUNCTION
        This function extracts the alpha-channel mask from an ARGB array
        and writes it to an array of chunky bytes.

   INPUTS
        argbarray           - pointer to an ARGB array
        width               - width [pixels]
        height              - height [rows]
        chunkyarray         - pointer to an array of chunky bytes
        taglist             - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the ARGB array [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of the chunky array [pixels].
                Default - equals to the specified width.

   RESULTS
        none
       
   SEE ALSO
        InsertAlphaChannelA(), ApplyAlphaChannelA()


render.library/ExtractPaletteA                 render.library/ExtractPaletteA

   NAME
        ExtractPaletteA - extract a palette from a histogram.
        ExtractPalette  - varargs stub for ExtractPaletteA.

   SYNOPSIS
        success = ExtractPaletteA(histogram,palette,numcolors,taglist)
        d0                        a0        a1      d0        a2
        
        ULONG ExtractPaletteA(APTR,ULONG *,UWORD,struct TagItem *)
        
        ULONG ExtractPalettA(APTR,ULONG *,UWORD,tag,...,TAG_DONE)

   FUNCTION
        This function extracts a given number of colors from a
        histogram and stores it in a palette.

   INPUTS
        histogram - pointer to a histogram
        palette   - pointer to a palette created
                    with CreatePaletteA()
        numcolors - number of entries to extract
        taglist   - pointer to an array of TagItems

   TAGS
        RND_RMHandler (ULONG) - Custom memory handler created with
                CreateRMHandlerA(). This is used to handle intermediate
                buffers during quantization.
                Default - The histogram's memory handler.

        RND_ProgressHook (ULONG) - Pointer to a callback hook
                structure for progress display operations. Refer to
                render/renderhooks.h for further information.
                Default - NULL.

        RND_RGBWeight (ULONG) - R/G/B quantization factors.
                They form a relative measurement between the R/G/B
                components, defining what color components should be
                preferred when the histogram gets decomposed.
                Default - 0x010101 (all components are treat equally).

        RND_ColorMode (ULONG) - Color mode that defines how to determine
                a pixel's actual color. Currently this tag should only be
                set to COLORMODE_HAM6 if you extract a palette for the
                use with a HAM6 image. 
                Default - COLORMODE_CLUT.

        RND_FirstColor (ULONG) - first color entry inside the palette
                that will be used for the extracted colors. See also
                ImportPaletteA() for further details. Default - 0.

        RND_NewPalette (ULONG) - if set to TRUE, this flag indicates
                that you want to dispose the current palette and
                create a new one. If set to FALSE, the new color entries
                are merged to the existing palette. Default - TRUE.

   RESULTS
        success - returncode to indicate whether the operation
                  succeeded. You must at least check for
                  EXTP_SUCCESS.

   NOTES
        - This function may call the progress callback Hook
          with the PMSGTYPE_COLORS_CHOSEN message type.

   SEE ALSO
        CreateHistogramA(), CreatePaletteA(), ImportPaletteA(),
        render/render.h, render/renderhooks.h


render.library/FlushPalette                       render.library/FlushPalette

   NAME
        FlushPalette - flush all buffers from a palette.

   SYNOPSIS
        FlushPalette(palette)
                     a0

        void FlushPalette(APTR)

   FUNCTION
        This function flushes all buffers that might be
        associated with a palette.

   INPUTS
        palette   - pointer to a palette that was
                    created with CreatePaletteA()

   RESULTS
        none

   SEE ALSO
        DeletePalette()


render.library/FreeRenderMem                     render.library/FreeRenderMem

   NAME
        FreeRenderMem - return memory to a render-memhandler.

   SYNOPSIS
        FreeRenderMem(rendermemhandler,mem,size)
                      a0               a1  d0

        void FreeRenderMem(APTR,APTR,ULONG)

   FUNCTION
        Free a block of memory that was allocated with
        AllocRenderMem().

   INPUTS
        rendermemhandler - pointer to the render-memhandler the block
                           has been allocated from
        mem              - pointer to the memory block to be returned
        size             - size of that memory block [bytes]

   RESULTS
        NONE

   SEE ALSO
        AllocRenderMem(), CreateRMHandlerA()


render.library/FreeRenderVec                     render.library/FreeRenderVec

   NAME
        FreeRenderVec - return memory to a render-memhandler.

   SYNOPSIS
        FreeRenderVec(mem)
                      a0

        void FreeRenderVec(APTR)

   FUNCTION
        Free a block of memory that was allocated with AllocRenderVec().

   INPUTS
        mem - pointer to a memory block
              to be returned to its render-memhandler.
              Passing a NULL pointer is safe.

   RESULTS
        NONE

   SEE ALSO
        AllocRenderVec(), DeleteRMHandler()


render.library/ImportPaletteA                   render.library/ImportPaletteA

   NAME
        ImportPaletteA - import a palette.
        ImportPalette  - varargs stub for ImportPaletteA.

   SYNOPSIS
        ImportPaletteA(palette,table,entries,taglist)
                       a0      a1    d0      a2
        
        ImportPaletteA(APTR,APTR,UWORD,struct TagItem *)
        
        ImportPalette(APTR,APTR,UWORD,tag,...,TAG_DONE)
        
   FUNCTION
        This function imports entries from a color table (or from a
        palette) to a palette. You are allowed to import multiple times.
        When doing so, entries will be overwritten (not inserted). The
        palette automatically grows to the required number of entries.
        Remember to neither import more than 256 entries nor beyond the
        256th entry.

   INPUTS
        palette   - pointer to a palette created
                    with CreatePaletteA()
        table     - pointer to a source color table
                    (or a render.library palette)
        entries   - number of color entries to import
        taglist   - pointer to an array of tag items

   TAGS
        RND_PaletteFormat (ULONG) - format of the color table
                to be imported. Valid types:

                PALFMT_RGB32    - ULONG red,green,blue
                PALFMT_RGB8     - ULONG 0x00rrggbb
                PALFMT_RGB4     - UWORD 0xrgb
                PALFMT_PALETTE  - another palette

                Default - PALFMT_RGB8.

        RND_FirstColor (ULONG) - first color entry inside the
                palette to import to. Default - 0.

        RND_EHBPalette (ULONG) - tag to indicate whether the
                imported colors should be interpreted as for an
                Extra-Halfbrite picture. Default - FALSE.

        RND_NewPalette (ULONG) - if set to TRUE, this flag indicates
                that you want to dispose the current palette and
                import a new one. If set to FALSE, the palette is
                merged. Default - TRUE.

   RESULTS
        none

   SEE ALSO
        CreatePaletteA(), ExportPaletteA(), render/render.h


render.library/InsertAlphaChannelA         render.library/InsertAlphaChannelA

   NAME
        InsertAlphaChannelA - insert a alpha-channel mask to a RGB array.
        InsertAlphaChannel  - varargs stub for InsertAlphaChannelA.

   SYNOPSIS
        InsertAlphaChannelA(chunkyarray,width,height,rgbarray,tags)
                            a0          d0    d1     a1       a2

        void InsertAlphaChannelA(UBYTE *,UWORD,UWORD,ULONG *,
                                 struct TagItem *)

        void InsertAlphaChannel(UBYTE *,UWORD,UWORD,ULONG *,
                                tag,...,TAG_DONE)

   FUNCTION
        This function inserts an array of chunky bytes to a RGB array.
        The resulting ARGB array can then be used for alpha-channel
        operations, such as provided with ApplyAlphaChannelA().

   INPUTS
        chunkyarray         - pointer to an array of chunky bytes
        width               - width [pixels]
        height              - height [rows]
        rgbarray            - pointer to a RGB array
        taglist             - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the chunky array [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of the rgb array [pixels].
                Default - equals to the specified width.

   RESULTS
        none
       
   SEE ALSO
        ExtractAlphaChannelA(), ApplyAlphaChannelA()


render.library/MapChunkyArrayA                 render.library/MapChunkyArrayA

   NAME
        MapChunkyArrayA - remap a chunky array.
        MapChunkyArray  - varargs stub for MapChunkyArrayA.

   SYNOPSIS
        success = MapChunkyArrayA(engine,sourcearray,palette,width,
        d0                        a0     a1          a2      d0    
                                  height,destarray,taglist)
                                  d1     a3        a4

        ULONG MapChunkyArrayA(APTR,UBYTE *,APTR,UWORD,UWORD,UBYTE *,
                              struct TagItem *)

        ULONG MapChunkyArray(APTR,UBYTE *,APTR,UWORD,UWORD,UBYTE *,
                             tag,...,TAG_DONE)

   FUNCTION
        MapChunkyArrayA() maps an array of chunky bytes to another
        chunky array.

   INPUTS
        engine      - pointer to a mapping-engine created
                      with CreateMapEngineA()
        sourcearray - pointer to source array of chunky pixels
        palette     - pointer to source array's palette
        width       - width to be converted [pixels]
        height      - height to be converted [rows]
        destarray   - pointer to the destination chunky array
        taglist     - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the chunky array [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of the chunky array [pixels].
                Default - equals to the specified width.

        RND_PenTable (ULONG) - Pointer to a table of 256 UBYTEs
                for a secondary conversion of the pen numbers.
                Default - NULL.

   RESULTS
        success - returncode to indicate whether the operation
                  succeeded. You must at least check for
                  CONV_SUCCESS.

   NOTES
        This function is considered low-level. Much more functionality
        is provided with ConvertChunkyA(). Mapping-engines may also be
        passed to ConvertChunkyA(), and MapChunkyArrayA() is only slightly
        faster in this case. ConvertChunkyA() is preferable under most
        circumstances. If you need to remap lots of tiny images, you
        might prefer MapChunkyArrayA(), since it has got very few overhead.

   SEE ALSO
        ConvertChunkyA(), MapRGBArrayA(), CreateMapEngineA()


render.library/MapRGBArrayA                       render.library/MapRGBArrayA

   NAME
        MapRGBArrayA - map an RGB array to chunky bytes.
        MapRGBArray  - varargs stub for MapRGBArrayA.

   SYNOPSIS
        success = MapRGBArrayA(engine,rgbarray,width,height,chunky,taglist)
        d0                     a0     a1       d0    d1     a2     a3

        ULONG MapRGBArrayA(APTR,ULONG *,UWORD,UWORD,UBYTE *,struct TagItem *)

        ULONG MapRGBArray(APTR,ULONG *,UWORD,UWORD,UBYTE *,tag,...,TAG_DONE)

   FUNCTION
        MapRGBArrayA() maps an array of RGB data to a chunky array.

   INPUTS
        engine      - pointer to a mapping-engine created
                      with CreateMapEngineA()
        rgbarray    - pointer to an array of RGB pixels
        width       - width to be converted [pixels]
        height      - height to be converted [rows]
        chunky      - pointer to the destination array
        taglist     - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the RGB array [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of the chunky array [pixels].
                Default - equals to the specified width.

        RND_PenTable (ULONG) - Pointer to a table of 256 UBYTEs
                for a secondary conversion of the pen numbers.
                Default - NULL.

   RESULTS
        success - returncode to indicate whether the operation
                  succeeded. You must at least check for
                  CONV_SUCCESS.

   NOTES
        - Do not use MapRGBArrayA() with ARGB (A=alpha-channel) data.
          The upper byte must be set to zero!
        - This function is considered low-level. Much more functionality
          is provided with RenderA(). Mapping-engines may also be passed
          to RenderA(), and MapRGBArrayA() is only slightly faster in this
          case. RenderA() is preferable under most circumstances. If you
          need to render lots of tiny images, you might prefer
          MapRGBArrayA(), since it has got few overhead.

   SEE ALSO
        RenderA(), MapChunkyArrayA(), CreateMapEngineA()


render.library/MixAlphaChannelA               render.library/MixAlphaChannelA

   NAME
        MixAlphachannelA - mix two arrays via alpha-channels.
        MixAlphachannel  - varargs stub for MixAlphachannelA.

   SYNOPSIS
        MixAlphachannelA(sourcearray1,sourcearray2,width,height,destarray,
                         a0           a1           d0    d1     a2
                         tags)
                         a3

        void MixAlphachannelA(ULONG *,ULONG *,UWORD,UWORD,ULONG *,
                              struct TagItem *)

        void MixAlphachannel(ULONG *,ULONG*,UWORD,UWORD,ULONG *,
                             tag,...,TAG_DONE)

   FUNCTION
        This function does a 'weighted' alpha-channel composition of
        two RGB arrays and writes the result to a third RGB array.
        You may optionally disable one or both alpha-channel sources,
        in the latter case a 1:1 mix (without alpha-channel) will be
        performed.

   INPUTS
        sourcearray1        - pointer to an RGB array, source
        sourcearray2        - pointer to an RGB array, source
        width               - width [pixels]
        height              - height [rows]
        destarray           - pointer to an RGB array, destination
        taglist             - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of sourcearray1 [pixels].
                Default - equals to the specified width.

        RND_SourceWidth2 (UWORD) - Total width of sourcearray2 [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of destarray [pixels].
                Default - equals to the specified width.

        RND_AlphaChannel (ULONG) - Pointer to an alpha-channel array
                for sourcearray1. This may be NULL. Default - equals
                to sourcearray1.
       
        RND_AlphaWidth (UWORD) - Total width of the first alpha-channel
                array [pixels]. Default - equals to RND_SourceWidth.

        RND_AlphaModulo (UWORD) - Alpha-channel pixel modulo for the
                first alpha-channel array [bytes]. Default - 4

        RND_AlphaChannel2 (ULONG) - Pointer to an alpha-channel array
                for sourcearray2. This may be NULL. Default - equals
                to sourcearray2.

        RND_AlphaWidth2 (UWORD) - Total width of the second alpha-channel
                array [pixels]. Default - equals to RND_SourceWidth2.

        RND_AlphaModulo2 (UWORD) - Alpha-channel pixel modulo for the
                second alpha-channel array [bytes]. Default - 4
                
   RESULTS
        none

   NOTES
        this function is much more generalized than ApplyAlphaChannelA()
        and MixRGBArrayA(), but it has got more overhead and might be
        noticably slower. read the appropriate autodoc sections to see
        if one of the above mentioned functions suffice for your particular
        purpose.

   SEE ALSO
        ApplyAlphaChannelA(), MixRGBArrayA(), InsertAlphaChannelA(),
        ExtractAlphaChannelA()


render.library/MixRGBArrayA                       render.library/MixRGBArrayA

   NAME
        MixRGBArrayA - mix two RGB arrays.
        MixRGBArray  - varargs stub for MixRGBArrayA.

   SYNOPSIS
        MixRGBArrayA(sourcearray,width,height,destarray,ratio,tags)
                     a0          d0    d1     a1        d2    a2

        void MixRGBArrayA(ULONG *,UWORD,UWORD,ULONG *,UWORD,
                          struct TagItem *)

        void MixRGBArray(ULONG *,UWORD,UWORD,ULONG *,UWORD,
                         tag,...,TAG_DONE)

   FUNCTION
        This function mixes sourcearray and destarray and writes
        the result to destarray. Unlike ApplyAlphaChannelA(), this
        function does not use any alpha-channel information.

   INPUTS
        sourcearray         - pointer to an ARGB array
        width               - width [pixels]
        height              - height [rows]
        destarray           - pointer to a RGB array
        ratio               - mix ratio (0...255)
        taglist             - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the source array [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of the dest array [pixels].
                Default - equals to the specified width.

   RESULTS
        none
       
   SEE ALSO
        ApplyAlphaChannelA()


render.library/Planar2ChunkyA                   render.library/Planar2ChunkyA

   NAME
        Planar2ChunkyA - convert bitplane data to chunky bytes.
        Planar2Chunky  - varargs stub for Planar2ChunkyA.

   SYNOPSIS
        Planar2ChunkyA(planetab,bytewidth,rows,depth,bytesperrow,
                       a0       d0        d1   d2    d3
                       chunkybuffer,taglist)
                       a1           a2

        void Planar2ChunkyA(PLANEPTR *,UWORD,UWORD,UWORD,UWORD,
                            UBYTE *,struct TagItem *)
        
        void Planar2Chunky(PLANEPTR *,UWORD,UWORD,UWORD,UWORD
                            UBYTE *,tag,...,TAG_DONE)

   FUNCTION
        This function converts raw bitplane-oriented (planar) graphics
        to an array of chunky bytes.

   INPUTS
        planetab    - pointer to a table of planepointers
        bytewidth   - width [bytes]. This must be an even number.
        rows        - height [rows]
        depth       - number of bitplanes in planetab
        bytesperrow - total bytes per row in the source bitplanes.
                      This must be an even number. If you convert
                      interleaved bitplanes, multiply by depth.
        chunky      - pointer to the destination chunky buffer
        taglist     - pointer to an array of TagItems

   TAGS
        RND_DestWidth (UWORD) - Total width of chunky array [pixels].
                Default - equals to bytewidth * 8.

                You are explicitely allowed to use a destwidth that is
                smaller than bytewidth * 8 pixels.
                
                Important note:
                If you specify this tag, you must _still_ supply a
                chunky buffer of at least bytewidth * 8 * rows bytes.

   NOTES
        Starting with v39, you are not allowed to assume foreign BitMap
        structures being of a planar type. Before you grab a table of
        planepointers out of an unknown BitMap structure and pass it to
        this function, you have to check for the presence of the
        BMF_STANDARD flag.

   RESULTS
        none

   SEE ALSO
        Chunky2BitMapA(), graphics/gfx.h


render.library/QueryHistogram                   render.library/QueryHistogram

   NAME
        QueryHistogram - query a histogram parameter.

   SYNOPSIS
        value = QueryHistogram(histogram,tag)
        d0                     a0        d0
        
        ULONG QueryHistogram(APTR,Tag)

   FUNCTION
        Query one of a histogram's specifications
        via Tag parameter.

   INPUTS
        histogram - pointer to a histogram
        tag       - Tag to be queried

   TAGS
        RND_NumColors (ULONG) -
                the number of different colors inside the histogram

        RND_NumPixels (ULONG) -
                the number of pixels that have been added to the
                histogram

        RND_RMHandler (ULONG) -
                the histogram's render-memhandler

        RND_HSType (UWORD) -
                the histogram's type

   RESULTS
        value    - the queried parameter

   SEE ALSO
        CreateHistogramA()


render.library/RenderA                                 render.library/RenderA

   NAME
        RenderA - render an array of RGB data to chunky bytes.
        Render  - varargs stub for RenderA.

   SYNOPSIS
        success = RenderA(rgb,width,height,chunky,palette,taglist)
        d0                a0  d0    d1     a1     a2      a3
        
        ULONG RenderA(ULONG *,UWORD,UWORD,UBYTE *,APTR,struct TagItem *)
        
        ULONG Render(ULONG *,UWORD,UWORD,UBYTE *,APTR,tag,...,TAG_DONE)

   FUNCTION
        Render an array of RGB data to an array of chunky bytes.

   INPUTS
        rgb         - pointer to an array of RGB pixels
        width       - width to be converted [pixels]
        height      - height to be converted [rows]
        chunky      - pointer to the destination array
        palette     - pointer to a palette to be rendered to
        taglist     - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the RGB array [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of the chunky array [pixels].
                Default - equals to the specified width.

        RND_ColorMode (ULONG) - Color mode that defines how to determine
                a pixel's actual color. Valid types:

                COLORMODE_CLUT          - normal palette lookup
                COLORMODE_HAM8          - HAM8 mode palette lookup
                COLORMODE_HAM6          - HAM6 mode palette lookup
                
                Default - COLORMODE_CLUT.

        RND_DitherMode (UWORD) - Error diffusion mode. Valid types:

                DITHERMODE_NONE   - no error diffusion

                DITHERMODE_FS     - Floyd-Steinberg
                                    Does not handle a dither amount.

                DITHERMODE_RANDOM - Random dithering
                                    Handles RND_DitherAmount.

                DITHERMODE_EDD    - EDD dithering
                                    Does not handle a dither amount.

                Default - DITHERMODE_NONE.

        RND_ProgressHook (ULONG) - Pointer to a callback hook
                structure for progress display operations. Refer to
                render/renderhooks.h for further information.
                Default - NULL.

        RND_OffsetColorZero (UWORD) - First pen number to appear
                in the rendered chunky image. This offset will be
                added to the palette's indices. Default - 0.
                Note: RND_PenTable overrides RND_OffsetColorZero.

        RND_PenTable (ULONG) - Pointer to a table of 256 UBYTEs
                for a secondary conversion of the pen numbers.
                Default - NULL.
                Note: RND_PenTable overrides RND_OffsetColorZero.

        RND_LineHook (ULONG) - Pointer to a callback hook structure
                for line-related operations during render. This hook
                is executed once before a line is rendered and once
                after it has been completed. Refer to
                render/renderhooks.h for further information.
                Default - NULL.

        RND_DitherAmount (UWORD) - Dither intensity (0-255).
                Only valid with certain dither modes (see above).
                Default - 128.

        RND_ScaleEngine (ULONG) - Pointer to a scaling-engine.
                This scaling-engine will be used to scale the
                source data stream before it is being rendered.
                Default - NULL.

                Notes: 
                - The scaling engine's destination width and
                  height specifications override the width and
                  height arguments for RenderA().
                - The scaling-engine must have been created with
                  PIXFMT_0RGB_32.

        RND_MapEngine (ULONG) - Pointer to a mapping-engine.
                This can greatly improve render performance.
                Default - NULL.
                
                Notes:
                - Mapping-engines are not applied for rendering
                  to HAM modes.
                - With dithering enabled, you better do not
                  specify a mapping-engine which was created with
                  a link to a histogram. Accurate conversion could
                  not be guaranteed in this case.

   RESULTS
        success - returncode to indicate whether the operation
                  succeeded. You must at least check for
                  REND_SUCCESS.

   NOTES
        - This function may call the progress callback Hook with
          the PMSGTYPE_LINES_RENDERED message type.

   SEE ALSO
        MapRGBArrayA(), ConvertChunkyA(), CreateMapEngineA(),
        CreateScaleEngineA(), render/render.h, render/renderhooks.h


render.library/RGBArrayDiversityA           render.library/RGBArrayDiversityA

   NAME
        RGBArrayDiversityA - calculate RGB array adaptibility
        RGBArrayDiversity  - varargs stub for RGBArrayDiversityA

   SYNOPSIS
        diversity = RGBArrayDiversityA(rgbarray,width,height,taglist)
        d0                             a0       d0    d1     a1

        LONG RGBArrayDiversityA(ULONG *,UWORD,UWORD,struct TagItem *)

        LONG RGBArrayDiversity(ULONG *,UWORD,UWORD,tag,...,TAG_DONE)

   FUNCTION
        This function calculates a RGB array's adaptibility to a palette
        or mapping-engine.

   INPUTS
        rgbarray - pointer to an array of RGB data
        width    - width of the RGB array [pixels]
        height   - height of the RGB array [pixels]
        taglist  - pointer to an array of tagitems

   TAGS
        RND_Palette (ULONG) - pointer to a palette. Either this or the
                RND_MapEngine argument is obligatory!

        RND_MapEngine (ULONG) - pointer to a mapping-engine. Either this
                or the RND_Palette argument is obligatory!

        RND_SourceWidth (UWORD) - Total width of the RGB array [pixels].
                Default - equals to the specified width.

        RND_Interleave (ULONG) - number of pixels to skip horizontally.
                Default - 0.

   RESULTS
        diversity - an indicator for the RGB array's adaptibility to
                    the given palette or mapping-engine. 0 indicates
                    perfect adaptibility, 195075 indicates the worst
                    case.

   IMPLEMENTATION   
        Every RGB in the source array is adapted to the specified
        palette or mapping-engine. Now assume p2 is the RGB of the
        palette entry that matches best with the requested RGB p1.

            R
            |
            |      * p2
            |     /
            |    /
            |   / d
            |__/_________G
           /  /
          /  * p1
         /
        B

        This function sums up the diversity d² for every RGB in the
        source array, and divides it by the number of pixels processed:

                          k=pixels
                  1         ___
        D   =   ------   .  \\  `   d(k)²
                pixels      /__,

                             k=1

        D is returned, so what you get is the average d² for all RGB
        values that appear in the array. d² is summed up instead of d
        because it is a better indicator for most purposes.

        Best case - all pixels match perfectly: D(min) = 0.
        Worst case - all pixels are white, and the only available color
        in the palette is black: D(max) = 255²+255²+255² = 195075.
        
   EXAMPLE        
        D indicates a palette's applicability for the given RGB array.
        You can e.g. use it to decide whether error diffusion should be
        enabled or not.

        dithermode = DITHERMODE_NONE;

        D = RGBArrayDiversity(rgbarray, width, height, 
            RND_Palette, destpalette, RND_Interleave, 4, TAG_DONE);

        if (D > threshold)
        {
            dithermode = DITHERMODE_FS;
        }

        Render(rgbarray, width, height, chunkyarray, destpalette,
            RND_DitherMode, dithermode, TAG_DONE);

        The interleave factor increases speed drastically. Nonetheless,
        RGBArrayDiversity() is yet very fast. You gain a lot of
        performance if only dithering can be avoided sometimes.

        Applying RGBArrayDiversity() to a mapping-engine is even more
        sophisticated. Use this if a histogram is available for the RGB
        array.

        me = CreateMapEngine(palette,RND_Histogram,histo,TAG_DONE);

        D = RGBArrayDiversity(rgbarray, width, height, 
            RND_MapEngine, me, RND_Interleave, 4, TAG_DONE);

        if (D > threshold)
        {
            Render(rgbarray, width, height, chunkyarray, destpalette,
                RND_DitherMode, DITHERMODE_FS, TAG_DONE);
        }
        else
        {
            MapRGBArray(me, rgbarray, width, height, chunkyarray, NULL);
        }

        This example provides even higher performance. MapRGBArrayA() is
        faster than RenderA(), especially when the mapping-engine is
        coupled with a histogram. Note: That mapping-engine's histogram
        has to be of a HSTYPE_..._TURBO type with the same resolution as
        the palette.

   SEE ALSO
        ChunkyArrayDiversityA()


render.library/ScaleA                                   render.library/ScaleA

   NAME
        ScaleA - scale an image.
        Scale  - varargs stub for ScaleA.

   SYNOPSIS
        success = ScaleA(engine,source,dest,taglist)
                         a0     a1     a2   a3
        
        ULONG ScaleA(APTR,APTR,APTR,struct TagItem *)
        
        ULONG Scale(APTR,APTR,APTR,tag,...,TAG_DONE)

   FUNCTION
        This function scales a source array of pixels to another
        array.

   INPUTS
        engine  - pointer to a scaling-engine created
                  with CreateScaleEngineA()
        source  - pointer to source array of pixels
        dest    - pointer to destination array
        taglist - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the source array [pixels].
                Default - equals to the source width the scaling-engine
                          was created with.

        RND_DestWidth (UWORD) - Total width of the dest array [pixels].
                Default - equals to the destination width the
                          scaling-engine was created with.

        RND_LineHook (ULONG) - Pointer to a callback hook structure
                for line-related operations during conversion. This
                hook is executed once before a line is processed and
                once after it has been completed. Refer to
                render/renderhooks.h for further information.
                Default - NULL.

   RESULTS
        success - CONV_SUCCESS to indicate that the operation
                  succeeded. Currently, the only reason for this
                  function to fail is CONV_CALLBACK_ABORTED.

   NOTES
        - It is possible to downscale (shrink) an array over itself,
          i.e. source and destination buffers may be the same in this
          case.

   SEE ALSO
        CreateScaleEngineA(), RenderA(), ConvertChunkyA()


render.library/ScaleOrdinate                     render.library/ScaleOrdinate

   NAME
        ScaleOrdinate - scale a single ordinate.

   SYNOPSIS
        scaled_ordinate = ScaleOrdinate(start,dest,ordinate)
        d0                              d0    d1   d2

        UWORD ScaleOrdinate(UWORD,UWORD,UWORD)

   FUNCTION
        This function scales a single ordinate. The algorithm used here
        is identical to what scaling-engines are created with.
        
   INPUTS
        start    - original value (e.g. width or height)
                   e.g. the original width of an image.
                   This value usually corresponds to a
                   start value with CreateScaleEngineA().
                   Must not be 0.
        dest     - destination value (e.g. width or height)
                   e.g. the scaled width of an image.
                   This value usually corresponds to a
                   dest value with CreateScaleEngineA().
                   Must not be 0.
        ordinate - a single ordinate (e.g. of a pixel).
                   Must be less than <start>.

   RESULTS
        scaled_ordinate - the new ordinate (after scaling)
        
   EXAMPLE        
        Assume you have a specific pair of coordinates that represent a
        particular pixel inside an image. You can use this function to
        determine the pixel's new coordinates after the image has been
        scaled:

        new_pixel_x = ScaleOrdinate(picwidth,newwidth,pixel_x);
        new_pixel_y = ScaleOrdinate(picheight,newheight,pixel_y);

   SEE ALSO
        CreateScaleEngineA()


render.library/SortPaletteA                       render.library/SortPaletteA

   NAME
        SortPaletteA - sort a palette.
        SortPalette  - varargs stub for SortPaletteA.

   SYNOPSIS
        success = SortPaletteA(palette,mode,taglist)
        d0                     a0      d0   a1
        
        ULONG SortPaletteA(APTR,ULONG,struct TagItem *)
        
        ULONG SortPalette(APTR,ULONG,tag,...,TAG_DONE)

   FUNCTION
        Sorts a palette according to a sort mode. Some sort modes apply
        to palettes solely, some others additionally require a
        histogram.

   INPUTS
        palette - pointer to a palette created
                  with CreatePaletteA().

        mode    - sort mode. Currently defined are:

                  PALMODE_BRIGHTNESS      - sort the palette entries
                                by brightness.

                  PALMODE_SATURATION      - sort the palette entries
                                by their color intensity.

                  PALMODE_POPULARITY      - sort the palette entries
                                by the number of pixels that they
                                represent. You must specify the
                                RND_Histogram taglist argument.

                  PALMODE_REPRESENTATION  - sort the palette entries
                                by the number of histogram entries
                                that they represent. You must specify
                                the RND_Histogram taglist argument.
                  
                  PALMODE_SIGNIFICANCE    - sort the palette entries
                                by their optical significance for the
                                human eye. Implementation is unknown
                                to you and may change. You must supply
                                the RND_Histogram taglist argument.

                  PALMODE_ASCENDING       - by default, sort direction
                                is descending, i.e. precedence is
                                `more-to-less' of the given effect.
                                Combine with this flag to invert the
                                sort direction.

        taglist - pointer to an array of tagitems.

   TAGS
        RND_Histogram (ULONG) - pointer to a histogram. This taglist
               argument is obligatory for some sort modes. (See above)

   RESULTS
        success - return value to indicate whether the operation succeeded.
                  You must at least check for SORTP_SUCCESS.

   NOTES
        SortPaletteA() can be extremely useful when a palette is to be
        allocated from a ColorMap via ObtainBestPenA(). After sorting
        with PALMODE_SIGNIFICANCE, important colors will be treated
        first. This increases probability for ObtainBestPenA() to
        allocate new pens for the most significant entries in the
        palette.


render.library/TintRGBArrayA                     render.library/TintRGBArrayA

   NAME
        TintRGBArrayA - tint an RGB array.
        TintRGBArray  - varargs stub for TintRGBArrayA.

   SYNOPSIS
        TintRGBArrayA(sourcearray,width,height,RGB,ratio,destarray,tags)
                      a0          d0    d1     d2  d3    a1        a2

        void TintRGBArrayA(ULONG *,UWORD,UWORD,ULONG,UWORD,ULONG *,
                           struct TagItem *)

        void TintRGBArray(ULONG *,UWORD,UWORD,ULONG,UWORD,ULONG *,
                          tag,...,TAG_DONE)

   FUNCTION
        This function mixes an RGB array with the specified RGB
        value and a mixing ratio. The result is written to another
        array, which may be the same as the source array.

   INPUTS
        sourcearray         - pointer to an ARGB array
        width               - width [pixels]
        height              - height [rows]
        RGB                 - tint RGB
        ratio               - tint ratio (0...255)
        destarray           - pointer to an ARGB array
        taglist             - pointer to an array of TagItems

   TAGS
        RND_SourceWidth (UWORD) - Total width of the source array [pixels].
                Default - equals to the specified width.

        RND_DestWidth (UWORD) - Total width of the dest array [pixels].
                Default - equals to the specified width.

   RESULTS
        none


