#ifndef _DIRECTFB_OUT_H_
#define _DIRECTFB_OUT_H_
typedef struct __DirectFBVidCtx DirectFBVidCtx;
typedef enum {
WINDOW_X11 = 1,
WINDOW_SDL = 1 << 1,
} WINDOW_MODE;
typedef enum {
FLIP_SWAP = 1,
FLIP_WAITFORSYNC = 1 << 1,
FLIP_WAIT = 1 << 2,
FLIP_ONSYNC = 1 << 3,
} FLIP_MODE;
#ifndef Bool
#define Bool u32
#endif
u32 DirectFBVid_TranslatePixelFormatToGPAC(u32 dfbpf);
u32 DirectFBVid_TranslatePixelFormatFromGPAC(u32 gpacpf);
size_t DirectFBVid_GetCtxSizeOf(void);
void DirectFBVid_InitAndCreateSurface(DirectFBVidCtx *ctx, WINDOW_MODE window_mode);
void DirectFBVid_CtxSetFlipMode(DirectFBVidCtx *ctx, FLIP_MODE flip_mode);
void DirectFBVid_CtxPrimaryProcessGetAccelerationMask(DirectFBVidCtx *ctx);
u32 DirectFBVid_ProcessMessageQueueWrapper(DirectFBVidCtx *ctx, u8 *type, u32 *flags, u32 *key_code, s32 *x, s32 *y, u32 *button);
void DirectFBVid_DrawHLineWrapper(DirectFBVidCtx *ctx, u32 x, u32 y, u32 length, u8 r, u8 g, u8 b);
void DirectFBVid_DrawHLineAlphaWrapper(DirectFBVidCtx *ctx, u32 x, u32 y, u32 length, u8 r, u8 g, u8 b, u8 alpha);
void DirectFBVid_DrawRectangleWrapper(DirectFBVidCtx *ctx, u32 x, u32 y, u32 width, u32 height, u8 r, u8 g, u8 b, u8 a);
u32 DirectFBVid_CtxPrimaryLock(DirectFBVidCtx *ctx, void **buf, u32 *pitch);
void DirectFBVid_CtxPrimaryUnlock(DirectFBVidCtx *ctx);
u32 DirectFBVid_CtxGetWidth(DirectFBVidCtx *ctx);
u32 DirectFBVid_CtxGetHeight(DirectFBVidCtx *ctx);
void *DirectFBVid_CtxGetPrimary(DirectFBVidCtx *ctx);
u32 DirectFBVid_CtxGetPixelFormat(DirectFBVidCtx *ctx);
Bool DirectFBVid_CtxIsHwMemory(DirectFBVidCtx *ctx);
u32 DirectFBVid_CtxPrimaryFlip(DirectFBVidCtx *ctx);
void DirectFBVid_CtxSetDisableDisplay(DirectFBVidCtx *ctx, Bool val);
Bool DirectFBVid_CtxGetDisableDisplay(DirectFBVidCtx *ctx);
void DirectFBVid_CtxSetDisableAcceleration(DirectFBVidCtx *ctx, Bool val);
Bool DirectFBVid_CtxGetDisableAcceleration(DirectFBVidCtx *ctx);
void DirectFBVid_CtxSetIsInit(DirectFBVidCtx *ctx, Bool val);
u32 DirectFBVid_ShutdownWrapper(DirectFBVidCtx *ctx);
u32 DirectFBVid_BlitWrapper(DirectFBVidCtx *ctx, u32 video_src_width, u32 video_src_height, u32 video_src_pixel_format, char *video_src_buffer, s32 video_src_pitch_y, u32 src_wnd_x, u32 src_wnd_y, u32 src_wnd_w, u32 src_wnd_h, u32 dst_wnd_x, u32 dst_wnd_y, u32 dst_wnd_w, u32 dst_wnd_h, u32 overlay_type);
#endif