nixp.ru v3.0

24 мая 2017,
среда,
18:39:16 MSK

DevOps с компанией «Флант»
anonymous написал 6 марта 2004 года в 08:34 (532 просмотра) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

А вот и не угадали! Не вопрос это, а опрос — интересно кому-нибудь, как создать окно произвольной формы в чистом Xlib’е? Я несколько дней рылся в Интернете и доках, НИГДЕ ни…чего по этому поводу не нашел, кроме замшелых спецификаций.

Но достигнув определенного уровня красноглазости, сегодня могу показать вам программу на 130 строк с комментариями, которая берет аргументом bitmap файл и рисует окошко по маске этого битмапа, даже если оно состоит из нескольких частей. Нормальное окошко, откликается на нормальные event’ы. Рисовать в нем можно, писать…

Так вот, если есть интерес, могу этот фай куды-нить запостать, поскольку добру пропадать негоже…

Good Luck,

UT

decvar

а закинуть в y-devel нельзя? И копию на мой адресс плз.

anonymous

А при чем тут y-devel? Я и не подписан на него. Впрочем, твоего адреса я тоже не знаю, поскольку гостям профиля не доступны… Дискриминация, панимашь… :-)

Если хочешь, возьми его вот тут:

http://uncleteddy.front.ru/nonrectwindow.cc

а это — .xbm файл для тестирования (220К — большой!).

http://uncleteddy.front.ru/twothings.xbm

Good Luck,

UT

Longobard

UT, расскажи на пальцах про принцип и дай плиз линки на эти спецификации. А там дальше сам разберусь.

Longobard

Хочу додумацца как сделать констрлсы (по типу кнопочек и пр.) тоже произвольной формы. И потом напишем прогу без единого угла (я знаю где-то в германии дом такой есть, теперь будет и прога :) )

anonymous

Это «стандартное» иксовое расширение SHAPE, про него написано в доках по Xlib’у в /usr/X11R6/lib/X11/doc/html в файлах начинающихся с XShape. А еще, в http://x.holovko.ru/Xlib/contents.html#Part2 и других местах.

Основная идея — разбить маску на пересекающиеся прямоугольные окна, и выбрать либо их пересечения, либо обЪединения. Но результат выглядит неплохо, если не злобствовать. Я сделал маску из нормальной фотографии, она рендерится медленно. А простые формы — рисуются со свистом.

Кстати, компилить ту прогу надо так

g++ nonrectwindow.cc -g -I /usr/X11R6/include -L /usr/X11R6/lib -lX11 -lXext -lm -o nonrectwindow

Я уже на сайте исправил.

Good Luck,

UT