GDK
GDK원저작자 | GIMP 작성자 |
---|---|
개발자 | GNOME 프로젝트 |
저장소 | |
기입처 | C |
운영 체제 | Linux, macOS, Microsoft Windows |
플랫폼 | X11, Wayland, Quartz 및 GDI |
유형 | 소프트웨어 라이브러리 |
면허증. | GNU Lesser General Public License(LGPL) |
웹 사이트 | developer |
GDK(GIMP Drawing Kit)는 기본 윈도우 및 그래픽 시스템에서 제공하는 낮은 수준의 기능을 래퍼로 사용하는 라이브러리입니다.GDK는 디스플레이 서버와 GTK 라이브러리 사이에 있으며 그리기 프리미티브, 래스터 그래픽스(비트맵), 커서, 글꼴, 윈도우 이벤트 및 드래그 앤 드롭 기능 등의 기본적인 렌더링을 처리합니다.
GTK Scene Graph Kit(GSK)와 마찬가지로 GDK는 GTK의 일부이며 GNU Lesser General Public License(LGPL)에 따라 라이선스가 부여됩니다.
소프트웨어 아키텍처
GTK는 GDK라고 하는 추상화 레이어 위에 실장되어 있기 때문에 입력 수집, 드래그 앤 드롭, 픽셀 형식 변환 등의 낮은 수준의 문제로부터 GTK를 해방할 수 있습니다.GDK는 GTK를 윈도 시스템의 상세에서 분리하는 중간 레이어입니다.
GDK는 GTK의 휴대성의 중요한 부분입니다.저레벨 크로스 플랫폼 기능은 GLib에서 이미 제공되고 있기 때문에 GTK를 다른 플랫폼에서 실행하기 위해 필요한 것은 기본 운영 체제의 그래픽 계층에 GDK를 포팅하는 것입니다.따라서 Windows API 및 Quartz에 대한 GDK 포트는 각각 Windows 및 MacOS에서 GTK 애플리케이션을 실행할 수 있도록 합니다.
GTK+2.8부터는 GDK의 그리기 [1]기능이 아닌 GTK+3과 함께 사용해야 하는 카이로를 지원합니다.
GDK는 윈도우 시스템의 세부 정보에서 GTK를 분리하는 중간 계층입니다.GDK는 Xlib의 얇은 포장지입니다.X Window System에는 Xlib이라고 하는 낮은 수준의 라이브러리가 포함되어 있습니다.GDK의 거의 모든 함수는 대응하는 Xlib 함수에 대한 매우 얇은 포장지이지만 Xlib의 복잡성(및 기능)은 숨겨져 있어 프로그래밍을 단순화하고 GDK를 Wayland나 Microsoft Windows와 같은 다른 윈도우 시스템에 쉽게 이식할 수 있습니다.숨겨진 Xlib 기능은 어플리케이션프로그래머에게는 거의 관심이 없습니다.예를 들어 윈도 매니저만이 사용하는 많은 기능은 GDK에서는 공개되지 않습니다.
GDK를 사용하면 "이 pixmap을 화면에 표시"와 같은 낮은 수준의 작업을 수행할 수 있습니다.
GDK는 X와 같은 시스템이 제공하는 낮은 수준의 접근성을 희생하지 않고 X 프로토콜보다 훨씬 더 휴대성이 뛰어난 계층을 제공합니다.이 추상화의 진정한 장점은 X가 아닌 X를 사용하는 경우 소프트웨어가 Linux Framebuffer 및 Windows에서 자동으로 렌더링된다는 것입니다.
GDK에서 OpenGL(또는 OpenGL ES)을 지원하므로 그래픽 파이프라인을 보다 효율적으로 제어할 수 있습니다.OpenGL은 텍스처 데이터의 합성에는 매우 적합하지만 그리기에는 전혀 적합하지 않습니다.
GdkFrameClock
Gdk Frame Clock은 GTK 3.8에[2] 추가되었습니다.
GTK 어플리케이션은 메인 루프 구동인 채로 있습니다(cf).Glib event loop)은 어플리케이션이 이 메인루프 내에서 아이돌 상태이며 어떤 일이 일어나기를 기다린 후 적절한 서브루틴을 호출하는 것을 의미합니다.GdkFrameClock은 어플리케이션에 "펄스"를 부여하는 추가 메커니즘을 추가합니다.이것은 응용 프로그램에 [3]창을 업데이트하고 다시 칠할 시기를 알려줍니다.비트 레이트는 모니터의 리프레시 레이트와 동기할 수 있습니다.
GTK 장면 그래프 키트
GDK는 역사상 여러 개의 다른 캔버스와 연계되어 있었습니다.
개발자들은 또한 사용되지 않는 API 컴포넌트를 제거하고 Clutter 그래픽 라이브러리와 유사한 통합 장면 그래프(캔버스) 시스템을 추가하는 등 라이브러리에 대한 새로운 방향을 고려하고 있으며, GTK를 OpenGL 및 [4][5]Vulkan과 효과적으로 통합하고 있습니다.
- GTK 장면 그래프 키트(GSK)[6][7]
GTK+ 장면 그래프 키트(GSK)는 2017년 3월에 GTK+ 3.90의 일부로 출시되었습니다.GTK용 장면 그래프 및 렌더링 API입니다.GSK는 GDK(GTK의 일부이기도 함)와 더 이상 통합되지 않았지만 자체 디렉토리에 보관됩니다.
윈도 시스템
GDK에는 X11 및 Wayland 프로토콜, Quartz 및 GDI, 그리고 Hypertext Transfer Protocol(HTTP) 엔진 Broadway 등 몇 가지 윈도우 시스템에 백엔드가 포함되어 있습니다.
GDK는 2015년 3월 GNOME 3.16을 출시하면서 Mir 디스플레이 서버 [8]프로토콜의 실험적인 백엔드를 확보했습니다.Mir display server protocol은 Linux의 Ubuntu 배포를 위한 Canonical의 제품으로, Wayland display server protocol과 경쟁하려고 합니다.현재까지는 Ubuntu에서만 구현되어 있습니다.
현시점에서는 KMS의 백엔드는 존재하지 않습니다.
응용 프로그램을 시작하고 이 인스턴스에서 특정 윈도우 시스템을 강제로 사용하려면 다음 변수 GDK_BACKEND를 지정합니다.
GDK_BACKEND=wayland gnome-calculator
GDK_BACKEND=wayland CLUTTER_BACKEND=wayland cheese
gdk-buff
gdk-buf는 이미지 로드 및 픽셀버퍼 조작용 툴킷입니다.라이브러리는 이미지 로드 및 저장 기능, pixbuf의 빠른 스케일링과 합성, 간단한 애니메이션 로드(애니메이션 GIF) 및 리바트 이미지 버퍼를 GdkDrawable 인스턴스에 렌더링합니다.
gdk-pixbuf에는 꽤 큰 API가 있습니다.
gdk-pixbuf 라이브러리의 기본 구조는 GdkPixbuf입니다.GdkPixbuf는 ArtPixBuf가 지원하는 것과 동일한 개념의 많은 부분을 반영하는 불투명한 개인 데이터 구조입니다.실제로 GdkPixbuf의 개인 데이터 필드 대부분은 ArtPixBuf의 해당 데이터 필드 이름과 데이터 유형이 동일합니다.이러한 유사성은 gdk-pixbuf가 libart를 둘러싼 래퍼였던 이전 시기로 거슬러 올라갑니다.그 후 libart 의존관계는 삭제되어 gdk-pixbuf는 GTK+ 2.0 코드베이스에 Marge 되었습니다.따라서 gdk-pixbuf의 스탠드아론 라이브러리로서의 기간은 GNOME 1 릴리즈로 제한됩니다.
2010-09-23에 GTK+ 2.22가 출시됨에 따라 gdk-pixbuf는 GTK+ 2.0 이후 GTK+의 일부로 출고된 후 스탠드아론 라이브러리로 다시 전환되었습니다.이것은 GTK+3으로의 이행을 위한 준비입니다.
첫 번째 독립형 릴리스는 2010년 7월 21일 2.22였으며, 개발은 2010년 6월 23일 2.21.3에서 시작되었습니다.
gdk-pixbuf의 최신 릴리스는 2017년 10월2일의 gdk-pixbuf 2.36.11입니다.3.36의 개발은 2016년 4월 26일 3.35.1로 시작되었습니다.
역사
GDK는 원래 GIMP 래스터 그래픽 [9]에디터용으로 X 윈도 시스템에서 개발되었습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ GTK+ 2.x에서 GTK+ 3으로의 이행 - 도면에 카이로 사용
- ^ "GdkFrameClock".
- ^ Larsson, Alexander (2013-11-04). "The modern Gtk drawing model".
- ^ 알베르토 루이즈 블로그
- ^ 대혼란 페닝턴의 장면 그래프 제안
- ^ "The GTK+ Scene Graph Kit". 2014-07-29.
- ^ "Graphene". 2014-05-02.
- ^ "add an experimental backend for mir".
- ^ GIMP - GIMP의 간략한(그리고 고대) 역사
외부 링크
- 릴리스 GTK+ 3.19.0의 GDK 코드
- 현대 Gtk 드로잉 모델– Alexander Larsson, 2013/11/04
- GTK 및 라이브러리 개요 - GTK 프로젝트
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg