Микроокна - Microwindows

В вычисление, Nano-X это оконная система который достаточно полнофункциональный, чтобы его можно было использовать на ПК, Встроенная система[1][2] или КПК.[3][4] Это Открытый исходный код Проект, направленный на привнесение функций современных графических оконных сред на небольшие устройства и платформы. Проект был переименован с Микроокна из-за юридических угроз со стороны Microsoft в отношении Windows товарный знак.

Обзор

Оконная система Nano-X чрезвычайно портативна и полностью написана на C. Он был перенесен на 16-, 32- и 64-битные процессоры Intel, Broadcom BCM2837 ARM Cortex-A53, а также MIPS R4000 (NEC Vr41xx) Сильная рука и PowerPC микросхемы, встречающиеся в портативных и карманных компьютерах.

В настоящее время оконная система Nano-X работает на Linux системы с кадровый буфер ядра поддержку или используя X11 драйвер, который позволяет запускать приложения Microwindows поверх Рабочий стол X Window. Этот драйвер эмулирует все Микроокна. истинный цвет и палитра режимы, так что приложение может быть предварительно просмотрено с использованием характеристик дисплея целевой системы непосредственно на дисплее рабочего стола, независимо от характеристик дисплея рабочего стола. Кроме того, он был перенесен на Windows, Emscripten, Android (на основе Аллегро библиотека), и MS-DOS. Драйверы экрана для микроокон написаны на основе SDL1 и SDL2 библиотеки плюс Аллегро и SVGALib библиотеки. Также есть VESA и VGA 16-цветный водитель 4-х самолетов.

Архитектура

Многослойный дизайн

Микроокна Архитектура

Микроокна - это, по сути, многоуровневый дизайн, который позволяет использовать или переписывать разные слои в соответствии с потребностями реализации.[5] На самом низком уровне экран, мышь /тачпад и клавиатура драйверы обеспечивают доступ к актуальным отображать и другое оборудование для ввода данных пользователем. На среднем уровне реализован переносной графический движок, обеспечивающий поддержку рисования линий, заливки областей, многоугольников, отсечения и цветовых моделей. На верхнем уровне реализованы три API, обеспечивающие доступ к программисту графических приложений. В настоящее время Microwindows поддерживает Xlib, Nano-X и Windows. Win32 /WinCE GDI API. Эти API-интерфейсы обеспечивают тесную совместимость с Win32 и X Window системы, однако, с ограниченной функциональностью. Эти API позволяют легко переносить программы из других систем.

Драйверы устройств

Интерфейсы драйверов устройств определены в device.h. Данная реализация Microwindows связывает с системой по крайней мере один драйвер экрана, мыши и клавиатуры. Подпрограммы среднего уровня в ядре аппаратно-независимого графического ядра затем вызывают драйвер устройства напрямую для выполнения операций, зависящих от оборудования. Эта настройка позволяет добавлять в систему Microwindows различные аппаратные устройства, не влияя на работу всей системы.

Интерфейсы прикладного программиста

Микроокна в настоящее время поддерживают три разных интерфейсы прикладного программирования (API). Этот набор процедур обрабатывает клиентсервер Мероприятия, оконный менеджер такие действия, как рисование строк заголовка, закрывающих окон и т. д., а также обработка запросов программиста на вывод графики. Эти API работают поверх основных процедур графического ядра и драйверов устройств.

NX11 API

NX11 API совместим с X Window API. Он основан на Nano-X API и предоставляет функции Xlib, используя функции, доступные в Nano-X API. Его можно скомпилировать как отдельную библиотеку или вместе с библиотекой Nano-X как единую библиотеку под названием libPX11. Всего он предоставляет 180 функций Xlib и заглушки для дополнительных, не реализованных функций.

На основе NX11 API ФЛТК графический интерфейс пользователя библиотеку можно использовать для предоставления GUI для прикладных программ. В Нанолинукс В дистрибутиве используются NX11 API и FLTK для реализации операционной системы Linux с использованием 19 МБ дискового пространства.

Nano-X API

