Микроокна
Тема этой статьи Википедии может не соответствовать общему правилу по известности . ( октябрь 2018 г. ) |
В вычислительной технике Nano -X — это оконная система , достаточно полнофункциональная для использования на ПК , встроенная система. [1] [2] или КПК . [3] [4] Это проект с открытым исходным кодом, направленный на то, чтобы реализовать возможности современных графических оконных сред на небольших устройствах и платформах. Проект был переименован в Microwindows из-за юридических угроз со стороны Microsoft относительно товарного знака Windows .
Обзор
[ редактировать ]чрезвычайно портативна и полностью написана на C. Оконная система Nano- X Он был портирован на 16-, 32- и 64-разрядные процессоры Intel, Broadcom BCM2837 ARM Cortex-A53 , а также MIPS R4000 (NEC Vr41xx) StrongARM и PowerPC, на чипы установленные на карманных и карманных ПК.
Система Nano-X Window в настоящее время работает в Linux системах с поддержкой кадрового буфера ядра или с использованием драйвера X11 , который позволяет запускать приложения Microwindows поверх рабочего стола X Window . Этот драйвер эмулирует все режимы истинного цвета и палитры Microwindows , поэтому приложение можно предварительно просмотреть с использованием характеристик дисплея целевой системы непосредственно на дисплее рабочего стола, независимо от характеристик дисплея рабочего стола. Кроме того, он портирован на Windows , Emscripten , Android (на основе библиотеки Allegro ) и MS-DOS . Драйверы экрана Microwindow были написаны на основе библиотек SDL1 и SDL2, а также библиотек Allegro и SVGAlib . Также имеются драйвер VESA и VGA 16 цветов и 4 плоскостей.
Архитектура
[ редактировать ]Многослойный дизайн
[ редактировать ]Микроокна — это, по сути, многоуровневая конструкция, которая позволяет использовать или переписывать различные уровни в соответствии с потребностями реализации. [5] На самом низком уровне драйверы экрана , мыши / тачпада и клавиатуры обеспечивают доступ к реальному дисплею и другому оборудованию пользовательского ввода. На среднем уровне реализован портативный графический движок, обеспечивающий поддержку рисования линий, заливки областей, многоугольников, обрезки и цветовых моделей. На верхнем уровне реализованы три API, обеспечивающие доступ к программисту графических приложений. Xlib, Nano-X и Windows Win32 / WinCE В настоящее время Microwindows поддерживает API-интерфейсы GDI . Эти API обеспечивают тесную совместимость с системами Win32 и X Window , однако с ограниченной функциональностью. Эти API позволяют легко переносить программы из других систем.
Драйверы устройств
[ редактировать ]Интерфейсы драйвера устройства определены в файле device.h. Данная реализация Microwindows будет связывать с системой как минимум один драйвер экрана, мыши и клавиатуры. Подпрограммы среднего уровня в аппаратно-независимом графическом ядре затем напрямую вызывают драйвер устройства для выполнения операций, специфичных для оборудования. Эта настройка позволяет добавлять в систему Microwindows различные аппаратные устройства, не влияя на работу всей системы.
Интерфейсы прикладного программирования
[ редактировать ]В настоящее время Microwindows поддерживает три различных интерфейса прикладного программирования (API). Этот набор процедур обрабатывает клиент - серверную активность, действия оконного менеджера, такие как рисование заголовков, закрытие окон и т. д., а также обработку запросов программиста на вывод графики. Эти API работают поверх основных процедур графического движка и драйверов устройств.
NX11 API
[ редактировать ]API NX11 совместим с API X Window . Он основан на API Nano-X и предоставляет функции Xlib, используя функции, доступные в API Nano-X. Ее можно скомпилировать как отдельную библиотеку или вместе с библиотекой Nano-X как одну библиотеку под названием libPX11. Всего он предоставляет 180 функций Xlib и заглушки для дополнительных нереализованных функций.
На основе NX11 API FLTK библиотека графического пользовательского интерфейса может использоваться для предоставления графического интерфейса прикладных программ. Дистрибутив Nanolinux использует API NX11 и FLTK для реализации операционной системы Linux с использованием 19 МБ дискового пространства.
Нано-X API
[ редактировать ]API Nano-X создан по образцу сервера mini-x, первоначально написанного Дэвидом Беллом, который представлял собой повторную реализацию X в операционной системе MINIX . Он во многом соответствует Xlib API X Window System, но все имена имеют GrXXX(), а не X...(). Базовая модель любого API поверх Microwindows заключается в инициализации драйверов экрана, клавиатуры и мыши, а затем в цикле select() в ожидании события. Когда происходит событие, если это системное событие, такое как активность клавиатуры или мыши, эта информация передается пользовательской программе, преобразуемой в событие раскрытия, сообщение рисования и т. д. Если это пользователь, запрашивающий графическую операцию, то параметры декодируются и передаются в соответствующую процедуру механизма GdXXX. Обратите внимание, что концепция оконных и необработанных графических операций обрабатывается на этом уровне API. То есть API определяет понятия о том, что такое окно, каковы системы координат и т. д., а затем все координаты преобразуются в «экранные координаты» и передаются в основные процедуры движка GdXXX для выполнения реальной работы. Этот уровень также определяет графику или контексты отображения и передает эту информацию, включая информацию обрезания, в основные процедуры ядра.
API микроокна
[ редактировать ]API, который пытается соответствовать стандарту Microsoft Win32 и WinCE GDI, — это API Microwindows. [6] В настоящее время поддерживается большинство процедур рисования и обрезки графики, а также автоматическое рисование строки заголовка окна и перетаскивание окон для перемещения. API Microwindows основан на сообщениях и позволяет писать программы без учета возможных политик управления окнами, реализуемых системой. API Microwindows в настоящее время не является клиент-серверным.
Фундаментальным механизмом связи в API Microwindows является сообщение. Сообщение состоит из известного номера сообщения и двух параметров, известных как wParam и lParam. Сообщения хранятся в очереди сообщений приложения и извлекаются с помощью функции GetMessage. Приложение блокируется в ожидании сообщения. Существуют сообщения, соответствующие аппаратным событиям, например WM_CHAR для ввода с клавиатуры или WM_LBUTTONDOWN для нажатия кнопки мыши. Кроме того, отправляются события, сигнализирующие о создании и уничтожении окна WM_CREATE и WM_DESTROY. В большинстве случаев сообщение связано с окном, идентифицируемым как HWND. После получения сообщения приложение отправляет сообщение процедуре обработки соответствующего окна с помощью DispatchMessage. При создании класса окна указывается связанная с ним процедура обработки сообщений, поэтому система знает, куда отправить сообщение.
Архитектура передачи сообщений позволяет базовому API управлять многими системными функциями, отправляя сообщения о всех видах событий, таких как создание окна, необходимость рисования, перемещение и т. д. По умолчанию соответствующая функция обработки окна получает «первый проход» в сообщение, а затем вызывает функцию DefWindowProc, которая обрабатывает действия по умолчанию для всех сообщений. Таким образом, все окна могут вести себя одинаково при перетаскивании и т. д., если только это специально не переопределено пользователем. Основные политики управления окнами можно переопределить, просто повторно реализовав DefWindowProc, а не внося изменения во всю систему.
Основной единицей организации экрана в Microwindows API является окно. Windows описывает область экрана для рисования, а также связанную с ней «окнную процедуру» для обработки сообщений, предназначенных для этого окна. Программисты приложений могут создавать окна из предварительно определенных классов, таких как кнопки, поля редактирования и т.п., или определять свои собственные классы окон. В обоих случаях метод создания и взаимодействия с окнами остается одинаковым.
История
[ редактировать ]Происхождение Nano-X связано с NanoGUI. NanoGUI был создан Алексом Холденом путем использования сервера mini-X Дэвида Белла и модификаций Алана Кокса, а также добавления сети клиент/сервер. Затем Грегори Хаэрр заинтересовался проектом NanoGUI и начал вносить значительные улучшения и модификации в NanoGUI. Примерно в версии 0.5 Грегори Хаэрр добавил поддержку нескольких API и начал распространять Microwindows. В Microwindows 0.84 были включены все предыдущие изменения NanoGUI, и с тех пор это объединенный дистрибутив NanoGUI/Microwindows. В январе 2005 года система сменила название на Nano-X Window System. Поскольку Nano-X лишь частично следует API Xlib X Window System, был разработан дополнительный интерфейс под названием NXlib, который предоставляет API-интерфейс, совместимый с Xlib, на основе Nano-X.
Ссылки
[ редактировать ]- ^ С. Веллхёфер, Встроенный Linux с Nano-X
- ^ Микроокна 0.9 на ARM Linux
- ^ «Установка микроокна на iPAQ» . Архивировано из оригинала 16 апреля 2007 г. Проверено 16 апреля 2007 г.
- ^ «Роял Лин@х КПК» . Архивировано из оригинала 22 мая 2007 г. Проверено 22 мая 2007 г.
- ^ П. Рагхаван, Проектирование и разработка встраиваемых систем Linux
- ^ Linux + Microwindows: претендент на WinCE