2012-05-16 6 views
2

Что такое функция библиотеки GDK и как подходит Каир? Являются ли они конкурирующими или взаимодополняющими? Кто-нибудь из них зависит от другого?Как Каир связан с GDK?

ответ

1

Cairo - это бэкэнд для рисования, используемый gdk.

+0

Нет, GDK и Каир в основном независимы друг от друга; можно использовать без другого. Во всяком случае, GDK является бэкэнд для Каира, потому что GDK может отображать изображения, созданные с помощью Cairo. – sleske

+0

Тем не менее, Cairo - это чертежный сервер для * GTK + *. – sleske

4

TL; DR:

В последних версиях, ГДК является платформой уровень абстракции GTK +. Он также предлагает некоторую интеграцию платформы для Cairo (например, для показа изображений, созданных с использованием Cairo), но в остальном не зависит от него.

Longer версия:

ГДК начинал как обертку вокруг Xlib, клиентской библиотеки для X Window System. Он поддерживал все компоненты X Windows API, необходимые GTK +, включая операции рисования.

Когда GTK + был перенесен на другие системы окон (например, Windows), GDK превратился в слой абстракции платформы. Затем выяснилось, что API-интерфейс рисования, «унаследованный» от Xlib, был проблематичным - он затруднил перенос и был ограничен (например, небольшая поддержка прозрачности). Таким образом, функциональность чертежа GDK была устаревшей и удалена в GTK + 3 (см. Migrating from GTK+ 2.x to GTK+ 3: Use cairo for drawing).

Итак, GDK начинался как слой абстракции платформы, включая бэкэнд чертежа. В последних версиях Cairo - это бэкэнд, используемый GTK +, и GDK существует вместе с Cairo для обработки аспектов платформы, таких как создание окон и обработка ввода.

В GDK есть некоторые функции, которые используют Каир, но это только для обеспечения взаимодействия с Каиром. Например, gdk_cairo_create() позволяет создать поверхность Каира для окна, которое позволяет рисовать это окно с помощью Каира.