LINUX.ORG.RU

Сообщения freecoder

 

Как сделать окно прозрачным по цветовой маске?

Подскажите, кто знает, как сделать прозрачным окно по цветовой маске? Чтобы прозрачным стал только определённый цвет и через него был виден рабочий стол под окном.

Вообще, такое нужно для веб-страницы, но браузеры не поддерживают такую прозрачность. Вот подумал, может быть можно в оконном менеджере настроить, но не нашёл рабочего способа как это сделать.

Целевая система - Kubuntu. Но если решение найдётся в другом окружении - рассмотрю и его.

 , , , ,

freecoder
()

SVG-подобный GUI на Rust: как правильно сделать?

Есть у меня небольшое хобби - раз в полгода пытаться писать GUI на Rust. Вот в этом репозитории провожу эксперименты: https://github.com/exgui/exgui

Запустить примеры можно так:

cargo run -p examples --bin smile
cargo run -p examples --bin clock

Идея в том, чтобы сделать нечто похожее на SVG, но с возможностью автоматического размещения текста, или нечто похожее на HTML, но с поддержкой графических примитивов любой сложности.

Так вот, получается, что мне нужна поддержка неких layouts, которые должны единообразно уметь автоматически размещать как графические элементы (круг, прямоугольник, произвольная кривая и т.д.), так и глифы или целые слова текста.

Например, может быть задана следующая структура элементов:

rect()
    .width(100)
    .height(100)
    .child(text("Hello, circle "))
    .child(circle().radius(15))
    .child(text("! And welcome!"))
    .build()

Необходимо, чтобы layout, который имеется в Rect по-умолчанию, расположил корректным образом свои дочерние элементы внутри прямоугольника, построчно. При этом кругом он должен оперировать как одним целым, а текст воспринимать как набор элементов для размещения - отдельных слов.

Я так понимаю, для этого в рендере мне придется спуститься на уовень глифов, чтобы рассчитать нужные размеры. Отсюда вопрос: как это корректнее всего сделать, какими библиотеками пользоваться?

Вообще, посоветуйте из раст-экосистемы библиотеки, которые могут понадобиться для данной задачи. В качестве рендера пока использую сишный nanovg.

 , ,

freecoder
()

RSS подписка на новые темы