В KWin добавлена поддержка создания визуальных эффектов на JavaScript

Мартин Грэслин (Martin Graesslin), один из ключевых разработчиков оконного менеджера KWin, представил новое достижение на поприще интеграции поддержки JavaScript: визуальные эффекты для KWin теперь можно создавать на языке JavaScript, а не только на C++.

C точки зрения производительности, эффекты на JavaScript ничем не отличаются от эффектов на C++. Система наложения эффектов в KWin разделена на две стадии: реагирование на изменение в оконном менеджере (например, закрытие окна) и рендеринг. Скриптовый API взаимодействует только с оконным менеджером и не касается отрисовки, все операции рендеринга как и раньше производятся низкоуровневыми подпрограммами на C++.

Для распространения эффектов предлагается использовать уже существующую структуру Plasma Package. API для разработки эффектов максимально приближено к API для разработки скриптов-дополнений к KWin. Для создания анимационных эффектов предлагается использовать API, базирующийся на появившемся в Qt 4.8 элементе AnimationEffect. Для примера, Грэслин представил реализацию на JavaScript известного эффекта затухания (Fade), вариант на C++ которого занимает более 200 строк, а на JavaScript укладывается в 7 строк:

   var duration = 250;   effects.windowAdded.connect(function(w) {    effect.animate(w, Effect.Opacity, duration, 1.0);   });   effects.windowClosed.connect(function(w) {    effect.animate(w, Effect.Opacity, duration, 0.0, 1.0);   }); 

Кроме упрощения разработки эффектов, использование JavaScript также приведёт к упрощению их последующей поддержки. В настоящее время разработчики испытывают большие проблемы с поддержанием в актуальном виде накопленной коллекции дополнений на C++, особенно в ситуации внесения изменений в API и непостоянности ABI. Дополнения на JavaScript можно будет вынести из основного дерева исходных текстов KWin и поставлять в виде отдельных пакетов.

В настоящее время JavaScript API находится на начальной стадии развития, но будет развиваться в рамках текущего цикла подготовки релиза KDE 4.9. Как уже упоминалось выше скрипты не могут участвовать в операциях рендеринга, но ситуация может измениться после появления биндинга для WebGL, что позволит, например, организовать загрузку собственных шейдеров. Пока реализация поддержки WebGL не входит в планы, по крайней мере в рамках цикла подготовки KDE 4.9.

Источник:
http://www.opennet.ru/opennews/art.shtml?num=32948

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>