클러터(소프트웨어)

Clutter (software)
어수선하다
원저작자Emmanuele Bassi, OpenHand Ltd.
개발자GNOME 프로젝트
초기 릴리즈2006년 6월 22일, 16년 전(2006-06-22)
안정된 릴리스
1.26.4 / 2020년 3월 9일, 2년 전(2020-03-09)[1]
프리뷰 릴리즈
1.25.6 / 2016년 2월 18일, 6년 전(2016-02-18)[2]
저장소
기입처C
운영 체제Linux, BSD, OS X, Microsoft Windows
유형그래픽스 라이브러리
면허증.GNU 약소 일반 공중 사용 허가서[3]
웹 사이트GNOME/프로젝트/클러터

Clutter는 하드웨어 액셀러레이션 사용자 인터페이스를 작성하기 위한 GOBject 기반 그래픽 라이브러리입니다.Clutter는 OpenGL 기반의 '인터랙티브 캔버스' 라이브러리이며 그래픽 제어 요소가 포함되어 있지 않습니다.렌더링에는 OpenGL(1.4+) 또는 OpenGL ES(1.1 또는 2.0)가 필요합니다.[citation needed]GStreamer를 사용한 미디어 재생과 [4]카이로를 사용한 2D 그래픽 렌더링도 지원합니다.

Clutter는 현재 인텔의 일부인 Open Hand Ltd에 의해 작성되었습니다.Clutter는 GNU Lesser General Public License(LGPL) 버전 2.1의 [3]요건을 따르는 무료 오픈 소스 소프트웨어입니다.

2022년 2월 개발팀은 이 프로젝트를 중단한다고 발표했다.더 이상 버전이 출시되지 않으며 Clutter를 사용하는 개발자들은 애플리케이션을 GTK 4 및 libadwaita2에 이식할 것을 권장합니다.

도입

Clutter를 채택한 인기 프로그램은 GNOME 비디오(일명 GNOME Videos)입니다.토템), GNOME 쉘, Pitivi, Compon Desktop 및 GNOME Easy.

Mx는 원래 Moblin/MeeGo 넷북그래픽 셸용으로 설계된 Clutter 기반의 위젯 툴킷으로, 독립 프로젝트로 발전했습니다.

위젯 툴킷 Netbook Toolkit(nbtk) 및 Mx는 Clutter를 [5]기반으로 합니다.종종 Clutter는 GTK와 유사하지만 이는 정확하지 않습니다.Mx 또는 Nbtk와 함께 Clutter만 GTK의 범위와 일치할 수 있습니다.GTK와 함께 Clutter를 사용하는 이유이기도 하다.

Clutter는 멀티터치 [citation needed]제스처를 지원합니다.

GSK(GTK Scene Graph Kit)는 2017년 3월에 GTK+ 3.90의 일부로 처음 출시되었으며 UI에서 Clutter를 대체하고자 하는 GTK 기반 애플리케이션을 대상으로 합니다.

소프트웨어 아키텍처

GDK에는 X11, Wayland, Broadway(HTTP), QuartzGDI에 대한 백엔드가 포함되어 있으며 렌더링에는 카이로에 의존합니다.새로운 GSK(SceneGraph)가 진행 중이며 Clutter의 SceneGraph를 사용할 수 있습니다.
Linux 기반 시스템에서 Clutter 사용 예

클러터는 유지 모드에서 작동하는 장면 그래프 기반 캔버스입니다.씬(scene)의 모든 물체는 일반적으로 3D 공간 내에 있는 2D 표면입니다.

Clutter는 백엔드 뒤에 있는 네이티브 창 환경을 추상화합니다.이 환경은 씬 그래프의 메인 컨테이너를 작성하는 역할도 합니다.이 최상위 컨테이너를 스테이지라고 부릅니다.무대 위의 물건들은 배우라고 불린다.

OpenGL과 같이 매트릭스에서 동작하는 대신 Clutter 개발자는 각 액터의 속성을 변경합니다.그러면 Clutter가 변경 사항을 인식하고 그에 따라 장면을 렌더링합니다.

