14. 캔버스 / 렌더링 엔진 (Evas)
• Scene Graph 기반 렌더링
• 화면에 출력 가능한 모든 오브젝트 상태를 트래킹
• 각 오브젝트의 화면 출력을 담당
• 폰트, Glyph 렌더링, 이미지 로딩, 스케일링, 블렌딩 등
• 렌더링 최소화
• 오직 변경된 영역만 화면 출력(Parital Rendering)
• 가려서 보이지 않는 객체를 식별하여 렌더링에서 제외
• 렌더링 최적화
• OpenGL, Software, SIMD(MMX, SSE, SSE3, NEON)
• Retained Mode 렌더링
• 애플리케이션이 직접 Drawing Command를 요청하지 않음
• Idle enterer에서 rendering을 수행
15. 캔버스 / 렌더링 엔진 (Evas)
• Automated update handling
• Start here
16. 캔버스 / 렌더링 엔진 (Evas)
• Automated update handling
• Next frame is here
17. 캔버스 / 렌더링 엔진 (Evas)
• Automated update handling
• Calculate actual update region deltas
18. 캔버스 / 렌더링 엔진 (Evas)
• Automated update handling
• Only draw updated regions
19. 캔버스 / 렌더링 엔진 (Evas)
• Automated update handling
• Result
21. 고급 GUI & 스크립트 엔진 (Edje)
• Complex Graphical Design and Layout library
• EDC 스크립트 언어 제공
• C 코드 없이 GUI 작성 가능
• 애플리케이션을 다음으로 분리 가능
• A graphical part: GUI Layout binary (.edc)
• A functionality: Executable logic binary (.c)
• 파일 타입
• .edc: Edje Text script file
• .edj: GUI layout binary
22. 고급 GUI & 스크립트 엔진 (Edje)
collections { //A theme
group { name: “elm/naviframe/base/default”; //A style of a theme
images {
image: “naviframe_bg.png” COMP; //Declare image resource to be used in this group
image: “naviframe_bg2.png” COMP;
}
parts {
part { name: “base frame”; //This base layout consists of one base frame part
type: IMAGE;
scale: 1; //Enable scailibility
mouse_events: 0; //Disable mouse events
description { state: “default” 0.0; //Default status of this base frame
align: 0.5 0.5; //Align this part based on its group
rel1 { relative: 0 0; offset: 0 0; } //Relative position (left top)
rel2 { relative: 1 1; offset: -1 -1; } //Relative position (right bottom)
image {
normal: “naviframe_bg.png” //This part uses “naviframe_bg.png“ image
}
}
}
}
• EDC Example
23. 고급 GUI & 스크립트 엔진 (Edje)
.edc .cCompile-time
Run-time .edj
executable
edje_cc compile
Elm_layoutload
Run
26. 위젯 라이브러리 (Elementary)
• 위젯 종류
• 일반 위젯
• 시각적 외양을 가짐: 버튼, 레이블, 체크박스, 리스트, 이미지 …
• 컨테이너 위젯
• 레이아웃 구성에 필요: Scroller, Layout, Box, Table, Grid …
• 스크린 확장성
• 해상도/스크린 크기에 따른 Scalability 제공
• 테마
• 같은 위젯 이더라도 테마에 따른 다양한 Look & Feel 구성 가능
• 디바이스 프로파일
• 구동 환경에 따른 Configurable한 위젯 동작 및 특성 제공