forked from enlightenment/efl
MI: sector list get and create state class
This commit is contained in:
parent
4dff49c026
commit
879e7aee6c
|
@ -8,6 +8,15 @@ enum @beta Efl.Gfx.Frame_Controller_Loop_Hint {
|
|||
pingpong = 2 [[Ping-pong bouncing loop: 1->2->3->2->1->2->3->1]]
|
||||
}
|
||||
|
||||
//Temporary
|
||||
struct @beta Efl.Gfx.Frame_Sector_Data
|
||||
{
|
||||
[[ sector data, name, startframe, endframe.]]
|
||||
name: string;
|
||||
start_frame: int;
|
||||
end_frame: int;
|
||||
}
|
||||
|
||||
interface @beta Efl.Gfx.Frame_Controller
|
||||
{
|
||||
[[Efl frame controller of frame based animated object interface.]]
|
||||
|
@ -117,5 +126,16 @@ interface @beta Efl.Gfx.Frame_Controller
|
|||
endframe: int; [[ The end frame of sector ]]
|
||||
}
|
||||
}
|
||||
//temporary
|
||||
@property sector_list {
|
||||
[[ ]]
|
||||
set {
|
||||
}
|
||||
get {
|
||||
}
|
||||
values {
|
||||
list: list<Efl.Gfx.Frame_Sector_Data>;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -177,6 +177,37 @@ _efl_ui_mi_controller_efl_file_load(Eo *obj, Efl_Ui_Mi_Controller_Data *pd)
|
|||
}
|
||||
_sizing_eval(obj, pd);
|
||||
|
||||
//temporary
|
||||
Eo *vg = efl_key_data_get(pd->anim, "vg_obj");
|
||||
Eina_List *sector_list = efl_gfx_frame_controller_sector_list_get(vg);
|
||||
|
||||
if (sector_list)
|
||||
{
|
||||
Eina_List *l;
|
||||
Efl_Gfx_Frame_Sector_Data *sector;
|
||||
|
||||
const char *start_sector = NULL, *end_sector = NULL;
|
||||
EINA_LIST_FOREACH(sector_list, l, sector)
|
||||
{
|
||||
start_sector = end_sector;
|
||||
end_sector = sector->name;
|
||||
if (start_sector && end_sector)
|
||||
{
|
||||
Eo* state = efl_add(EFL_UI_MI_STATE_CLASS, obj);
|
||||
//efl_ui_mi_state_controller_set(state, controller);
|
||||
efl_key_data_set(state, "controller", obj);
|
||||
efl_ui_mi_state_sector_set(state, start_sector, end_sector);
|
||||
efl_ui_mi_controller_state_add(obj, state);
|
||||
}
|
||||
}
|
||||
|
||||
EINA_LIST_FOREACH(sector_list, l, sector)
|
||||
{
|
||||
free((char*)sector->name);
|
||||
free(sector);
|
||||
}
|
||||
eina_list_free(sector_list);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -706,6 +706,10 @@ _efl_ui_vg_animation_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Vg_Animation_Dat
|
|||
elm_widget_resize_object_set(obj, vg);
|
||||
efl_event_callback_add(obj, EFL_GFX_ENTITY_EVENT_HINTS_CHANGED, _size_hint_event_cb, priv);
|
||||
|
||||
//temporary
|
||||
efl_key_data_set(obj, "vg_obj", vg);
|
||||
//
|
||||
|
||||
priv->vg = vg;
|
||||
priv->playback_speed = 1;
|
||||
priv->frame_duration = 0;
|
||||
|
|
|
@ -988,6 +988,37 @@ Eina_Bool _efl_canvas_vg_object_efl_gfx_frame_controller_sector_get(const Eo *ob
|
|||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
void _efl_canvas_vg_object_efl_gfx_frame_controller_sector_list_set(Eo *obj EINA_UNUSED,
|
||||
Efl_Canvas_Vg_Object_Data *pd,
|
||||
Eina_List *sector_list)
|
||||
{
|
||||
/* ... ? */
|
||||
}
|
||||
|
||||
Eina_List* _efl_canvas_vg_object_efl_gfx_frame_controller_sector_list_get(const Eo *obj EINA_UNUSED,
|
||||
Efl_Canvas_Vg_Object_Data *pd)
|
||||
{
|
||||
if (!pd->vg_entry) return EINA_FALSE;
|
||||
|
||||
Eina_Inarray* markers = evas_cache_vg_anim_sector_list_get(pd->vg_entry);
|
||||
if (!markers) return NULL;
|
||||
|
||||
Eina_List *list = NULL;
|
||||
Vg_File_Anim_Data_Marker *marker;
|
||||
EINA_INARRAY_FOREACH(markers, marker)
|
||||
{
|
||||
if (marker->name)
|
||||
{
|
||||
Efl_Gfx_Frame_Sector_Data *sector = malloc(sizeof(Efl_Gfx_Frame_Sector_Data));
|
||||
sector->name = strdup(marker->name);
|
||||
sector->start_frame = marker->startframe;
|
||||
sector->end_frame = marker->endframe;
|
||||
list = eina_list_append(list, sector);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_canvas_vg_object_efl_gfx_frame_controller_frame_set(Eo *eo_obj,
|
||||
Efl_Canvas_Vg_Object_Data *pd,
|
||||
|
|
|
@ -97,5 +97,7 @@ class @beta Efl.Canvas.Vg.Object extends Efl.Canvas.Object implements Efl.File,
|
|||
Efl.Gfx.Frame_Controller.loop_count { get; }
|
||||
Efl.Gfx.Frame_Controller.frame_duration { get; }
|
||||
Efl.Gfx.Frame_Controller.sector { set; get; }
|
||||
//temporary
|
||||
Efl.Gfx.Frame_Controller.sector_list { set; get; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -153,6 +153,9 @@ Eina_Bool evas_cache_vg_entry_file_save(Vg_Cache_Entry *vg_ent
|
|||
double evas_cache_vg_anim_duration_get(const Vg_Cache_Entry *vg_entry);
|
||||
Eina_Bool evas_cache_vg_anim_sector_set(const Vg_Cache_Entry* vg_entry, const char *name, int startframe, int endframe);
|
||||
Eina_Bool evas_cache_vg_anim_sector_get(const Vg_Cache_Entry* vg_entry, const char *name, int* startframe, int* endframe);
|
||||
//Temporary
|
||||
Eina_Inarray* evas_cache_vg_anim_sector_list_get(const Vg_Cache_Entry* vg_entry);
|
||||
//
|
||||
unsigned int evas_cache_vg_anim_frame_count_get(const Vg_Cache_Entry *vg_entry);
|
||||
Eina_Size2D evas_cache_vg_entry_default_size_get(const Vg_Cache_Entry *vg_entry);
|
||||
void * evas_cache_vg_surface_key_get(Efl_Canvas_Vg_Node *root, int w, int h, int frame_idx);
|
||||
|
|
|
@ -461,6 +461,17 @@ evas_cache_vg_anim_sector_get(const Vg_Cache_Entry* vg_entry, const char *name,
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
//Temporary
|
||||
Eina_Inarray*
|
||||
evas_cache_vg_anim_sector_list_get(const Vg_Cache_Entry* vg_entry)
|
||||
{
|
||||
if (!vg_entry) return EINA_FALSE;
|
||||
if (!vg_entry->vfd->anim_data) return EINA_FALSE;
|
||||
if (!vg_entry->vfd->anim_data->markers) return EINA_FALSE;
|
||||
return vg_entry->vfd->anim_data->markers;
|
||||
}
|
||||
//
|
||||
|
||||
Efl_VG*
|
||||
evas_cache_vg_tree_get(Vg_Cache_Entry *vg_entry, unsigned int frame_num)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue