|
|
С момента выхода в свет, Photon microGUI служил опорной технологией для ряда новых продуктов QNX. Представьте себе, некоторые из этих продуктов могли быть сделаны в другой графической системе, поддерживаемой QNX: X Window System. Но X просто требует слишком много памяти для большинства встраиваемых систем. Таким образом, Photon был наилучшим выбором, но не только из-за его размера. Как Вы увидите далее, Photon обладает гибкостью по отношению к работе с графическими оболочками других ОС, позволяет запускать приложения Win32, предоставляет работу практически на любом письменном языке и многое другое.
Крупное достижение во взаимодействии
Photon помог нам создать разнообразие решений по организации связей с другими системами, включая Phindows ( отображение Photon в Windows), Phinx ( отображение Photon в X) и QwinPh ( отображение QNX Windows в Photon).
Другая новая разработка – это XinPh (X Windows в Photon), который уже выпущен для бета тестирования. Используя XinPh, Вы можете просматривать и управлять локальными или удаленными приложениями X прямо с экрана Photon или из окна Phindows на Windows 95 или NT. Также, Вам будет намного проще настраивать X, так как XinPh позволяет Вам использовать возможности авто- конфигурации Photon. В добавок, Ваши X программы получают полный доступ к богатому набору графических драйверов и драйверов устройств ввода.
Для ввода в работу XinPh, мы заменили уровень графических драйверов и драйверов устройств ввода внутри Х на вызовы к библиотеке Photon. Это позволило Х серверу выглядеть как любое другое приложение Photon. Благодаря гибкой 24-битной модели цветов Photon, модели цветов, используемые X сервером, могут без проблем отображаться в среде Photon.
Протокол Photon
Многие из технологий удаленного доступа, которые я описывал выше, используют протокол Photon. В сущности, этот протокол дает возможность графическому процессу, с одной стороны распределенной сессии Photon, взаимодействовать с процессом вывода на экран с другой стороны, через любое соединение, которое только бывает.
Когда Вы отображаете графический интерфейс приложений на удаленной системе, Вы должны столкнуться с главной проблемой: пропускная способность, которую приложение ожидает от экранного буфера изображения, часто должна быть выше, чем может обеспечить последовательный порт или сетевое соединение. Для преодоления этого ограничения пропускной способности, протокол Photon тщательно оптимизирован в трех основных областях: эффективность протокола вывода на экран, управление КЭШем и сжатие данных.
Эффективный вывод на экран
В Photon сам протокол рисования содержит конструкции очень высокого уровня для таких элементов, как объекты со скошенными гранями (beveled objects), тренды (trend graphs), блиты (blits) и т. д. Смысл всего этого в том, чтобы выразить высокоуровневые графические конструкции в как можно меньшем количестве байт. В результате, любой отображаемый элемент имеет заранее определенное “ состояние”, например толщину линии, тип линии, шрифт, цвет и заливку. Для представления нового графического объекта, протокол рисования должен знать только, каким образом объект должен отличаться от состояния, определенного по умолчанию.
Управление КЭШем
Вторая область оптимизации содержит управление КЭШем. Во время работы протокола Photon, все графические объекты, которые могут быть нарисованы и сохранены на удаленной стороне соединения – графические имиджи, шрифты, палитры и т. д. – помечены посылающей стороной уникальными 32-битными CRC и в 32-битном формате. ( Если Вы используете PhAB, то он будет предварительно отмечать графические объекты Вашего приложения, поэтому эти метки не будут вычисляться во время работы.) Затем, во время работы сессии, эти помеченные объекты кэшируются. Если требуется нарисовать объект, и он еще не находится в удаленном КЭШе, то протокол вначале посылает объект, а потом вызывает его из КЭШа.
Если кэш переполнен, то удаленная сторона удаляет объекты, используя алгоритм LRU, а затем отсылает уведомление об удалении объектов из КЭШа отправляющей стороне. В результате, отсылающая сторона всегда осведомлена обо всех “ запасах” КЭШа.
Кэш представляет собой область оперативной памяти, размер которой может быть настроен пользователем. Данные этой области могут подкачиваться и откачиваться в определенную область диска, размер которой, также, настраивается по усмотрению пользователя. Так как дисковый кэш постоянен, он предлагает дополнительную услугу: вторая сессия может быть запущена намного быстрее, чем первая, так как не нужно заново посылать все объекты, уже хранящиеся в КЭШе.
Гибкое сжатие данных
Последним аспектом оптимизации протокола является сжатие данных. Протокол Photon самостоятельно выбирает нужные алгоритмы сжатия, в зависимости от скорости и типа связи. Для связей с выборочной скоростью протокол применяет Run Length Limited (RLL) компрессию, операцию с маленьким объемом вычислений, а для медленных каналов, которые получают выигрыш от высокого коэффициента сжатия, он использует Byte Pair Encoding (BPE) алгоритм. BPE очень интересный алгоритм сжатия: в то время, как для сжатия данных привлекаются незначительные усилия, затраты на расчеты для декомпрессии совсем тривиальны. Именно поэтому мы используем BPE в наших файловых системах для flash устройств.
Инструмент для переноса приложений Win32
Еще одна ключевая технология, которую Photon позволяет нам реализовать – это Willows RT toolkit, который дает Вам возможность переносить приложения Win32 под QNX. В результате, Вы можете использовать в Ваших разработках как исходные коды POSIX, так и Win32.
Новые возможности в Photon 1.1
Самая последняя версия Photon 1.1, предлагает много новых возможностей:
- расширенная widget библиотека
- менеджер шрифтов для растровых и векторных шрифтов и для сглаживаемых шрифтов формата Bistream.
- полная поддержка UTF-8 Unicode
- более богатая библиотека графических драйверов с возможностью автоматического определения возможностей аппаратного обеспечения
- поддержка QNX/Neutrino
- Phindows (Photon в Windows)
- личный информационный администратор (PIM)
- файловый менеджер
- многочисленные расширения к PhAB, Photon Application Builder.
- приставка для поддержки японского языка с полной поддержкой шрифтов и обработкой ввода
Масштабируемые шрифты
Кроме поддержки растровых шрифтов, Photon теперь поддерживает масштабируемые шрифты, основанные на технологии масштабируемых шрифтов Bistream. Эти масштабируемые шрифты поддерживают сглаживание, так что Вы теперь можете использовать легко читаемые символы даже на таких устройствах вывода, как LCD табло и телевизорах, подключенных к Internet.
Photon 1.1 также поддерживает кодировку Latin-1 ( Швейцарские и Нидерландские шрифты, нормальные, наклонные, жирные, наклонные жирные), все это входит в 160K компактный файл ресурса шрифтов (PFR). Photon 1.11 будет поддерживать кодировки Latin Extended-A и Latin Extended-B. Вместе эти кодировки позволят Вам работать с более чем с 30 языками мира.
Нужна поддержка Японских шрифтовЖ Наш дополнительный Японский набор предлагает Вам два варианта: растровый файл размером 450К, включающий себя только растровые 14-ти точечные шрифты и 4M файл с масштабируемыми шрифтами Mincho. В результате, Вы можете использовать Японские шрифты как в во встраиваемых, так и в настольных приложениях. Кроме шрифтов, Японское дополнение включает в себя процессор, который переводит ввод с клавиатуры в нужные выводимые символы.
Все шрифты Photon работают, используя процесс Администратора Шрифтов, доступный с поддержкой или без поддержки масштабируемых шрифтов (30K и 90K кода).
Еще одна деталь. Мы хотели, как можно больше облегчить работу с новыми возможностями работы со шрифтами, предлагаемыми Photon. Поэтому мы расширили PhAB редактором ресурсов языков, который позволяет Вам настраивать приложения для определенных регионов. Вводите слова и фразы на любом языке, который Вы хотите поддерживать, а затем, перед запуском приложения, просто установите нужные переменные языка.
Новая технология графических драйверов
Photon 1.1 также включает в себя расширенную технологию графических драйверов. Кроме поддержки большего количества графических адаптеров, мы “ разделили” наши графические драйвера так, что код, который переключает контроллер, в нужный графический режим теперь располагается в отдельном модуле. В результате, мы теперь можем легко добавлять поддержку новых графических адаптеров, просто добавив новый модуль, который работает с существующим графическим драйвером. Новые драйверы Photon поддерживают 24-, 16-, 15- и 8-битовые режимы цветовой палитры.
Новый набор программ для Internet
Photon теперь поддерживает QNX Internet Suite, который в данный момент находится в стадии бета тестирования. Специально разработанный для встроенных систем с малым объемом памяти, этот набор содержит Web -броузер Spyglass, графический e-mail и клиент новостей, и личный информационный администратор (PIM).
Модульный Web -броузер
В отличие от ограниченных броузеров, существующих на многих конкурирующих платформах, продукт Spyglass – это броузер с полной поддержкой HTML 3.2. Он также имеет модульную структуру, так что Вы можете настраивать его даже для самых маленьких систем реального времени. К примеру, полный броузер занимает 480К, но если выкинуть FTP, gopher и еще несколько возможностей, то Вы можете уменьшить объем до 300К.
Пока несколько наших конкурентов тоже приобрели лицензию на технологию Web -броузера компании Spyglass, мы думаем, что наша реализация будет лучшей на сегодняшний день. ПочемуЖ По одной причине. Наши конкуренты вводят в работу этот броузер под X Window System, который, для большинства встраиваемых систем, слишком велик. Наша реализация Spyglass под Photon обеспечивает работу на значительно более компактных платформах.
Более того, мы разделили Spyglass броузер на два процесса: один обеспечивает пользовательский интерфейс броузера, а другой выполняет всю внутреннюю работу броузера. Процесс, реализующий пользовательский интерфейс доступен в полных исходных кодах, позволяя Вам настраивать вид и работу интерфейса. В результате, Вы можете настраивать броузер так, чтобы им могли управлять различные устройства ввода, начиная от сенсорного экрана для стенда Web -терминала и кончая дистанционным управлением set-top box.
Настраиваемый номеронабиратель
В набор программ для Internet входит настраиваемая утилита Internet dialer/PPP, которая обеспечивает пользователю графический интерфейс для настройки ISP соединения. Утилита также показывает время соединения и выводит состояние набора номера и активности модема. Мы предоставляем полные исходные коды, так что разработчики сами могут настраивать интерфейс.
Маленький объем
Каким образом Internet Suite умещается в маленьком объеме памятиЖ Мы уже создали для примера конфигурации, где QNX 4.23, TCP/IP, Photon, броузер Spyglass, e-mail клиент и набор разных демонстрационных программ вмещаются в 2M flash- памяти и 4M RAM- памяти! Как только мы перенесем этот набор под QNX/Neutrino, объем станет еще меньше.
Больше чем просто GUI
Итак, вот он перед Вами. Photon – это не просто компактный GUI, а прогрессирующая технология, являющаяся сокровищем для новых продуктов. Хотите ли Вы подключиться к рабочему столу или плыть по просторам сети, Photon предлагает гибкость, размер и возможности, необходимые Вам. Современные разработки лишь подтверждают потенциал Photon’a. В конце концов, какой еще встраиваемый GUI позволит Вам управлять приложениями Win32, подключаться к другим графическим системам или создавать приложения практически на любом языке мираЖ
Dan Hildebrand, Senior Architect (R&D), QSSL
Перевод: А. Николаев, C. Ющенко
|
|