본문 바로가기

프로그래밍/Tizen

[EFL] Elementary

Elementary는 Evas, Ecore, Edje등을 사용해 Evas 스마트 오브젝트를 구현해 놓은 클래스이다. 이러한 위젯들의 처리와 에니메이션 관련 메쏘드와 Ecore의 메인 루프 관련 메쏘드들로 이루어져 있다. 위젯 외에 기본적인 메쏘드들에 대해 정리한다.


General

ELM_MAIN()

elm_init을 포함하는 매크로

elm_main() 을 호출하므로, 사용자가 int elm_main(int argc, char** argv)을 구현해야 한다.


초기화, 종료

int elm_init( int argc, char **argv);

int elm_shutdown();

void elm_run(); 메인 루프를 시작한다.

void elm_exit();


배경을 포함한 윈도우 생성

Evas_Object *elm_win_util_standard_add( const char *name, const char *title );


ex)

Evas_Object* win=NULL;

elm_policy_set( ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

win = elm_win_util_standard_add("name", "title");

elm_win_autodel_set( win, EINA_TRUE);



오브젝트 설정 메쏘드

elm_object_text_set( Evas_Object *obj, const char *text );

elm_object_style_set( Evas_Object *obj, const char* style );

elm_object_disabled_set( Evas_Object *obj, Eina_Bool disabled );

elm_object_focus_set( Evas_Object *obj, Eina_Bool focused);


오브젝트(elementary object)에 파트 설정 메쏘드

elm_object_part_text_set( Evas_Object *obj, const char* part, const char *text);


컨텐트를 설정한다. 아쉽게도 컨텐트는 특정 오브젝트만 추가하도록 각각의 오브젝트에 정의되어 있다. 

elm_object_part_content_set( Evas_Object *obj, const char* part, Evas_Object *content );


Elm_Object_Item 관련 메쏘드로 내용은 위와 동일

elm_object_item_part_text_set(Elm_Object_Item *item, const char *part, const char *text );

elm_object_item_part_content_set (Elm_Object_Item *item, const char *part, Evas_Objet *content);

elm_object_item_data_set(Elm_Object_Item *item, void *data );


오브젝트 처리

elm_object_name_find( Evas_Object *obj, const char *name, int recurse);

elm_object_disable_set( Evas_Object *obj, Eina_Bool disabled );


이벤트 관련

edje 오브젝트로 signal을 전달한다.

elm_object_signal_emit( Evas_Object *obj, const char *emission, const char *source);


edje 오브젝로부터 emit 된 시그널 콜백 등록

elm_object_signal_callback_add(Evas_Object *obj, 

const char *emission, 

const char *source, 

Edje_Signal_Cb func,

void* data);


입력 이벤트 콜백 등록

elm_object_event_callback_add( Evas_Object *obj, Elm_Event_Cb func, const void *data );




Transit

Elm_Transit *trans;

trans = elm_transit_add();

elm_transit_object_add( trans, Evas_Object * object);

elm_transit_effect_translation_add( trans, 0, 0, 100, 100 );

elm_transit_duration_set( trans, double duration );

elm_transit_repeat_times_set( trans, int repeat );

elm_transit_tween_mode_set( trans, ELM_TRANSIT_TWEEN_MODE_DECELERATE);

elm_transit_objects_final_state_keep_set( trans, Eina_Bool state_keep );

elm_transit_go( trans);


여러개의 transit 객체는 체인으로 연결할 수 있다. 앞의 transit이 go 되어 완료되면 다음 체인 transit이 순차적으로 에니메이션 된다.

elm_transit_chain_transit_add( Elm_Transit *transit, Elm_Transit* chain );



Transit Effect

Transit 객체에 새로운 효과를 추가한다. 에니메이션에 시작되면 호출할 콜백 메쏘드를 지정해 에니메이션을 처리한다. 콜백은 효과객체와 progress 정보가 포함된다.

void elm_transit_effect_add( Elm_Transit * transit,

Elm_Transit_Effect_Transition_Cb transition_cb,

Elm_Transit_Effect* effect,

Elm_Transit_Effect_End_Cb end_cb );


아래 메쏘드들은 Elm_Transit_Effect * 객체를 반환하는 메쏘드들로 해당 effect를 생성하는 메쏘드 들이다. 별도의 콜백이 필요하지 않으면 elm_transit_effect_add() 가 아닌 아래 effect 추가만으로 효가를 부여할 수 있다.

elm_transit_effect_translation_add( Elm_Transit* trans,

Evas_Coord form_dx,

Evas_Coord form_dy,

Evas_Coord to_dx,

Evas_Coord to_dy);


elm_transit_effect_resizing_add( Elm_Transit* trans, 

Evas_Coord form_w, 

Evas_Coord from_h,

Evas_Coord to_w,

Evas_Coord to_h);


elm_transit_effect_rotation_add( Elm_Transit* trans, float from_degree, float to_degree);


elm_transit_effect_wipe_add( Elm_Transit* trans ,

Elm_Transit_Effect_Wipe_Type type,

Elm_Transit_Effect_Wipe_Dir dir );


elm_transit_effect_zoom_add( Elm_Transit* trans, float from_rate, float to_rate );


elm_transit_effect_flip_add( Elm_Transit* trans, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw );

elm_transit_effect_resizable_flip_add( Elm_Transit* trans, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw);

elm_transit_effect_fade_add( Elm_Transit* trans );

elm_transit_effect_blend_add( Elm_Transit* trans );




이미지 에니메이션

Eina_List *images;

Elm_Transit *trans;


images = eina_list_append( images, eina_stringshare_add( "이미지파일" ));

images = eina_list_append( images, eina_stringshare_add( "이미지파일" ));


trans = elm_transit_add();

elm_transit_effect_image_animation_add( trans, images );


elm_transit_go( trans );

'프로그래밍 > Tizen' 카테고리의 다른 글

[Tizen] 패키징 및 signing  (0) 2014.07.31
[EFL] Ecore_Exe 프로세스간 통신  (0) 2014.07.19
[EFL] Elementary 위젯  (0) 2014.07.17
[EFL] EDC 스크립트  (0) 2014.07.17
[EFL] Evas 오브젝트  (0) 2014.07.16
[EFL] HTTP 연결  (0) 2014.07.13
[EFL] Ecore 이벤트 핸들러  (0) 2014.07.13
[EFL] 기본 윈도우  (0) 2014.07.13