9.6.1 Nano-X

Предыдущая  Содержание  Следующая V*D*V

Проект Nano-X - это проект с открытым кодом, доступный в соответствии с лицензиями MPL/GPL. Он предоставляет простой, но мощный встраиваемый графический программный интерфейс. Основные функции Nano-X, которые делают его подходящим в качестве встраиваемой оконной среды, перечислены ниже.

 

Разрабатывался с нуля с ориентацией на встраиваемые устройства, с учётом различных ограничений, таких как память и дисковое пространство. Вся библиотека занимает менее 100 Кб и использует только от 50 до 250 Кб рабочей памяти.

Архитектура Nano-X позволяет добавлять различные типы устройств отображения, мышей, сенсорных экранов и клавиатур. Это сделано путём предоставления отдельного уровня интерфейса драйвера устройств. Это делает перенос на любую аппаратную платформу простым.

Nano-X реализует два популярных API: интерфейс на основе Microsoft Windows и X-lib, известный как API Nano-X. Это сокращает время изучения API.

Уровень драйвера экрана поддерживает все возможные форматы пикселей, такие как 1, 2, 4, 16, 24 и 32 бита на пиксель, и, следовательно, прямо переносим на любое устройство от монохромных ЖК до полноцветных экранных систем.

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

 

Архитектура Nano-X

 

Архитектура Nano-X сильно модулизирована и имеет три основных уровня. К ним относятся:

 

Уровень драйвера устройства

Независимый от оборудования графический движок

Уровень API (Nano-X и Microwindows)

 

Архитектуру Nano-X объясняет Рисунок 9.10.

 

Рисунок 9.10 Архитектура оконной системы Nano-X.

Рисунок 9.10 Архитектура оконной системы Nano-X.

 

 

Низкогоуровневый драйвер устройства имеет интерфейс для различных устройств, таких как экран поверх кадрового буфера, сенсорная панель, мышь и клавиатура. Этот уровень позволяет добавление для Nano-X нового устройства, не затрагивая остальные уровни.

Ядром Nano-X является графический движок, который реализует графические процедуры для отрисовки линии, окружности и полигона. Он также поддерживает отрисовку изображений различных форматов, таких как JPEG, BMP и PNG. Этот уровень также включает в себя движок шрифтов, ответственный за отрисовку на экране шрифтов и текста. Движок шрифтов поддерживает шрифты типа true-type и растровые.

Nano-X поддерживает два различных уровня API. Оба уровня API работают поверх ядра графического движка и драйвера устройств. Один набор очень похож на API X Lib, и, следовательно, называется Nano-X. Другой уровень API похож на API Microsoft Win32 и WinCE и, следовательно, называется Microwindows. В связи с такой поддержкой двух API, программистам обоих миров SDK, X и WIN32, предоставляется большое преимущество и им требуется небольшое обучение, или вообще его не требуется. Уровень API Nano-X базируется на X и по сути имеет клиент-серверную модель. Nano-X сервер является отдельным процессом, в котором работает   серверный код. Приложение, клиент Nano-X, работает как отдельный процесс и связан со специальной библиотекой, которая предоставляет связь с сервером на сокетах UNIX/IPC. Существует также возможность связать клиент и сервер вместе в форме одного приложения. Это осуществляется удалением IPC. API Microwindows, с другой стороны, базируется на модели SDK Win32. Microwindows в основном имеет механизм передачи сообщений, очень похожий на своего коллегу в Windows. Большинство оконных объекты и методов  имеют те же структуры, как в SDK Windows. Обратитесь к документу об архитектуре, доступном на http://www.microwindows.org/.

 

Приступаем к работе с Nano-X

 

1.Получите последнюю версию исходного кода: на время написания, последней версией является Nano-X v0.91, она доступна на ftp://microwindows.censoft.com/pub/.

