천재태지의 세상 돌려보기

seoz.egloos.com

- About Me... - Enlightenment, EFL - 타이젠 Tizen



[EFL] elementary란? ├ Enlightenment, EFL

[ EFL 게시물 목차 : http://seoz.egloos.com/3458699 ]



안녕하세요? 천재태지 서주영입니다.
이번에는 EFL의 라이브러리 중 하나인 elementary에 대해서 설명하겠습니다.

elementary[1][2]는 EFL에서 제공하는 위젯(widget set) 라이브러리입니다. 흔히 어플리케이션을 제작할 때 많이 사용되는 기능을 모아 button, check, clock, entry, genlist, icon, label, map, radio 등의 위젯을 구현해놓은 라이브러리입니다.

EFL로 어플리케이션을 제작할 때는 보통 elementary를 사용합니다. elementary를 사용하지 않고 하위 레벨인 evas나 edje로도 어플리케이션을 제작할 수 있지만 그러면 삶이 고달파지게 됩니다. (-_-) 물론 elementary는 위젯 뿐만 아니라 어플리케이션에서 유용하게 사용할 수 있는 편의 기능(윈도우 처리, 메인 루프 실행 등)도 제공하고 있습니다.

< 그림 1. Elementary에서 제공하는 위젯 중 일부 >

1. 특징

elementary는 처음부터 모바일 터치 스크린을 염두에 두고 개발되었습니다. 그래서 터치만으로도 모든 위젯을 컨트롤할 수 있습니다. 물론 데스크탑도 무리없이 지원합니다.

그래서 elementary는 핑거 사이즈(finger-size)라는 개념을 가지고 있습니다. 손가락으로 터치할 수 있는 최소 크기를 핑거 사이즈라고 하는데, 모든 위젯의 터치가 되는 부분의 크기는 이 핑거 사이즈 이상이 되어야 합니다. 그러므로 핑거 사이즈를 설정하는 것만으로도 모든 위젯의 터치가 되는 영역의 크기를 쉽게 변경할 수 있습니다. 코드 한 줄 바꾸지 않고 말이죠 :)

그리고 elementary는 스케일러블(scalable)합니다. 코드 한 줄 변경하지 않고도 스케일(scale) 설정값을 변경함으로써 다양한 해상도를 지원할 수 있습니다.

< 그림 2. 스케일 값 및 핑거사이즈 설정 화면 >

또한, e17 처럼 테마를 쉽게 바꿀 수 있습니다. 흔히 themeable하다고 합니다. 테마를 바꾸는 것만으로 모든 위젯의 모습와 동작(look and feel)을 바꿀 수 있습니다. 이를 위해 내부적으로 EFL의 edje 라이브러리를 사용합니다. 그러므로 edje의 강력한 기능을 elementary가 고스란히 물려받고 있습니다.

< 그림 3. 테마 설정 화면 >

그리고 다양한 렌더링 엔진을 지원합니다. X11, FrameBuffer, Wayland 등을 지원하며 X11에서는 Software, XRenderer, OpenGL 등을 지원합니다.

< 그림 4. 렌더링 엔진 설정 화면 >

그 외에도 elementary가 제공하는 기능은 많지만 한번에 다 소개하면 끝이 없기 때문에 차차 하나씩 소개해드리겠습니다.

2. 다이어그램

다음은 EFL을 소개할 때 흔히 사용하는 다이어그램입니다.


그림이 실제 코드와 완벽하게 들어맞지는 않지만, 주로 EFL을 처음 접하는 분들을 위해 아주 추상적으로 기술되어 있습니다. 여기서 우리가 눈여겨 봐야 할 것은, application을 제외하면 EFL에서는 elementary가 가장 상위 레벨이라는 사실입니다. evas, ecore, edje 등은 하위 레벨입니다.
즉, elementary는 하위 레벨 라이브러리를 이용하여 사용자에게 편의를 주는 라이브러리입니다. 그렇기 때문에 EFL로 어플리케이션을 작성할 때 대부분 elementary를 사용하게 됩니다.

3. 구성요소

Elementary를 구성하고 있는 요소는 크게 기반 요소(infrastructure), 위젯(widget), 컨테이너(containers) 3개로 나눕니다.

- 기반 요소(infrastructure)[3] : elementary는 주로 위젯으로 구성되어 있으나, 조금 더 편리하게 위젯을 사용할 수 있도록 기반 기능을 제공합니다. 일종의 편의 기능이라고 볼 수도 있는데요, 캐시, 커서, 디버그, 핑거, 포커스, 미러링, 스타일, 테마 등이 있습니다.
- 위젯(widget)[4] : elementary의 핵심 요소인 위젯입니다. actionslider, bg, bubble, button, calendar, ... 등 약 60여개에 이릅니다.
- 컨테이너(containers)[5] : 다른 위젯을 담는 요소로서 주로 눈에 보이지 않는 요소입니다. box, conformant, grid, layout, panes, scroller, table 등이 있습니다.

