[ 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는 위젯 뿐만 아니라 어플리케이션에서 유용하게 사용할 수 있는 편의 기능(윈도우 처리, 메인 루프 실행 등)도 제공하고 있습니다.

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

< 그림 1. Elementary에서 제공하는 위젯 중 일부 >
1. 특징
elementary는 처음부터 모바일 터치 스크린을 염두에 두고 개발되었습니다. 그래서 터치만으로도 모든 위젯을 컨트롤할 수 있습니다. 물론 데스크탑도 무리없이 지원합니다.
그래서 elementary는 핑거 사이즈(finger-size)라는 개념을 가지고 있습니다. 손가락으로 터치할 수 있는 최소 크기를 핑거 사이즈라고 하는데, 모든 위젯의 터치가 되는 부분의 크기는 이 핑거 사이즈 이상이 되어야 합니다. 그러므로 핑거 사이즈를 설정하는 것만으로도 모든 위젯의 터치가 되는 영역의 크기를 쉽게 변경할 수 있습니다. 코드 한 줄 바꾸지 않고 말이죠 :)
그리고 elementary는 스케일러블(scalable)합니다. 코드 한 줄 변경하지 않고도 스케일(scale) 설정값을 변경함으로써 다양한 해상도를 지원할 수 있습니다.
그리고 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 ]





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