#ifndef CLIB_RENDER_H
#define CLIB_RENDER_H
/*
**	$VER: render_protos.h v17.3 (17.12.96)
**
**	C prototype definitions
**
**	© 1996 TEK neosçientists
*/

#ifndef	GRAPHICS_GFX_H
#include <graphics/gfx.h>
#endif

#ifndef	UTILITY_HOOKS_H
#include <utility/hooks.h>
#endif

#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif

/*   private functions: */

void	TurboFillMem( APTR,ULONG,UBYTE );
void	TurboCopyMem( APTR,APTR,ULONG );


/*   public functions:  */

APTR	CreateRMHandlerA( struct TagItem * );
APTR	CreateRMHandler( Tag, ... );
void	DeleteRMHandler( APTR );
APTR	AllocRenderMem( APTR, ULONG );
void	FreeRenderMem( APTR );
APTR	AllocRenderVec( APTR, ULONG );
void	FreeRenderVec( APTR );

APTR	CreateHistogramA( struct TagItem * );
APTR	CreateHistogram( Tag, ... );
void	DeleteHistogram(APTR);
ULONG	QueryHistogram( APTR, Tag );
ULONG	AddRGB( APTR, ULONG, ULONG );
ULONG	AddRGBImageA( APTR, ULONG *, UWORD, UWORD, struct TagItem * );
ULONG	AddRGBImage( APTR, ULONG *, UWORD, UWORD, Tag, ... );
ULONG	AddChunkyImageA( APTR, UBYTE *, UWORD, UWORD, APTR, struct TagItem * );
ULONG	AddChunkyImage( APTR, UBYTE *, UWORD, UWORD, APTR, Tag, ... );
ULONG	ExtractPaletteA( APTR, ULONG *, UWORD, struct TagItem * );
ULONG	ExtractPalette( APTR, ULONG *, UWORD, Tag, ... );
ULONG	RenderA( ULONG *, UWORD, UWORD, UBYTE *, APTR, struct TagItem * );
ULONG	Render( ULONG *, UWORD, UWORD, UBYTE *, APTR, Tag, ... );

void	Planar2ChunkyA( PLANEPTR *, UWORD, UWORD, UWORD, UWORD, UBYTE *, struct TagItem * );
void	Planar2Chunky( PLANEPTR *, UWORD, UWORD, UWORD, UWORD, UBYTE *, Tag, ... );
void	Chunky2RGBA( UBYTE *, UWORD, UWORD, ULONG *, APTR, struct TagItem * );
void	Chunky2RGB( UBYTE *, UWORD, UWORD, ULONG *, APTR, Tag, ... );
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, ... );

APTR	CreateScaleEngineA( UWORD, UWORD, UWORD, UWORD, struct TagItem * );
APTR	CreateScaleEngine( UWORD, UWORD, UWORD, UWORD, Tag, ... );
void	DeleteScaleEngine( APTR );
void	ScaleA( APTR, APTR, APTR, struct TagItem * );
void	Scale( APTR, APTR, APTR, Tag, ... );

void	ConvertChunkyA( UBYTE *, APTR, UWORD, UWORD, UBYTE *, APTR, struct TagItem * );
void	ConvertChunky( UBYTE *, APTR, UWORD, UWORD, UBYTE *, APTR, Tag, ... );
void	CreatePenTableA( UBYTE *, APTR, UWORD, UWORD, APTR, UBYTE *, struct TagItem * );
void	CreatePenTable( UBYTE *, APTR, UWORD, UWORD, APTR, UBYTE *, Tag, ... );

APTR	CreatePaletteA( struct TagItem * );
APTR	CreatePalette( Tag, ... );
void	DeletePalette( APTR );
void	ImportPaletteA( APTR, APTR, UWORD, struct TagItem * );
void	ImportPalette( APTR, APTR, UWORD, Tag, ... );
void	ExportPaletteA( APTR, APTR, struct TagItem * );
void	ExportPalette( APTR, APTR, Tag, ... );
void	FlushPalette( APTR );
ULONG	SortPaletteA( APTR, ULONG, struct TagItem *);
ULONG	SortPalette( APTR, ULONG, Tag, ... );

ULONG	CountRGB( APTR, ULONG );
LONG	BestPen( APTR, ULONG );

ULONG	AddHistogramA( APTR, APTR, struct TagItem *);
ULONG	AddHistogram( APTR, APTR, Tag, ... );

UWORD	ScaleOrdinate( UWORD, UWORD, UWORD );

#endif
