LINUX.ORG.RU

А простейший пример использования - исходник xeyes, например. Или же xlogo -shape

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

А что по полупрозрачности по маске? Только костыль в виде скриншота бекграунда и рисования на нем?

sambist ★★
() автор топика
Ответ на: комментарий от sambist

Не понял вопроса? А мне на какое окно-то смотреть на скриншоте? Я смотрел на заднее, где закругленные углы. Или мне надо было смотреть на Habrahabr?

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Или мне надо было смотреть на Habrahabr?

Переднее окошко - это типа авторский «сплешскрин». Вот я и копаю, как средствами X сделать такое же. По краям - плавный альфа канал, сложная форма по маске изображения.

sambist ★★
() автор топика
Ответ на: комментарий от sambist

Тогда вопрос несколько сложнее, потому что там есть тень, под которой видно нижнее окно. Сделать окно любой формы, даже с дырой посередине, даже состоящее из отдельных кусков, можно при помощи Shape Extension. Нарисовать неквадратные области можно и на прозрачном окне, но указатель над прозрачной областью будет считать, что он над твоим окном находится, а он на экране под проглядывающим. А вот Shape Extension этот момент отрабатывает. Если мышь над «дырой», то события будет получать окно под дырой, а не твое. Попробуй в xeyes ткнуть в пустоту между глазами - активизируется окно под глазами.

Нарисовать всякое с полупрозрачностью, масками — это Render Extension, как выше и посоветовали, если мы об иксовых средствах говорим. Или же сразу готовые картинки с полупрозрачностью, подготовленные на X-клиенте просто рисовать в окно (как раз то, что ты назвал костылем).

А вот тень под окном и вообще проглядывающие нижние окна — это в общем случае, конечно, Composite Extension и композитный WM.

В докомпозитную эру делали псевдополупрозрачность (хрень, в общем-то). Перед отрисовкой можно получать изображение той области, куда собираешься рисовать свой сплеш (XCopyArea или XGetImage на клиент), а потом при помощи Render Extension или на клиентской стороне композитить. Дальше то, что накомпозитил (свое изображение, наложенное с полупрозрачностью на сохраненное изображение-скриншот под окном), выводить на экран. Но если под тенью или полупрозрачным окном что-то двигается, то даже не знаю, как апдейтить свое изображение. http://en.wikipedia.org/wiki/Pseudo-transparency#XCopyArea. Надо подумать. Что-то я навскидку не припомню подобных штук. В композитных WM видел, а извратов без Composite не припомню.

Если делать без тени и полупрозрачности на другие окна, то Composite не нужен. Если тебе сойдет прямоугольное окно с прозрачным фоном, то можно даже без X Shape Extension обойтись, но прозрачные области будут ловить события указателя, что для твоих сплешей не особо важно — в них тыкать мышью, может, и не надо будет.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Спасибо, буду думать. Сплеш привел для примера, думал написать какой-нибудь screenmate.

sambist ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.