Clutter는 현재 OpenHand에 의해 개발되고 있으며 데스크톱 및 임베디드 하드웨어에 시각적으로 풍부한 그래픽 사용자 인터페이스를 제공합니다.주요 타깃은 GL 및 GL/ES 기반 UI 툴킷을 위한 Media Center와 유사한 애플리케이션, 소형 디바이스 UI 및 기본 도면 API입니다.Clutter는 텍스트 렌더링에 Pango를 사용하고(특수 GL/GLES 렌더러를 사용), GdkPixbuf사용하여 이미지를 GL 텍스처로 로드합니다.다른 GNOME 플랫폼 라이브러리와의 상호작용은 여러 통합 라이브러리(예: clutter-gst(GStreamer), clutter-gtk(GTK 애플리케이션에 스테이지를 내장하기 위한), clutter-cairo(texture에 그리기 위한 카이로))를 통해 이루어집니다.API와 ABI는 마이크로 릴리즈 내에서 안정적으로 유지되지만 마이너 릴리즈에서는 API가 깨질 수 있습니다.1.0에 도달할 때까지 API와 ABI는 다음 메이저릴리즈까지 안정적입니다.

ClutterActor

ClutterActor는 Clutter 장면 그래프의 기본 요소로, [7]그래프에 노드의 위치, 크기 및 변환을 캡슐화합니다.

  • ClutterActor는 포인터 이벤트나 키이벤트 등의 입력 디바이스이벤트를 수신 및 처리할 수 있습니다.
  • 애니메이션은 최신 사용자 인터페이스의 핵심 개념입니다.Clutter는 배우의 상태를 자동으로 조정하는 완전하고 강력한 애니메이션 프레임워크를 제공합니다.어플리케이션 코드에서 프레임 단위로 직접 조작할 필요는 없습니다.

지원되는 플랫폼

Clutter는 GLX사용하는 X Window 시스템EGL[8][9][10] 사용하는 Wayland용으로 개발되었습니다.클러터는 프레임 버퍼도 사용할 수 있습니다.릴리스 0.6부터 Mac OS X에 대한 네이티브 지원이 추가되었습니다.[11]0.8 릴리스[12] 이후 네이티브 Microsoft Windows 백엔드가 지원되며 Windows 사전 컴파일 DLL을 사용할 [13][14][15]수 있지만 Windows용 MinGW 및 Bash 쉘을 사용하여 Windows용 최신 DLL을 구축할 수 있습니다.

2014년 6월부터 버전 1.19.4 이후 Clutter의 evdev 입력 백엔드는 libinput 0.4.[16]0에 의존합니다.

프로그래밍 언어 바인딩

클러터는 GObject 객체 시스템에 기초한 설계와 함께 C 프로그래밍 언어를 사용하여 구현된다.바인딩은 다음 언어로 사용할 수 있습니다.

통합 라이브러리

Clutter는 다음과 같은 다른 라이브러리 및 툴킷과 통합할 수 있습니다.

  • GTK 어플리케이션은 특별한 위젯을 사용하여 Clutter 스테이지를 내장할 수 있습니다.
  • GTK+ 2.18 [17]이후 클라이언트 측 윈도 기능을 사용하여 클러터 어플리케이션에서 GTK 위젯을 삽입할 수 있습니다.
  • 클러터 애플리케이션은 GStreamer를 사용하여 동영상을 클러터 텍스처 액터에 직접 재생할 수 있습니다.
  • 클러터 애플리케이션은 카이로를 사용하여 텍스처를 그릴 수 있습니다.
  • 비디오 액셀러레이션 API

이 예에서는 스테이지에 라벨을 추가합니다(C로 작성).

// 장면의 모든 액터가 포함된 기본 스테이지를 가져옵니다. ClutterActor *단계. = clutter_stage_get_default ();  // 32픽셀 높이의 Sans 글꼴과 "Hello, world" 텍스트를 사용하여 새 라벨을 만듭니다. // 스테이지에 배치합니다. ClutterActor *라벨. = clutter_text_new_with_text ("Sans 32px", "안녕, 세상아"); clutter_cluter_add_actor (클루터_컨테이너 (단계.), 라벨.);  // 스테이지와 라벨 크기를 고려하여 라벨을 스테이지 중앙에 배치합니다. 흘러가다 x = (clutter_actor_get_width (단계.) - clutter_actor_get_width (라벨.)) / 2; 흘러가다 y = (clutter_actor_get_높이 (단계.) - clutter_actor_get_높이 (라벨.)) / 2; clutter_actor_set_position (라벨., x, y);  // 스테이지를 표시합니다.Clutter의 모든 배우는 무대를 제외하고 명시적으로 숨기지 않는 한 표시됩니다. // 이렇게 해서 스테이지는 // 표시되는 모든 하위 항목을 자동으로 표시합니다. clutter_actor_show (단계.); 

