След шестмесечно развитие, беше публикувана версия 4.16.0 на многоплатформения тулкит за създаване на графичен интерфейс - GTK 4. GTK 4 напредва в рамките на процеса на разработка, който се стреми да предостави на разработчиците на приложения стабилно и поддържано API, използваемо в продължение на няколко години, без риск приложенията да трябва да бъдат преработвани на всеки шест месеца поради промени в API-то на новата версия на GTK.
Сред най-забележителните подобрения в GTK 4.16:
- Добавена е настройка gtk-font-rendering, която предлага гъвкави високоуровневи възможности за управление на рендирането на шрифтове. За използване на нискоуровневите настройки на шрифтовете параметърът gtk-font-rendering трябва да бъде зададен на 'manual'.
- В библиотеката GSK (GTK Scene Kit), която предоставя възможности за рендиране на графични сцени чрез OpenGL и Vulkan, по подразбиране за рендиране в среди на базата на протокола Wayland е активиран рендеринг двигателят 'vulkan', който директно използва графичния API Vulkan. В останалите случаи продължава да се използва рендеринг двигателят 'ngl', предлагащ реализация на OpenGL, работеща върху API Vulkan. За смяна на двигателя може да се използва променливата на средата 'GSK_RENDERER'. Тъй като двигателите 'vulkan' и 'ngl' взаимодействат по различен начин с графичните драйвери, за стабилна работа с тях се препоръчва използването на последната версия на Mesa 24.2.
- Сред другите промени в библиотеката GSK:
- Реализирана е техника за оптимизация 'occlusion culling', която изключва рендирането на обекти, скрити зад други непрозрачни обекти или извън зрителното поле.
- В процеса на композиране е осигурено отчитане на информация за цветовото пространство.
- Подобрен е кешингът на глифовете и текстурите.
- Реализирана е поддръжка на плочково наслагане (tiling) на големи текстури, за да се създаде безшевна повърхност чрез повторение на текстурата.
- Подобрен е рендерингът на сенки.
- Добавена е възможността за използване на средства за хардуерно ускурение за обработка на трансформирани текстури, например, за извеждане на завъртяно съдържание на екрана.
- Подобрено е използването на механизми за хардуерно ускорение на системи с композитен мениджър kwin.
- Добавена отладъчна опция „GDK_DEBUG=linear“ за активиране на режима на линейно композиране. Подобрено логироването при използване на опции „GDK_DEBUG=offload“ и „GSK_DEBUG=renderer“.
- При работа в среди, базирани на протокола Wayland и композитния мениджър kwin, е реализирана възможността за използване на разширение на протокола (color-management) за управление на цвета. При извеждане на закрепените диалози е използвано Wayland-разширението xdg-dialog. При композиране е активирана шеста версия на обекта wl_compositor. Разрешено е използването на dmabuf в процеса на апаратно ускорение на обработка на текстури за OpenGL.
- Подобрения в библиотеката GDK, предоставяща слой между GTK и графичната подсистема:
- Съществено разширени възможностите за работа с цветови пространства. Осигурена е поддръжка на цветови пространства srgb, srgb-linear, rec2100-pq и rec2100-linear, както и подготовка за реализиране на поддръжка на цветови пространства за HDR. Предложен е обект GdkColorState, предоставящ информация за интерпретацията на цветовете, която може да се използва за преобразуване на едно цветово пространство в друго. За създаване на обекти с информация за цветови пространства е добавен обект Gdk.CicpParams. В обекта GdkTexture, а също така в обектите за създаване, зареждане и преобразуване на текстури е добавена възможността за използване на цветови пространства.
- Реализиран е нов API за работа с курсора, базиран на callback-викателства.
- Реализирана е възможността за извършване на операции MIP-текстуриране (MipMap, създаване на намалени версии на текстури, използвани при отдалечаване на обекта от камерата) чрез CPU.
- За преобразуване на цветове и MIP-текстуриране е използван пул от нишки (thread pool).
- Добавена е поддръжка на променлива на средата XDG_ACTIVATION_TOKEN с токен за активиране за протокола xdg-activation-v1, с помощта на който едно приложение може да прехвърли фокуса на друго.
- Добавен е клас GdkMemoryTextureBuilder, позволяващ формирането на обекти с текстури (GdkTexture) от данни, съхранявани в оперативната памет.
- Разширени възможности за създаване на теми за оформление на базата на CSS. Добавена е поддръжка на променливи и потребителски свойства. Реализирани са CSS-функции color(), oklab(), color-mix(), както и математически функции. Предоставена е възможност за използване на относително определяне на цветовете (промени на абсолютни цветове чрез функции), а също така за задаване на нивото на прозрачност в проценти. При работа с цветове, рамки, сенки и текст е осигурено вземане предвид на информацията за цветовите пространства.
- Към утилитата rendernode-tool са добавени команди „extract“ за зареждане на данни по URL и „image“ за манипулиране на текстури. Реализирана е възможност за генериране на файлове в формат PDF.
- В интерфейса gtk4-node-editor е добавена операцията ‘Paste as node’.
- В уиджета за избор на файлове GtkFileChooserWidget е добавена поддръжка на комбинацията Ctrl-Shift-N за създаване на директории.
- В уиджета за създаване на изскачащи прозорци GtkPopover е подобрено обработването на промените в размера и позицията.
- В уиджета GtkGraphicsOffload, използван за директно изпращане на съдържание, като видео, през композитен мениджър, заобикаляйки рендер GSK, е добавено свойство „black-background“ за извеждане на черен фон.

- В уиджета GtkGLArea, предназначен за извеждане с използване на OpenGL, е добавена възможност за създаване на текстури в dmabuf, което позволява използването на уиджета GtkGraphicsOffload за директно извеждане. сървърПовишена е ефективността на взаимодействието с композитен. сървъра..

- В уиджета GtkTextView е добавена поддръжка за извеждане на текст с сянка и е реализирана възможност за използване на уведомления GtkTextBufferCommitNotify.
- В уиджета GtkCheckButton е добавена поддръжка за групово определяне на стиловете на бутоните.
- Разширени са възможностите за отстраняване на грешки. В интерфейса за инспектиране е добавена информация за цветовите пространства, а също така данни за разрешението на монитора. Променливата среда GDK_DEBUG е разделена на GDK_DEBUG и GDK_DISABLE. Добавени са режими GDK_DISABLE=color-mgmt и GDK_DISABLE=offload. Добавен е режим GTK_DEBUG=css за извеждане на предупреждения при използване на остарели възможности на CSS. Добавени са клавишни комбинации Super-r за запис на лог на събития и Super-c за създаване на екранна снимка.
- Повишени са изискванията към зависимостите и средата за изграждане. Сега е необходим компилатор, който поддържа C11 и минимум версии gstreamer 1.24, pango 1.52 и cairo 1.18 за изграждане. Подкрепата за остарелите режими на изграждане gtk_doc (използвайте documentation), update_screenshots (-> screenshots), demo-profile (-> profile) и demos (-> build-demos) е прекратена.
- За macOS 10.15+ е реализиран интерфейс за определяне на цвета на пикселите на екрана (color picker).
- Включен е режим на инкрементално рендериране за Windows, използващ API WGL.
Източник: opennet.ru


