#ifndef GRAFFITI_RENDER_H
#define GRAFFITI_RENDER_H

#ifndef EXEC_TYPES_H
#   include <exec/types.h>
#endif
#ifndef GRAFFITI_INTERN_H
#   include "graffiti_intern.h"
#endif

typedef UBYTE (*GetPixelCBType)(struct GraffitiHandle *, WORD, WORD);
typedef void (*SetPixelCBType)(struct GraffitiHandle *, WORD, WORD);
typedef void (*SetPixelColorCBType)(struct GraffitiHandle *, WORD, WORD, UBYTE);
typedef void (*DrawPixelCBType)(struct GraffitiHandle *, WORD, WORD, struct GraffitiHookData *);
typedef void (*SetPixel3DCBType)(struct GraffitiHandle *, WORD, WORD, WORD);
typedef void (*SetPixel3DColorCBType)(struct GraffitiHandle *, WORD, WORD, WORD, UBYTE);
typedef void (*DrawPixel3DCBType)(struct GraffitiHandle *, WORD, WORD, WORD, struct GraffitiHookData *);

extern void Graffiti_SetPixel_1 (struct GraffitiData * gd, WORD x, WORD y);
extern void Graffiti_SetPixel_2 (struct GraffitiData * gd, WORD x, WORD y);
extern void Graffiti_SetPixel_4 (struct GraffitiData * gd, WORD x, WORD y);
extern void Graffiti_SetPixelColor_1 (struct GraffitiData * gd, WORD x, WORD y, UBYTE col);
extern void Graffiti_SetPixelColor_2 (struct GraffitiData * gd, WORD x, WORD y, UBYTE col);
extern void Graffiti_SetPixelColor_4 (struct GraffitiData * gd, WORD x, WORD y, UBYTE col);
extern void Graffiti_DrawPixel_x (struct GraffitiData * gd, WORD x, WORD y,
    struct GraffitiHookData *);
extern UBYTE Graffiti_GetPixel_1 (struct GraffitiData * gd, WORD x, WORD y);
extern UBYTE Graffiti_GetPixel_2 (struct GraffitiData * gd, WORD x, WORD y);
extern UBYTE Graffiti_GetPixel_4 (struct GraffitiData * gd, WORD x, WORD y);
extern void Graffiti_DrawLine_x (struct GraffitiData * gd, WORD x1, WORD y1,
    WORD x2, WORD y2);
extern void Graffiti_SetPixel3D_1 (struct GraffitiData * gd, WORD x, WORD y, WORD z);
extern void Graffiti_SetPixel3D_2 (struct GraffitiData * gd, WORD x, WORD y, WORD z);
extern void Graffiti_SetPixel3D_4 (struct GraffitiData * gd, WORD x, WORD y, WORD z);
extern void Graffiti_SetPixel3DColor_1 (struct GraffitiData * gd, WORD x, WORD y, WORD z, UBYTE col);
extern void Graffiti_SetPixel3DColor_2 (struct GraffitiData * gd, WORD x, WORD y, WORD z, UBYTE col);
extern void Graffiti_SetPixel3DColor_4 (struct GraffitiData * gd, WORD x, WORD y, WORD z, UBYTE col);
extern void Graffiti_DrawPixel3D_x (struct GraffitiData * gd, WORD x, WORD y, WORD z,
    struct GraffitiHookData *);

#endif /* GRAFFITI_RENDER_H */
