efl/legacy/evas/src/modules/engines/buffer/evas_engine.h

92 lines
2.9 KiB
C

#ifndef EVAS_ENGINE_H
#define EVAS_ENGINE_H
#include "evas_common.h"
/* this thing is for eina_log */
extern int _evas_engine_buffer_log_dom ;
#ifdef ERR
# undef ERR
#endif
#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_buffer_log_dom, __VA_ARGS__)
#ifdef DBG
# undef DBG
#endif
#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_buffer_log_dom, __VA_ARGS__)
#ifdef INF
# undef INF
#endif
#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_buffer_log_dom, __VA_ARGS__)
#ifdef WRN
# undef WRN
#endif
#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_buffer_log_dom, __VA_ARGS__)
#ifdef CRIT
# undef CRIT
#endif
#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_buffer_log_dom, __VA_ARGS__)
typedef struct _Outbuf Outbuf;
typedef enum _Outbuf_Depth Outbuf_Depth;
enum _Outbuf_Depth
{
OUTBUF_DEPTH_NONE,
OUTBUF_DEPTH_ARGB_32BPP_8888_8888,
OUTBUF_DEPTH_BGRA_32BPP_8888_8888,
OUTBUF_DEPTH_RGB_32BPP_888_8888,
OUTBUF_DEPTH_BGR_32BPP_888_8888,
OUTBUF_DEPTH_RGB_24BPP_888_888,
OUTBUF_DEPTH_BGR_24BPP_888_888,
OUTBUF_DEPTH_LAST
};
struct _Outbuf
{
int w, h;
Outbuf_Depth depth;
void *dest;
unsigned int dest_row_bytes;
void *switch_data;
int alpha_level;
DATA32 color_key;
char use_color_key : 1;
char first_frame : 1;
struct {
void * (*new_update_region) (int x, int y, int w, int h, int *row_bytes);
void (*free_update_region) (int x, int y, int w, int h, void *data);
void * (*switch_buffer) (void *data, void *dest_buffer);
} func;
struct {
RGBA_Image *back_buf;
} priv;
};
/****/
void evas_buffer_outbuf_buf_init (void);
void evas_buffer_outbuf_buf_free (Outbuf *buf);
Outbuf *evas_buffer_outbuf_buf_setup_fb (int w, int h, Outbuf_Depth depth, void *dest, int dest_row_bytes, int use_color_key, DATA32 color_key, int alpha_level,
void * (*new_update_region) (int x, int y, int w, int h, int *row_bytes),
void (*free_update_region) (int x, int y, int w, int h, void *data),
void * (*switch_buffer)(void *switch_data, void *dest),
void *switch_data);
RGBA_Image *evas_buffer_outbuf_buf_new_region_for_update (Outbuf *buf, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);
void evas_buffer_outbuf_buf_free_region_for_update (Outbuf *buf, RGBA_Image *update);
void evas_buffer_outbuf_buf_push_updated_region (Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h);
void evas_buffer_outbuf_buf_switch_buffer (Outbuf *buf);
#endif