인터페이스 빌더

Clutter는 특수 JSON [18]사투리를 사용하여 사용자 인터페이스를 구축할 수 있습니다.전체 장면 그래프는 JSON 유형을 사용하여 정의되며 ClutterScript 클래스를 통해 런타임에 구축됩니다.

이 정의에 따라 메인 창이 생성되고 그 안에 Hello, world!라는 텍스트가 포함된 라벨이 배치됩니다.

{     "id": "메인 스테이지',     "타입": "Clutter Stage",     "컬러": "흰색",     '폭': 800,     "높이': 600,     "실패": "스크립트 데모",     "자녀": [{         "id": "hello-label",         "타입": "ClutterText",         "x": 400,         "y": 300,         "텍스트": "안녕, 세상아!",         "컬러": "검은색",         "이름": "Sans 48px"     }],     "실패": [{         "이름: "실패",         "실패": "contracter_main_contrace"     }] } 

정의는 파일 또는 문자열로 저장하고 다음을 사용하여 로드할 수 있습니다.

ClutterScript *대본 = clutter_script_new (); GERROR *에러 = 특수한 순서; clutter_script_load_from_data (대본, 묘사, -1, &에러); 한다면 (에러) {     경고 ("UI 설명을 로드할 수 없습니다: %s", 에러->메세지);     g_error_free (에러); } 또 다른 {     GOBject *단계.;      clutter_script_connect_module (대본, 특수한 순서); /* 신호 핸들러를 연결합니다*/     단계. = clutter_script_get_object (대본, "메인 스테이지'); /* "메인 스테이지" 오브젝트를 가져옵니다.* /     clutter_actor_show (클러터_액터 (단계.)); } 

애니매이션

클러터는 캔버스에 있는 모든 항목의 암묵적인 애니메이션을 가능하게 합니다.각 동작은 여러 배우에게 적용될 수 있고, 여러 행동을 한 배우에게 합성할 수 있습니다.행동은 암묵적으로 애니메이션을 처리합니다. 개발자는 초기 및 최종 상태, 애니메이션을 완료하는 데 필요한 시간(또는 프레임 수), 사용할 시간의 함수(선형, 사인파, 지수 등)를 지정하며, 동작이 조정을 처리합니다.Clutter는 개발자가 커스텀 동작을 구현하기 위한 일반적인 기본 클래스 및 불투명도, Z축상의 위치(깊이), 경로상의 위치, 회전 등과 같은 간단한 속성을 처리하는 다양한 클래스를 제공합니다.

Clutter 1.0 이후 Clutter Animation 클래스와 clutter_actor_animate() 편의 함수를 사용하여 간단한 일회성 애니메이션을 만들 수도 있습니다.clutter_actor_animate() 함수는 현재 상태와 지정된 최종 상태 사이의 액터 속성을 애니메이션화합니다.

이 예에서는 시간과 동작의 선형 함수를 사용하여 레이블 크기를 2초 만에 2배로 조정합니다.

클루터 타임라인 *타임라인 = clutter_cluter_new (2000); Clutter Alpha *알파 = clutter_alpha_new_full (타임라인, 혼탁_선형); 불규칙한 행동 *행동 = clutter_clot_scale_new (알파,                                                            1.0, 1.0, /* 초기 스케일링 팩터 */                                                            2.0, 2.0  /* 최종 스케일링 팩터 */ ); clutter_cluter_cluter (행동, 라벨.); 
이러한 문장은 2초 지속 시간, 선형 완화 모드로 시간 표시줄을 바인딩하는 알파, 요인 1.0과 요인 2.0 사이에 적용되는 모든 액터를 스케일링하는 동작(수평 및 수직 모두)을 생성합니다.마지막으로, 그것은 배우에게 그 행동을 적용합니다.

암묵적인 애니메이션 API를 사용하는 동등한 코드는 다음과 같습니다.

clutter_actor_animate (라벨.,          /* 애니메이션화할 배우 */                        혼탁_선형, /* 완화 모드 */                        2000,           /* 애니메이션 기간 */                        "스케일 x", 2.0, /* 최종 수평 스케일링 계수 */                        "스케일 y", 2.0, /* 최종 수직 스케일 팩터 */                        특수한 순서); 
이 문은 현재 값과 지정된 최종 값 사이에서[19] 제공된 GObject 속성을 애니메이션으로 만드는 암묵적인 ClutterAnimation 개체를 만듭니다.

코글

Cogl은 3D 그래픽 하드웨어를 사용하여 예쁜 [20]그림을 그릴 수 있는 작은 오픈 소스 소프트웨어 라이브러리입니다.API는 OpenGL의 플랫스테이트 머신 스타일에서 벗어나 서로의 발끝을 밟지 않고 렌더링할 수 있는 직교 컴포넌트를 쉽게 쓸 수 있도록 설계되어 있습니다.CoGL은 현재 OpenGL ES 1.1/2.0 및 OpenGL > 1.3(또는 GL_ARB_multitestracture 확장의 경우 1.2)을 지원하며 Galium 3D 또는 D3D 백엔드를 사용할 수 있습니다.

libchamplain(라이브 챔플레인)

libchamplain은 지도를 표시하는 ClutterActor를 제공하는 C 라이브러리입니다.또한 GTK 응용 프로그램에서 지도를 표시하는 GTK 위젯도 제공합니다.libchamplain은 프랑스 항해사, 탐험가, 지도 제작자인 Samuel de Champlain의 이름을 따서 지어졌다.

「 」를 참조해 주세요.

  • 코어 애니메이션 – Mac OS X 10.5 이상에서 사용되는 데이터 시각화 API
  • Qt Quick – Qt와 QML기반으로 하는 유사한 애플리케이션 프레임워크

레퍼런스

  1. ^ "Clutter 1.26.4 (release)". 2020-03-09. Retrieved 2021-01-23.
  2. ^ "ANNOUNCE: Clutter 1.21.8 (snapshot)". 2016-02-18.
  3. ^ a b "Clutter license".
  4. ^ http://developer.gnome.org/clutter/stable/ClutterCairoTexture.html Clutter API 레퍼런스:ClutterCairoTexture
  5. ^ "Projects/Vala/MxSample - GNOME Wiki!". wiki.gnome.org. Retrieved 18 April 2018.
  6. ^ "clutter-project/clayland". GitHub. Retrieved 18 April 2018.
  7. ^ "GNOME developer documentation".
  8. ^ Bassi, Emmanuele (31 January 2011). "ANNOUNCE: Clutter 1.6.0 (stable)". Retrieved 9 March 2016.
  9. ^ Bradford, Rob (16 December 2011). "Clutter & Cogl Wayland update". Retrieved 9 March 2016.
  10. ^ Bassi, Emmanuele (24 September 2013). "ANNOUNCE: Clutter 1.16.0 (stable)".
  11. ^ http://blogs.gnome.org/tko/2008/05/26/three-steps-forward-one-giant-step-back/ OSX에서의 Life with Clutter
  12. ^ "Archived copy". Archived from the original on 2009-08-05. Retrieved 2009-07-29.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  13. ^ "vala-win32 Vala binaries for Windows". Retrieved 27 January 2013.
  14. ^ "Val(a)IDE in Launchpad". Retrieved 27 January 2013.
  15. ^ "x6-development-share". Retrieved 27 January 2013.
  16. ^ "[ANNOUNCE] libinput 0.4.0". freedesktop.org. 2014-06-24.
  17. ^ http://mail.gnome.org/archives/gnome-announce-list/2009-September/msg00099.html GNOME 메일링 리스트: GTK+ 2.18.0 출시
  18. ^ http://www.clutter-project.org/docs/clutter/stable/ClutterScript.html#ClutterScript.description 2009-08-04 Wayback Machine Clutter API 레퍼런스:ClutterScript
  19. ^ "Archived copy". Archived from the original on 2009-08-05. Retrieved 2009-07-29.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  20. ^ "cogl 1.18.2". 2014-07-04.

외부 링크