#ifndef _LIBPUI_INTERNAL_H_
#define _LIBPUI_INTERNAL_H_
-#include "PUI.h"
-#include "PUI_backend.h"
+#define EFL_BETA_API_SUPPORT
+
+#include <stdint.h>
+#include <Ecore_Wl2.h>
+#include <Eina.h>
+#include <wayland-tbm-client.h>
+#include <tbm_surface_internal.h>
+#include "PUI_common.h"
#ifndef PATH_MAX
#define PATH_MAX 4096
#endif
-enum {
- PUI_INT_ERROR_NONE,
- PUI_INT_ERROR_INVALID_HANDLE,
- PUI_INT_ERROR_INVALID_SURFACE,
- PUI_INT_ERROR_INVALID_BUFFER,
- PUI_INT_ERROR_ID_NOT_SUPPORTED,
- PUI_INT_ERROR_INVALID_BACKEND_MGR,
- PUI_NIT_ERROR_NO__ANI_AVAILABLE,
- PUI_INT_ERROR_BACKEND_FUNC_ERROR,
-} pui_int_error;
-
-typedef struct _PUI_Event_Animation_Status
-{
- unsigned int win;
- pui_ani_status status;
-};
-
struct _pui_ani_control_buffer
{
unsigned char *ptr;
struct _pui_ani
{
pui_h pui_handle;
- pui_ani_mgr *ani_mgr;
+ pui_ani_t *ani;
Eina_Array *ecore_event_hdls;
- Ecore_Wl2_Frame_Cb_Handle *frame_cb;
+ Ecore_Wl2_Frame_Cb_Handle *frame_done_cb;
pui_id id;
- pui_ani_cmd cmd;
- pui_ani_opt opt;
- pui_ani_status status;
};
-struct _pui_ani_mgr
+struct _pui_ani_t
{
pui_ani_h ani_h;
pui_id id;
+ pui_ani_cmd cmd;
+ int repeat;
pui_ani_status status;
- pui_ani_control_buffer *buffer
+ int serial;
+ pui_ani_control_buffer *buffer;
Eina_Bool (*frame_cb)(void *data);
+ pui_bool (*backend_frame_cb)(void *data, int serial);
void *frame_cb_data;
- double expire;
+ double frame_interval;
Ecore_Timer *frame_cb_timer;
- pui_backend_ani_func *ani_func;
pui_backend_ani_data *ani_data;
};
#endif
pui_ani_control_buffer *
-get_buffer(pui_ani_h handle);
+pui_ani_get_buffer(pui_ani_h ani_h);
pui_int_error
-set_buffer(pui_ani_h handle, pui_ani_control_buffer *buffer);
+pui_ani_set_buffer(pui_ani_h ani_h, pui_ani_control_buffer *buffer);
pui_int_error
-pui_ani_update(pui_ani_h handle);
+pui_ani_update(pui_ani_h ani_h);
+
+void
+pui_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial), double frame_interval);
+
+void
+pui_ani_remove_frame_cb(pui_ani_t *ani);
+
+void
+pui_ani_status_update(pui_ani_t *ani, pui_ani_status status);
+
+pui_ani_status
+pui_ani_status_get(pui_ani_t *ani);
+
+pui_backend_ani_data *
+pui_ani_get_ani_data(pui_ani_t *ani);
#ifdef __cplusplus
}