Поделиться в Facebook Поделиться ВКонтакте Поделиться в LinkedIn Опубликовать в Twitter

Графическая система Photon microGUI

Рабочий стол Photon 1.14

Графическое микроядро

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

При создании оконной системы Photon microGUI была применена архитектура микроядра, успешно воплощенная в QNX для создания POSIX-совместимой ОС для встроенных систем.

Микроядро Photon выполняется как маленький процесс (размер кода 45K), реализуя только несколько фундаментальных примитивов, которые внешние опциональные процессы используют для построения более высокого уровня функциональности оконной системы.

Для управления средой GUI, Photon создает 3-мерное "пространство событий" и ограничивается только оперированием регионами и выполнением отсечения и направления различных событий по мере их прохождения сквозь регионы в этом пространстве событий. События Photon и регистрация регионов реализованы как сообщения QNX определенного формата, что сообщает механизму пространства событий все возможности технологии FLEET.

Эта абстракция напоминает концепцию микроядра ОС, которое не поддерживает функции ввода/вывода для устройств или файловой системы, а полагается на внешние процессы, предоставляющие эти услуги высокого уровня. Это обеспечивает масштабируемость ОС и GUI, построенных на основе микроядра, по размеру и функциональности.

Графические драйверы

Configure Display Графические драйверы реализованы как процессы, которые помещают регион на переднем плане пространства событий. Из того, что графический драйвер просто помещает регион в пространство событий Photon, естественно следует, что одновременно могут быть запущены несколько графических драйверов для нескольких видеоадаптеров, при этом каждый драйвер будет иметь свой, чувствительный к событиям рисования, регион.

Эти регионы могут быть расположены рядом, либо перекрывать друг друга произвольным образом. Так как Photon наследует от QNX сетевую прозрачность, то приложения или драйверы Photon могут выполняться на любом узле сети, позволяя, таким образом, дополнительным графическим драйверам расширять графическое пространство Photon за счет физических дисплеев других компьютеров в сети. За счет перекрытия регионов графических драйверов, события рисования могут дублироваться на нескольких экранах.

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

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

Цветовая модель

Для представления цветов используется 24-битная RGB модель (по 8 бит для красного, зеленого и синего), что обеспечивает 16,777,216 цветов. В зависимости от используемого типа оборудования, драйвер либо непосредственно отображает 24-битный цвет, либо использует различные варианты смешивания цветов, чтобы отобразить требуемый цвет на оборудовании, поддерживающем меньшее число цветов.

Так как графические драйверы используют аппаратно-независимое представление цветов, то приложения могут работать без изменения на различном оборудовании, независимо от того, какую цветовую модель оно поддерживает. Это позволяет "перетаскивать" приложения с одного монитора на другой, не задумываясь о том, какая цветовая модель аппаратно реализована в каждом конкретном случае.

Масштабируемые шрифты

Конфигуратор шрифтов

В дополнение к поддержке растровых шрифтов, Photon также предлагает масштабируемые шрифты. Эти шрифты могут масштабироваться практически с любым размером точки и использовать технологию сглаживания (16 оттенков) для четкого и ясного отображения на экране с любым разрешением.

Масштабируемые шрифты в Photon поддерживаются быстродействующим сервером шрифтов, который загружает описания шрифтов, хранящиеся в сжатом виде в файлах *.pfr (Portable Font Resource, ресурсы переносимых шрифтов), и затем приводит вид символов в соответствие с любым размером точки и разрешением. Стоит отметить, что формат PFR обеспечивает более чем в два раза лучшее сжатие по сравнению с PostScript шрифтами.

Многоязычная поддержка Unicode

Photon разработан с учетом поддержки национальных символов. Следуя стандарту Unicode (ISO/IEC 10646), Photon предоставляет разработчикам возможность создавать приложения, поддерживающие основные мировые языки.

Unicode основывается на наборе символов ASCII, но использует 16-битную кодировку для полной поддержки многоязычного текста. Нет никакой необходимости прибегать к escape-последовательностям или управляющим кодам для задания любого символа любого языка. Заметьте, что кодировка Unicode обрабатывает все символы - алфавитные, идеограммы, специальные символы - абсолютно одинаковым образом.

Известная раньше как UTF-2, UTF-8 (от "8-битная форма") кодировка определяет использование символов Unicode в 8-битной среде UNIX.

