История изменений
Исправление Lincor, (текущая версия) :
а как устроен этот бэкбуфер?
массив пикселей.
Как тулкит с ним взаимодействует?
присваиванием. GTK+ использует Cairo, который, впрочем, все равно взаимодействует с растровым буфером присваиванием.
У тулкитов есть различные возможности вроде округлений кнопки, тени и т.п. - что с производительностью? На дно тянет сложность просчитывания тени или частота отправки изменений в буфер (аля анимация при наведении)?
на современном компьютере на дно не тянет ничего. на старом эффекты целесообразно отключить.
Как gtk отрисовывает шрифты через pango?
Pango не отрисовывает шрифты, это промежуточный слой, необходимый для совместимости с различными платформами. на линуксе шрифты отрисовывает FreeType. он при помощи математических алгоритмов растеризует векторные шрифты с учетом параметров, предоставленных пользователем API, таких как размер глифа, и пишет результат в предоставленный клиентом буфер. если интересны детали процесса, можешь осилить вот этот небольшой туториал. GTK+ потом копирует растеризованный текст из буфера FreeType в нужное место буфера окна.
Исходная версия Lincor, :
а как устроен этот бэкбуфер?
массив пикселей.
Как тулкит с ним взаимодействует?
присваиванием.
У тулкитов есть различные возможности вроде округлений кнопки, тени и т.п. - что с производительностью? На дно тянет сложность просчитывания тени или частота отправки изменений в буфер (аля анимация при наведении)?
на современном компьютере на дно не тянет ничего. на старом эффекты целесообразно отключить.
Как gtk отрисовывает шрифты через pango?
Pango не отрисовывает шрифты, это промежуточный слой, необходимый для совместимости с различными платформами. на линуксе шрифты отрисовывает FreeType. он при помощи математических алгоритмов растеризует векторные шрифты с учетом параметров, предоставленных пользователем API, таких как размер глифа, и пишет результат в предоставленный клиентом буфер. если интересны детали процесса, можешь осилить вот этот небольшой туториал. GTK+ потом копирует растеризованный текст из буфера FreeType в нужное место буфера окна.