#ifndef DEFINES_WARP3D_PROTOS_H
#define DEFINES_WARP3D_PROTOS_H

/*
    *** Automatically generated from 'Warp3D.conf'. Edits will be lost. ***
    Copyright © 1995-2008, The AROS Development Team. All rights reserved.
*/

/*
    Desc: Defines for Warp3D
*/

#include <aros/libcall.h>
#include <exec/types.h>
#include <aros/preprocessor/variadic/cast2iptr.hpp>

#define W3D_CreateContext ((W3D_Context    * (*)(ULONG *error, struct TagItem *CCTags))__AROS_GETVECADDR(Warp3DBase,5))
#define W3D_CreateContextTags ((W3D_Context    * (*)(ULONG *error, Tag tag1, ...))__AROS_GETVECADDR(Warp3DBase,6))
#define W3D_DestroyContext ((void (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,7))
#define W3D_GetState ((ULONG (*)(W3D_Context *context, ULONG state))__AROS_GETVECADDR(Warp3DBase,8))
#define W3D_SetState ((ULONG (*)(W3D_Context *context, ULONG state, ULONG action))__AROS_GETVECADDR(Warp3DBase,9))
#define W3D_Hint ((ULONG (*)(W3D_Context *context, ULONG mode, ULONG quality))__AROS_GETVECADDR(Warp3DBase,10))
#define W3D_CheckDriver ((ULONG (*)(void))__AROS_GETVECADDR(Warp3DBase,11))
#define W3D_LockHardware ((ULONG (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,12))
#define W3D_UnLockHardware ((void (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,13))
#define W3D_WaitIdle ((void (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,14))
#define W3D_CheckIdle ((ULONG (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,15))
#define W3D_Query ((ULONG (*)(W3D_Context *context, ULONG query, ULONG destfmt))__AROS_GETVECADDR(Warp3DBase,16))
#define W3D_GetTexFmtInfo ((ULONG (*)(W3D_Context *context, ULONG texfmt, ULONG destfmt))__AROS_GETVECADDR(Warp3DBase,17))
#define W3D_GetDriverState ((ULONG (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,18))
#define W3D_GetDestFmt ((ULONG (*)(void))__AROS_GETVECADDR(Warp3DBase,19))
#define W3D_GetDrivers ((W3D_Driver ** (*)(void))__AROS_GETVECADDR(Warp3DBase,20))
#define W3D_QueryDriver ((ULONG (*)(W3D_Driver* driver, ULONG query, ULONG destfmt))__AROS_GETVECADDR(Warp3DBase,21))
#define W3D_GetDriverTexFmtInfo ((ULONG (*)(W3D_Driver* driver, ULONG query, ULONG destfmt))__AROS_GETVECADDR(Warp3DBase,22))
#define W3D_RequestMode ((ULONG (*)(struct TagItem *taglist))__AROS_GETVECADDR(Warp3DBase,23))
#define W3D_RequestModeTags ((ULONG (*)(Tag tag1, ...))__AROS_GETVECADDR(Warp3DBase,24))
#define W3D_TestMode ((W3D_Driver * (*)(ULONG ModeID))__AROS_GETVECADDR(Warp3DBase,25))
#define W3D_AllocTexObj ((W3D_Texture    * (*)(W3D_Context *context, ULONG *error, struct TagItem *ATOTags))__AROS_GETVECADDR(Warp3DBase,26))
#define W3D_AllocTexObjTags ((W3D_Texture    * (*)(W3D_Context *context, ULONG *error, Tag tag1, ...))__AROS_GETVECADDR(Warp3DBase,27))
#define W3D_FreeTexObj ((void (*)(W3D_Context *context, W3D_Texture *texture))__AROS_GETVECADDR(Warp3DBase,28))
#define W3D_ReleaseTexture ((void (*)(W3D_Context *context, W3D_Texture *texture))__AROS_GETVECADDR(Warp3DBase,29))
#define W3D_FlushTextures ((void (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,30))
#define W3D_SetFilter ((ULONG (*)(W3D_Context *context, W3D_Texture *texture, ULONG MinFilter, ULONG MagFilter))__AROS_GETVECADDR(Warp3DBase,31))
#define W3D_SetTexEnv ((ULONG (*)(W3D_Context *context, W3D_Texture *texture, ULONG envparam, W3D_Color *envcolor))__AROS_GETVECADDR(Warp3DBase,32))
#define W3D_SetWrapMode ((ULONG (*)(W3D_Context *context, W3D_Texture *texture, ULONG s_mode, ULONG t_mode, W3D_Color *bordercolor))__AROS_GETVECADDR(Warp3DBase,33))
#define W3D_UpdateTexImage ((ULONG (*)(W3D_Context *context, W3D_Texture *texture, void *teximage, int level, ULONG *palette))__AROS_GETVECADDR(Warp3DBase,34))
#define W3D_UpdateTexSubImage ((ULONG (*)(W3D_Context *context, W3D_Texture *texture, void *teximage, ULONG level, ULONG *palette, W3D_Scissor* scissor, ULONG srcbpr))__AROS_GETVECADDR(Warp3DBase,35))
#define W3D_UploadTexture ((ULONG (*)(W3D_Context *context, W3D_Texture *texture))__AROS_GETVECADDR(Warp3DBase,36))
#define W3D_FreeAllTexObj ((ULONG (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,37))
#define W3D_SetChromaTestBounds ((ULONG (*)(W3D_Context *context, W3D_Texture *texture, ULONG rgba_lower, ULONG rgba_upper, ULONG mode))__AROS_GETVECADDR(Warp3DBase,38))
#define W3D_DrawLine ((ULONG (*)(W3D_Context *context, W3D_Line *line))__AROS_GETVECADDR(Warp3DBase,39))
#define W3D_DrawPoint ((ULONG (*)(W3D_Context *context, W3D_Point *point))__AROS_GETVECADDR(Warp3DBase,40))
#define W3D_DrawTriangle ((ULONG (*)(W3D_Context *context, W3D_Triangle *triangle))__AROS_GETVECADDR(Warp3DBase,41))
#define W3D_DrawTriFan ((ULONG (*)(W3D_Context *context, W3D_Triangles *triangles))__AROS_GETVECADDR(Warp3DBase,42))
#define W3D_DrawTriStrip ((ULONG (*)(W3D_Context *context, W3D_Triangles *triangles))__AROS_GETVECADDR(Warp3DBase,43))
#define W3D_Flush ((ULONG (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,44))
#define W3D_DrawLineStrip ((ULONG (*)(W3D_Context *context, W3D_Lines *lines))__AROS_GETVECADDR(Warp3DBase,45))
#define W3D_DrawLineLoop ((ULONG (*)(W3D_Context *context, W3D_Lines *lines))__AROS_GETVECADDR(Warp3DBase,46))
#define W3D_ClearDrawRegion ((ULONG (*)(W3D_Context *context, ULONG color))__AROS_GETVECADDR(Warp3DBase,47))
#define W3D_SetAlphaMode ((ULONG (*)(W3D_Context *context, ULONG mode, W3D_Float *refval))__AROS_GETVECADDR(Warp3DBase,48))
#define W3D_SetBlendMode ((ULONG (*)(W3D_Context *context, ULONG srcfunc, ULONG dstfunc))__AROS_GETVECADDR(Warp3DBase,49))
#define W3D_SetDrawRegion ((ULONG (*)(W3D_Context *context, struct BitMap *bm, int yoffset, W3D_Scissor *scissor))__AROS_GETVECADDR(Warp3DBase,50))
#define W3D_SetDrawRegionWBM ((ULONG (*)(W3D_Context *context, W3D_Bitmap *bm, W3D_Scissor *scissor))__AROS_GETVECADDR(Warp3DBase,51))
#define W3D_SetFogParams ((ULONG (*)(W3D_Context *context, W3D_Fog *fogparams, ULONG fogmode))__AROS_GETVECADDR(Warp3DBase,52))
#define W3D_SetLogicOp ((ULONG (*)(W3D_Context *context, ULONG operation))__AROS_GETVECADDR(Warp3DBase,53))
#define W3D_SetColorMask ((ULONG (*)(W3D_Context *context, W3D_Bool red, W3D_Bool green, W3D_Bool blue, W3D_Bool alpha))__AROS_GETVECADDR(Warp3DBase,54))
#define W3D_SetPenMask ((ULONG (*)(W3D_Context *context, ULONG pen))__AROS_GETVECADDR(Warp3DBase,55))
#define W3D_SetCurrentColor ((ULONG (*)(W3D_Context *context, W3D_Color *color))__AROS_GETVECADDR(Warp3DBase,56))
#define W3D_SetCurrentPen ((ULONG (*)(W3D_Context *context, ULONG pen))__AROS_GETVECADDR(Warp3DBase,57))
#define W3D_SetScissor ((void (*)(W3D_Context *context, W3D_Scissor *scissor))__AROS_GETVECADDR(Warp3DBase,58))
#define W3D_FlushFrame ((void (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,59))
#define W3D_AllocZBuffer ((ULONG (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,60))
#define W3D_FreeZBuffer ((ULONG (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,61))
#define W3D_ClearZBuffer ((ULONG (*)(W3D_Context *context, W3D_Double *clearvalue))__AROS_GETVECADDR(Warp3DBase,62))
#define W3D_ReadZPixel ((ULONG (*)(W3D_Context *context, ULONG x, ULONG y, W3D_Double *z))__AROS_GETVECADDR(Warp3DBase,63))
#define W3D_ReadZSpan ((ULONG (*)(W3D_Context *context, ULONG x, ULONG y, ULONG n, W3D_Double *z))__AROS_GETVECADDR(Warp3DBase,64))
#define W3D_SetZCompareMode ((ULONG (*)(W3D_Context *context, ULONG mode))__AROS_GETVECADDR(Warp3DBase,65))
#define W3D_WriteZPixel ((void (*)(W3D_Context *context, ULONG x, ULONG y, W3D_Double *z))__AROS_GETVECADDR(Warp3DBase,66))
#define W3D_WriteZSpan ((void (*)(W3D_Context *context, ULONG x, ULONG y, ULONG n, W3D_Double *z, UBYTE *mask))__AROS_GETVECADDR(Warp3DBase,67))
#define W3D_AllocStencilBuffer ((ULONG (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,68))
#define W3D_ClearStencilBuffer ((ULONG (*)(W3D_Context *context, ULONG *clearvalue))__AROS_GETVECADDR(Warp3DBase,69))
#define W3D_FillStencilBuffer ((ULONG (*)(W3D_Context *context, ULONG x, ULONG y, ULONG width, ULONG height, ULONG depth, void *data))__AROS_GETVECADDR(Warp3DBase,70))
#define W3D_FreeStencilBuffer ((ULONG (*)(W3D_Context *context))__AROS_GETVECADDR(Warp3DBase,71))
#define W3D_ReadStencilPixel ((ULONG (*)(W3D_Context *context, ULONG x, ULONG y, ULONG *st))__AROS_GETVECADDR(Warp3DBase,72))
#define W3D_ReadStencilSpan ((ULONG (*)(W3D_Context *context, ULONG x, ULONG y, ULONG n, ULONG *st))__AROS_GETVECADDR(Warp3DBase,73))
#define W3D_SetStencilFunc ((ULONG (*)(W3D_Context *context, ULONG func, ULONG refvalue, ULONG mask))__AROS_GETVECADDR(Warp3DBase,74))
#define W3D_SetStencilOp ((ULONG (*)(W3D_Context *context, ULONG sfail, ULONG dpfail, ULONG dppass))__AROS_GETVECADDR(Warp3DBase,75))
#define W3D_SetWriteMask ((ULONG (*)(W3D_Context *context, ULONG mask))__AROS_GETVECADDR(Warp3DBase,76))
#define W3D_WriteStencilPixel ((ULONG (*)(W3D_Context *context, ULONG x, ULONG y, ULONG st))__AROS_GETVECADDR(Warp3DBase,77))
#define W3D_WriteStencilSpan ((ULONG (*)(W3D_Context *context, ULONG x, ULONG y, ULONG n, ULONG *st, UBYTE *mask))__AROS_GETVECADDR(Warp3DBase,78))
#define W3D_DrawTriangleV ((ULONG (*)(W3D_Context *context, W3D_TriangleV *triangle))__AROS_GETVECADDR(Warp3DBase,79))
#define W3D_DrawTriFanV ((ULONG (*)(W3D_Context *context, W3D_TrianglesV *triangles))__AROS_GETVECADDR(Warp3DBase,80))
#define W3D_DrawTriStripV ((ULONG (*)(W3D_Context *context, W3D_TrianglesV *triangles))__AROS_GETVECADDR(Warp3DBase,81))
#define W3D_GetScreenmodeList ((W3D_ScreenMode * (*)(void))__AROS_GETVECADDR(Warp3DBase,82))
#define W3D_FreeScreenmodeList ((void (*)(W3D_ScreenMode *list))__AROS_GETVECADDR(Warp3DBase,83))
#define W3D_BestModeID ((ULONG (*)(struct TagItem *tags))__AROS_GETVECADDR(Warp3DBase,84))
#define W3D_BestModeIDTags ((ULONG (*)(Tag tag1, ...))__AROS_GETVECADDR(Warp3DBase,85))
#define W3D_VertexPointer ((ULONG (*)(W3D_Context* context, void *pointer, int stride, ULONG mode, ULONG flags))__AROS_GETVECADDR(Warp3DBase,86))
#define W3D_TexCoordPointer ((ULONG (*)(W3D_Context* context, void *pointer, int stride, int unit, int off_v, int off_w, ULONG flags))__AROS_GETVECADDR(Warp3DBase,87))
#define W3D_ColorPointer ((ULONG (*)(W3D_Context* context, void *pointer, int stride, ULONG format, ULONG mode, ULONG flags))__AROS_GETVECADDR(Warp3DBase,88))
#define W3D_BindTexture ((ULONG (*)(W3D_Context* context, ULONG tmu, W3D_Texture *texture))__AROS_GETVECADDR(Warp3DBase,89))
#define W3D_DrawArray ((ULONG (*)(W3D_Context* context, ULONG primitive, ULONG base, ULONG count))__AROS_GETVECADDR(Warp3DBase,90))
#define W3D_DrawElements ((ULONG (*)(W3D_Context* context, ULONG primitive, ULONG type, ULONG count, void *indices))__AROS_GETVECADDR(Warp3DBase,91))
#define W3D_SetFrontFace ((void (*)(W3D_Context* context, ULONG direction))__AROS_GETVECADDR(Warp3DBase,92))
#define W3D_Settings ((void (*)(void))__AROS_GETVECADDR(Warp3DBase,93))

#endif /* DEFINES_WARP3D_PROTOS_H*/