Разработчики могут также воспользоваться собственной библиотекой Photon, функциями PxTranslate, которые выполнят различные преобразования наборов символов в/из UTF-8.

Поддержка печати

Photon предусматривает встроенную систему печати, основанную на наборе фильтров/конвертеров, обеспечивающих поддержку основных форматов и языков, применяемых для управления принтерами.

Поддерживаются форматы:

  • Postcript (язык управления,ставший стандартом, который используется почти всеми производителем принтеров);

  • PCL (принтеры Hewlett-Packard, Lexmark, некоторые принтеры Samsung, Canon);

  • ESC/P2 (принтеры Epson).

Photon также содержит виджет/диалог выбора принтера, облегчая печать из приложений.

Менеджер окон Photon

Добавление Менеджера окон превращает Photon в полнофункциональный настольный графический интерфейс (GUI). Менеджер окон не является обязательным и может отсутствовать в большинстве встроенных систем. Менеджер окон позволяет пользователям манипулировать окнами приложений, изменяя их размер, перемещая и минимизируя. Менеджер окон использует концепцию фильтрации событий. Он помещает дополнительные регионы за регионами приложений, на которых "нарисованы" элементы управления окнами. Так как вид и поведение интерфейса определяются заменяемым Менеджером окон, то можно реализовать различные виды пользовательских интерфейсов.

Библиотека виджетов. Photon Application Builder

Photon Application Builder

Photon предлагает библиотеку компонентов, называемых виджетами,- объектов, способных, в основном, автоматически управлять своим поведением без непосредственного программирования. В результате, завершенное приложение может быть быстро собрано из виджетов, с последующей привязкой C-кода к соответствующим callback-функциям виджетов.

Photon Application Builder (PhAB), который является частью системы разработки Photon, поддерживает широкую палитру виджетов в визуальной среде разработки:

  • базовые виджеты (например, кнопка);
  • виджеты-контейнеры (например, окно);
  • сложные виджеты (например, HTML-виджет).

Если стандартных виджетов Photon недостаточно, то можно создать свои собственные новые виджеты. В состав среды разработки Photon входит полная документация и примеры исходного кода для создания собственных виджетов. Существует возможность создавать подклассы существующих виджетов, чтобы обеспечить наследование их функциональности, или создать собственное дерево виджетов.

Используя PhAB, визуальное средство разработки приложений QNX Photon microGUI , можно создавать полнофункциональные пользовательские интерфейсы. PhAB позволяет быстро, в интерактивном режиме, создавать прототипы приложений без написания кода, подключать контекстно-зависимую помощь в формате HTML и переводить текстовые ресурсы приложения на иностранные языки без перекомпиляции программы. С помощью PhAB созданы большинство поставляемых вместе с Photon microGUI приложений - и даже сам PhAB.

Удалённый доступ к Photon из Windows XP при помощи Phindows

Phindows

Для системы Windows поставляется клиент удаленного интерфейса – Phindows, который позволяет взаимодействовать с Photon-приложением с удаленного рабочего стола через IP-сеть. Что дает возможность организациям, использующим Windows, но нуждающимся в уникальных возможностях, обеспечиваемых системой Photon, установить один QNX-сервер и получать прямой доступ к приложениям Photon с любого компьютера.

Phinx

Для X Window System клиентом удаленного пользовательского интерфейса Photon microGUI является драйвер phinx, реализующий протокол TCP/IP. Что позволяет запустить Photon в окне системы X Window на том же самом компьютере, где она работает, что дает возможность исполнять и отлаживать приложения для системы Photon, пользуясь привычными средствами среды X Window.

Можно запустить Photon внутри Photon, задав, например, для первой системы режим 1024x768 точек, для второй (внутри первой) - 800x600 точек, а для третьей (внутри второй) - 640x480 точек и т.д. Эта возможность очень полезна для отладки менеджеров, драйверов и т.п.

Заключение

Photon является классической реализацией графического пользовательского интерфейса на основе микроядра и "команды" взаимодействующих процессов, в отличие от монолитного подхода, характерного для других оконных систем. В результате Photon обладает уникальными характеристиками:

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

  • Photon обладает очень гибкой, наращиваемой архитектурой, которая позволяет разработчикам расширять возможности графического интерфейса в необходимом для своего приложения направлении.

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


Задать вопрос on-line Обсудить на форуме