Вы можете использовать svg. Сделайте положение контейнера / обертки относительным, сначала установите svg как статически, а затем разместите абсолютно позиционированное содержимое (сверху: 0; слева: 0; справа: 0; внизу: 0;)
Пример с 16: 9 пропорций:
image.svg: (может быть встроено в src)
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 9" width="16" height="9"/>
CSS:
.container {
position: relative;
}
.content {
position: absolute;
top:0; left:0; right:0; bottom:0;
}
HTML:
<div class="container">
<img style="width: 100%" src="image.svg" />
<div class="content"></div>
</div>
Обратите внимание, что встроенный svg не работает, но вы можете urlencode svg и вставить его в атрибут img src следующим образом:
<img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%209%22%20width%3D%2216%22%20height%3D%229%22%2F%3E" style="width: 100%;" />
Вы могли записать свою программу в использование ncurses и затем использовать PDCurses для преобразования его в приложение X11 - поскольку readme рекламируют.
Я знаю это, потому что я использовал его в качестве портативных проклятий, хотя я никогда не тестировал его возможности X11
Парни GoboLinux создали свой собственный инструментарий для Python под названием AbsTK, они используют его для своего установщика, который на самом деле работает действительно хороший. Я никогда не использовал инструментарий сам, но приложения, созданные с ним, кажется твердым.
Не точно библиотека, но Вы могли рассмотреть запись веб-приложения, которое ухудшается хорошо к Lynx
Там Проклял GTK, но это кажется немного датированным. Я нашел некоторые ссылки на порт QT к ncurses под названием спокойная Консоль, но это, кажется, исчезло.
Возможно, tcl/tk обеспечил бы то, что Вы хотите http://www.tcl.tk/
Вот страница при взаимодействии через интерфейс с проклятиями. Существует требование там интеграции с ncurses.
При помощи библиотеки, которая нацелена на и текстовый режим и для среды GUI, у Вас есть большой риск застревания с худшим из обоих миров.
Вы будете более обеспеченным структурированием Вашего кода с помощью шаблона MVC, и обеспечивая отдельные представления и контроллеры для каждой платформы, для которой Вы нацелены. Снижение всей логики к образцовым классам обладает несколькими другими преимуществами:
Я думаю, что используется для конфигурирования ядра Linux, когда компиляция является dialog/cdialog/xdialog. Но это было некоторое время, так как я скомпилировал ядро, таким образом, моя память может быть выключена. Самая многообещающая ссылка, которую я могу найти, является этим для Xdialog.
Библиотека, которая обеспечивает независимость YaST, чтобы сделать ncurses, gtk и qt с одной кодовой базой, предоставляет то, что вы ищете, и она не привязана к самому YaST.
На самом деле libyui требует только стандартную библиотеку C++ и phtreads (IIRC). Плагины пользовательского интерфейса, конечно, требуют соответствующих библиотек (Qt, ncurses). YaST использует libyui через набор привязок YCP, которые экспортируют YCP-подобный API поверх libyui.
Библиотека немного низкоуровневая (на один уровень ниже цикла событий), мой коллега Клаус Кемпф писал об использовании этой библиотеки некоторое время назад в своем блоге, включая привязку к скриптовым языкам с помощью swig.
Единственная часть, которая специфична для SUSE - это упаковка, поэтому вам нужно будет упаковать ее самостоятельно. Stackoverflow не позволил мне сделать ссылку более одного раза. Код библиотеки можно найти в блоге Клауса. Замените libyui на "qt" и "ncurses" для кода плагина.
Также наберите в гугле "YaST Independence From YCP", чтобы найти запись в блоге Андреаса Егера на эту тему.