http://www.opennet.ru/opennews/art.shtml?num=32948
Мартин Грэслин (Martin Graesslin), один из ключевых разработчиков оконного менеджера KWin, представил новое достижение на поприще интеграции поддержки JavaScript: визуальные эффекты для KWin теперь можно создавать на языке JavaScript, а не только на C++.
C точки зрения производительности, эффекты на JavaScript ничем не отличаются от эффектов на C++. Система наложения эффектов в KWin разделена на две стадии: реагирование на изменение в оконном менеджере (например, закрытие окна) и рендеринг. Скриптовый API взаимодействует только с оконным менеджером и не касается отрисовки, все операции рендеринга как и раньше производятся низкоуровневыми подпрограммами на C++.
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 API находится на начальной стадии развития, но будет развиваться в рамках текущего цикла подготовки релиза KDE 4.9. Как уже упоминалось выше скрипты не могут участвовать в операциях рендеринга, но ситуация может измениться после появления биндинга для WebGL, что позволит, например, организовать загрузку собственных шейдеров. Пока реализация поддержки WebGL не входит в планы, по крайней мере в рамках цикла подготовки KDE 4.9.
Давно хотел воплотить несколько своих эффектов, но разбираться в С++ не хотелось.