Точка доступа Nano-X смоделирована на основе сервера mini-x, первоначально написанного Дэвидом Беллом, который был повторной реализацией X на МИНИКС Операционная система. Он примерно соответствует API Xlib системы X Window, но все имена принадлежат GrXXX (), а не X ... (). Базовая модель любого API поверх Microwindows - инициализировать драйверы экрана, клавиатуры и мыши, а затем зависнуть в цикле select () в ожидании события. Когда происходит событие, если это системное событие, такое как активность клавиатуры или мыши, эта информация передается в программу пользователя, преобразованную в событие экспонирования, сообщение рисования и т. Д. Если это пользователь, запрашивающий графическую операцию, тогда параметры декодируются и передаются в соответствующую процедуру механизма GdXXX. Обратите внимание, что концепция окна по сравнению с необработанными графическими операциями обрабатывается на этом уровне API. То есть API определяет концепции окна, системы координат и т. Д., А затем все координаты преобразуются в «экранные координаты» и передаются в основные подпрограммы механизма GdXXX для выполнения реальной работы. Этот уровень также определяет графические или отображаемые контексты и передает эту информацию, включая информацию об отсечении, в подпрограммы ядра.

Микроокна API

API, который пытается соответствовать стандартам Microsoft Win32 и WinCE GDI, - это Microwindows API.[6] В настоящее время поддерживается большинство процедур рисования и обрезки графики, а также автоматическое рисование строки заголовка окна и перетаскивание окон для перемещения. API-интерфейс Microwindows основан на сообщениях и позволяет писать программы без учета возможных политик управления окнами, реализуемых системой. API Microwindows в настоящее время не является клиент-серверным.

Основным механизмом связи в API Microwindows является сообщение. Сообщение состоит из хорошо известного номера сообщения и двух параметров, известных как wParam и lParam. Сообщения хранятся в очереди сообщений приложения и извлекаются с помощью функции GetMessage. Приложение блокируется в ожидании сообщения. Есть сообщения, которые соответствуют аппаратным событиям, например WM_CHAR для ввода с клавиатуры или WM_LBUTTONDOWN для нажатия кнопки мыши. Кроме того, отправляются события, сигнализирующие о создании и разрушении окна WM_CREATE и WM_DESTROY. В большинстве случаев сообщение связано с окном, обозначенным как HWND. После получения сообщения приложение отправляет сообщение в процедуру обработки связанного окна с помощью DispatchMessage. Когда создается класс окна, указывается соответствующая процедура обработки сообщений, поэтому система знает, куда отправить сообщение.

Архитектура передачи сообщений позволяет базовому API управлять многими системными функциями, отправляя сообщения о всех видах событий, таких как создание окна, необходимость рисования, перемещение и т. Д. По умолчанию связанная функция обработки окна получает "первый проход" в message, а затем вызывает функцию DefWindowProc, которая обрабатывает действия по умолчанию для всех сообщений. Таким образом, все окна могут вести себя одинаково при перетаскивании и т. Д., Если это специально не отменено пользователем. Основные политики управления окнами можно переопределить, просто повторно реализовав DefWindowProc, а не внося изменения во всей системе.

Основной единицей организации экрана в Microwindows API является окно. Windows описывает область экрана для рисования, а также связанную с ней «оконную процедуру» для обработки сообщений, предназначенных для этого окна. Программисты приложений могут создавать окна из предопределенных классов, таких как кнопки, поля редактирования и т.п., или определять свои собственные классы окон. В обоих случаях метод создания окон и взаимодействия с ними остается неизменным.

История

Происхождение Nano-X связано с NanoGUI. NanoGUI был создан Алексом Холденом, взяв сервер mini-X Дэвида Белла и модификации Алана Кокса и добавив сеть клиент / сервер. Затем Грегори Хаэрр заинтересовался проектом NanoGUI и начал вносить значительные улучшения и модификации в NanoGUI. В районе версии 0.5, Грегори Хаэрр добавили поддержку нескольких API и начали распространять Микроокна. В Microwindows 0.84 были включены все предыдущие изменения NanoGUI, и с тех пор это объединенный дистрибутив NanoGUI / Microwindows. В январе 2005 года система сменила название на Nano-X Window System. Поскольку Nano-X слабо следует API Xlib системы X Window, был разработан дополнительный интерфейс под названием NXlib, который предоставляет API-интерфейс, совместимый с Xlib, на основе Nano-X.

Рекомендации

  1. ^ С. Веллхёфер, Embedded Linux mit Nano-X
  2. ^ Микроокна 0.9 на ARM Linux
  3. ^ «Установка Микроокон на iPAQ». В архиве из оригинала от 16.04.2007. Получено 2007-04-16.
  4. ^ "Роял Лин @ х КПК". В архиве из оригинала от 22 мая 2007 г.. Получено 2007-05-22.
  5. ^ П. Рагхаван, Проектирование и разработка встроенных систем Linux
  6. ^ Linux + Микроокна: претендент на WinCE

внешняя ссылка