그런데, genlist나 gengrid는 보는 사람에 따라서 위젯 혹은 컨테이너로 볼 수 있습니다. 현재 문서상에는 컨테이너라고 되어 있지만, EFL의 창시자인 칼슨 하이츨러는 genlist와 gengrid는 컨테이너가 아니라 위젯이라고 보고 있습니다.

자, 이렇게 간단히 elementary에 대해서 알아봤습니다. 사실 elementary에 대해서는 할 말이 너무 많아서 한번에 설명을 하기에는 무리가 있습니다. 앞으로 오랫동안 elementary에 대해서 설명을 드리겠습니다.
다음에는 실제로 elementary를 이용하여 어플리케이션을 작성하는 법에 대해서 설명하겠습니다.

감사합니다.


[ EFL 게시물 목차 : http://seoz.egloos.com/3458699 ]




핑백

  • EFL 한국 사용자 모임 : EFL 한국 사용자 모임 2012-04-15 00:12:42 #

    ... L 어플리케이션 개발] 첫번째 예제 [ecore] ecore_timer 사용 시 흔히 하기 쉬운 실수 및 올바른 사용법ecore main loop의 이해 [elementary] elementary란?elementary widget focus 정책 변경 (mouse down -&gt; clicked)[EFL] elementary 라이브러리에서 els, elc, elm, ... more

  • 천재태지의 세상 돌려보기 : [EFL] elementary로 어플리케이션 작성하기 (1) 윈도우 만들기 2012-06-08 01:31:29 #

    ... [1]</a>"을 참고 하시기 바랍니다.)참고로 예제 소스코드는 EFL의 코딩 컨벤션[2]에 따라서 코드를 작성하도록 하겠습니다. EFL의 코딩 컨벤션은 다른 프로그래밍을 할 때와 조금 다르기 때문에 한번쯤은 눈에 익혀야 합니다. 우선, 제가 만든 예제 코드를 빌드/실행 하시려면 EFL 소스코드를 다운[3]받아서 빌드 및 설치[4]를 먼저 하셔야 합니다.미리 [3], [4]번 링크에 있는 방법대로 하시기 바랍니다. 자, 그럼 첫번째 강좌이기 때문에 ... more

  • 천재태지의 세상 돌려보기 : [EFL] Elementary 기본 테마 Dark로 변경 (2013.10.17) 2013-10-18 01:38:55 #

    ... Elementary[2]</a> 라이브러리의 기본 테마가 오늘(2013.10.17) Black&amp;White에서 Dark로 변경되었습니다. (관련 커밋 [3]) Black&amp;White는 Elementary 초창기부터 사용하던 테마로 오랫동안 Elementary의 기본 테마로 사용되었습니다. Dark 테마는 올해 2월에 개발을 시작해 10월에서야 드디어 완성이 되었는데요, 틈나는 대로 개발했기 때문에 개발 속도는 상당히 느렸습니다. 칼슨 ... more

덧글

  • 2012/03/21 08:49 # 답글 비공개

    비공개 덧글입니다.
  • 천재태지서주영 2012/03/21 10:47 #

    와~~ 이쪽으로 관심이 많은가 보구나 ^^
    일단 EFL이 주목받고 있는 이유는 '성능' 때문이라 GTK+나 QT는 비교가 안돼.
    편리성은 어떤 관점에서 말하느냐에 따라 다른데, 일단 익숙해지면 다양한 이펙트나 성능이 좋은 어플리케이션 작성 등은 참 좋아. 그런데 EFL이 오픈소스 치고는 꽤 오래된 편인데도 사용자가 많지 않아서 초기 진입 장벽이 높은 편이야. 제대로 된 튜토리얼도 없고, 뭐 제대로 홍보를 하는것도 아니고, 제대로 된 GUI Builder도 없는게 문제야.
    하지만 성능이 좋다보니 점점 많은 사람들이 사용하다보면 편의를 위한 도구나 좋은 문서가 늘어나면 탑레벨로 떠오를 수 있을거라 생각해.
    안드로이드나 iOS도 사람들이 별로 안 쓰던 베타 버전에서는 지금과 레벨이 많이 달랐을거라고 생각하거든. 그래도 계속 밀고 나가니까 사람들도 많이 쓰고 편리함도 늘어나는거구.
    그런 의미에서 지금 EFL을 잡는건 괜찮은 선택이라고 봐.
    물론 정치적인 이슈때문에 사장되지만 않는다면...;;;
댓글 입력 영역