Shaun McCance
shaunm@gnome.org 2011–2012
윈도우 시스템용 저수준 추상
조성호
shcho@gnome.org 2016, 2017, 2018.

# GDK

GDK는 그래픽 및 입력 장치용 윈도우 시스템과 연동하는 GTK+의 하부 라이브러리입니다. 프로그램 코드에서 GDK를 직접 쓸 일은 거의 없지만, 화면에 저수준 창을 만들고 다양한 입력 장치로 사용자와 소통할 때 필요한 모든 기능이 있습니다. GDK는 다양한 윈도우 시스템의 추상체처럼 동작하기에 GTK+는 X 윈도우 시스템(X11), 마이크로소프트 윈도우, Mac OS X 쿼츠 어느곳에든 이식할 수 있습니다.

GDK는 키보드, 마우스 및 기타 입력 장치의 이벤트에 접근할 수 있게 합니다. GTK+의 위젯 구현체는 이 기능을 활용하며, 프로그램 코드에서 활용할 수 있게 이벤트를 고수준 시그널로 바꿉니다. 예를 들어, 적절한 위치에서 사용자가 마우스 단추를 눌렀다 떼면, `GtkButton` 위젯은, 마우스에서 발생하는 `GDK_BUTTON_PRESS` 이벤트와 `GTK_BUTTON_RELEASE` 이벤트를 추적하며, 이 이벤트를 적절한 `GtkButton::clicked` 시그널로 바꿉니다.

GDK는 끌어다 놓기 및 시스템의 클립보드 데이터에 접근할 저수준 루틴을 제공합니다. 개별 컨트롤을 구현할 때 적당한 사용자의 상호작용 행동에 따른 반응을 구현하려면 이 기능에 접근해야합니다.

GDK에는 GTK+와 같은 완전한 그래픽 툴킷을 구현할 때 필요한 기타 기능도 보유하고 있습니다. GDK는 GTK+가 여러 환경에서 동작하도록 플랫폼 추상체로 동작하므로 GTK+에서 필요한 모든 시스템 기능을 동작하는 API를 제공합니다. GTK+에서 필요한 시스템 기능에는 멀티헤드 디스플레이, 해상도, 색 품질, 색상표, 커서 정보가 있습니다.

윈도우 시스템의 하부에서, 이벤트 저수준 접근, 윈도우, 클립보드 등의 저수준 접근 처리가 필요할 때면 GDK를 활용해야합니다. 이 작업에 GDK를 활용하면, 이식성을 확보하고, GTK+ 코드의 나머지 부분과 합쳐 쓸 수 있습니다. GDK의 단순 드로잉 루틴은 보통 사용하면 안됩니다. GDK가 단순히 윈도우 시스템의 드로잉 기반을 래핑했을 때 본래 목적을 벗어납니다. 고화질 2D 그래픽을 처리하려면, GDK 대신 카이로에서 제공하는 확장 기능을 활용하십시오.

GDK 참고 설명서