2.Скомпилируйте: разархивируйте исходники (скажем, в /usr/local/microwin). Смените каталог cd src/Configs/. Этот каталог  содержит заранее созданные файлы конфигураций для различных платформ. Выберите подходящий для вашей платформы и скопируйте его в microwin/src/config. Каждая запись в файле конфигурации имеет хорошее количество комментариев. Это даст вам понимание гибкости конфигурации, которую предоставляет эта миниатюрная оконная среда. Для начала работы мы скомпилируем её для i386. Разрешите опцию X11, установив X11=Y. Это гарантирует, что мы сможем запускать Nano-X просто как одно из приложений X11. Движок шрифтов Nano-X поддерживает широкий набор форматов шрифтов, включая true-type (контурные) шрифты и растровые шрифты. Чтобы предоставить поддержку файлов TTF, движок шрифтов использует внешние библиотеки, такие как Freetype-1, Freetype-2, и другие. Выберите систему отрисовки шрифтов, доступную на вашем ПК, наиболее вероятно - Freetype-2. Наконец, компилируйте, используя make в каталоге microwin/src.

3.Запустите демо: после того, как компиляция закончилась, запустите демонстрационную программу в каталоге microwin/src, запустив ./demo2.sh. Этот скрипт запускает сервер Nano-X и некоторые примеры клиентских программ.

 

Каталог src/demos содержит много примеров программ с разными уровнями сложности. Необходимо просмотреть по крайней мере несколько из них, чтобы познакомиться с программированием Nano-X.

 

Создание типового приложения Nano-X

 

Распечатка 9.4 - это простое приложение Nano-X, которое просто рисует прямоугольник.

Скомпилируйте программу используя команду

 

#gcc simple.c –o simple –I$(MICROWINDIR)/src/include –lnano-x

 

Перед стартом приложения необходимо запустить сервер Nano-X.

 

#nano-X &; simple

 

Любое приложение-клиент Nano-X должно сначала вызвать GrOpen(), чтобы соединиться с сервером Nano-X. После того, как подключение успешно установлено, приложение создаёт окно размером 200 на 100 в координате (100 100), используя функцию GrNewWindow(). Граница, определённая для окна, имеет ширину в 5 пикселей с красным цветом бордера и белым цветом заливки  окна. Затем окно отображается на экране с использованием GrMapWindow(). Отображение окна на экран сопровождается  наиважнейшим “циклом сообщений” программы. Вызов GrGetNextEvent() проверяет, есть ли доступное для чтения сообщение от мыши, клавиатуры или графического интерфейса пользователя. Хотя этот пример приложения не обрабатывает какие-либо события, приложения должны будут соответственно реагировать в ответ на эти различные события. Для получения дополнительной информации о программировании Microwindows обращайтесь к различным справочным материалам на http://www.microwindows.org.

 

Инструментарий Nano-X

 

Простые приложения с графическим интерфейсом не требуют никакого инструментария и не должно быть проблем написать их в Nano-X. В этом разделе мы обсуждаем дополнительные инструментарии, доступные поверх Nano-X.

У FLTK (Fast Light Tool Kit, Быстрый Лёгкий Набор Инструментов) есть порт для Nano-X под названием FLNX. FLTK обеспечивает абстракцию C++ поверх API Nano-X. FLTK также предоставляет дизайнер GUI под названием Fluid, который может использоваться для проектирования форм графического интерфейса. Комбинация Nano-X/FLTK рекомендована и проверена; много встраиваемых приложений успешно использовали эту комбинацию. Например, браузер ViewML - реализация HTML браузера с использованием этой самой комбинации.

NXLIB (Nano-X/X-lib Compatibility Library, Библиотека для Совместимости Nano-X/X-lib) позволяет бинарным программам X11 работать с использованием сервера Nano-X без модификаций. Это означает, что многие из полнофункциональных приложений, которые работают на X-сервере, заработали бы на сервере Nano-X с небольшими изменениями или вообще без них. NXLIB не полная замена X-lib, потому что она обеспечивает только подмножество API X-lib. NXLIB поможет уменьшить время портирования огромных приложений, которые были написаны используя другие инструментарии, построенные поверх X-lib. Например, программа, написанная с использованием Gtk-X, будет работать на Nano-X без больших изменений кода.

Предыдущая  Содержание  Следующая