Общий графический интерфейс

редактировать
Общий графический интерфейс
Разработчик (и) Разработчики GGI
Стабильная версия 2.2.2 / 27 января 2007 г.; 13 лет назад (27.01.2007)
Тип Интерфейс прикладного программирования
Лицензия Лицензия MIT
Веб-сайтwww.ibiblio.org /ggicore/index.html

General Graphics Interface (GGI) был проектом, направленным на разработку надежной, стабильной и быстрой компьютерной графики системы, которая работает везде. Намерение состояло в том, чтобы позволить любой программе, использующей GGI, работать на любой поддерживаемой ею вычислительной платформе, требуя не более перекомпиляции. GGI - это бесплатное программное обеспечение с открытым исходным кодом в соответствии с требованиями лицензии MIT.

. Проект GGI и связанные с ним проекты, такие как KGI, обычно считаются мертвыми.

Содержание

  • 1 Цели
  • 2 История
  • 3 Состояние на 2006 г.
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки

Цели

Проект был изначально было задумано сделать переключение между виртуальными консолями, svgalib и подсистемами сервера отображения X в Linux более надежным. Целями были:

  • Переносимость через гибкий и расширяемый API для приложений. Это позволяет избежать раздувания приложений, получая только то, что они используют.
  • Переносимость в кросс-платформенной и бэкэнд-системе
  • Безопасность в том смысле, что требуется как можно меньше привилегий

Структура GGI реализуется набором портативных пространства пользователя библиотек, с массивом различных бэкэндов или целей (например, Linux framebuffer, X11, Quartz, DirectX ), из которых двумя наиболее фундаментальными являются LibGII (для обработки ввода) и LibGGI (для графического вывода). Все остальные пакеты добавляют функции к этим основным библиотекам и поэтому зависят от одной или обеих из них.

Некоторые цели разговаривают с другими целями. Их называют псевдо-целями. Псевдоцели можно комбинировать и работать как конвейер.

Один пример: display-palemu, например, эмулирует режим палитры в режимах truecolor. Это позволяет пользователям запускать приложения в режиме палитры даже на компьютерах, где в противном случае режим палитры был бы недоступен. display-tile разбивает большой виртуальный дисплей на множество более мелких частей. Вы можете распределить их по нескольким мониторам или даже пересылать по сети.

История

Андреас Бек и Штеффен Сигер основали Проект GGI в 1994 году после нескольких экспериментальных предшественников, которые были названы «scrdrv».

Разработка scrdrv была мотивирована проблемами, вызванными сосуществующими, но не очень хорошо взаимодействующими графическими средами (в основном X и SVGAlib ) под операционной системой Linux в то время что часто приводит к зависаниям, требующим перезагрузки. Первый дизайн scrdrv находился под сильным влиянием графической подсистемы расширителя DOS DJ и некоторых концепций проекта SANE. Основная проблема, которую решила scrdrv, заключалась в том, что он предоставлял драйвер режима ядра, который знал достаточно о видеооборудовании для настройки режимов, что позволяло перейти в нормальное состояние даже из неисправного или аварийного графического приложения.

Первая официальная версия появилась в 1995 году. Примерно в 1996 году GGI 1.0 был выпущен под лицензией LGPL. GGI состоял только из основной библиотеки с именем libggi. Он включал обработку ввода, набор 2-мерных графических примитивов и некоторые драйверы пользовательского пространства для графических плат, а также патч ядра Linux с интерфейсом пользовательского пространства для драйверов. Патч был известен как KGI, графический интерфейс ядра.

В 1997 году компания GGI полностью изменила дизайн. Многие новые идеи и решения из Linux сделали GGI тем, чем он стал в GGI 2.0, выпущенном в августе 2001 года в рамках выпуска MIT.

В 1998 году в списке рассылки ядра Linux шла большая война за включение KGI в ядро. Линус Торвальдс объяснил свои опасения по поводу GGI, заявив: «Я думаю, что X достаточно хорош» и выразил озабоченность по поводу общего направления GGI.

В это время еще одна дизайнерская идея под названием EvStack также добавила к огню. EvStack представлял собой практически полную переработку подсистемы ввода и вывода, которая позволяла событиям (таким образом, «Ev») проходить через «стек» модулей, которые можно настроить для управления ими. EvStack - очень мощная концепция, позволяющая, например, иметь две клавиатуры, подключенные к одной машине, одна работает с текстовой консолью на одном графическом адаптере, а другая - с графической консолью на другом (как было продемонстрировано на Linux-Kongreß ´97), и даже позволяет иметь разные раскладки клавиатуры на разных виртуальные консоли или подключение клавиатуры по сети. Однако это произошло ценой огромного патча для подсистемы ввода, который казался неприемлемым. Современная система событий ввода Linux позволяет программам (например, Xorg) получать события клавиатуры, кроме как через клавиатуру консоли, что позволяет выполнять операции multiseat.

На LinuxExpo 98 был проведен ряд выступлений о GGI, KGI и EvStack.

Для GGI 2.0 KGI был выделен в отдельный проект под названием The KGI Project. GGI 2.0 состоит из набора библиотек. Во время фазы бета-версии 2.0 в конце 1998 года лицензия на библиотеки была изменена с LGPL на лицензию в стиле MIT. Также была проделана большая работа над системой сборки для поддержки большего количества операционных систем. Он работал на FreeBSD, там был код для OpenBSD, NetBSD и даже MS-Windows, а также была некоторая поддержка для большего количества аппаратных платформ.

Обработка ввода перенесена в библиотеку libgii. Общий код GGI находился в libgg, вложенной библиотеке libgii. Основная графическая библиотека, libggi, имеет легкий набор графических примитивов, которые были достаточно распространены для написания любого графического приложения, в то время как API более высокого уровня перешел в другие библиотеки поверх libggi. Они были названы расширениями GGI. libggi поддерживает набор целей, большинство из которых специфичны для Linux: fbdev, X, aa, vcsa, terminfo и некоторые псевдо-цели, такие как tile, multi, palemu и trueemu. Расширения GGI содержат API более высокого уровня. libggiwmh обеспечивает функциональность только для оконных целей, в то время это был только X. libggimisc предоставлял некоторые базовые вещи, такие как vga splitline.

GGI 2.0.2 был выпущен в декабре 2002 года. Наиболее заметным для пользователей изменением был измененный с нуля бэкэнд X. Еще одним заметным изменением стало значительное улучшение документации. И последнее, но не менее важное: изменились циклы выпуска. Начиная с этого выпуска, было дерево разработки и стабильное дерево. Стабильное дерево открыто только для исправлений ошибок, дерево разработки получило имя, следуя схеме BSD, -current.

В ноябре 2004 г. было выпущено последнее исправление ошибки из стабильного дерева GGI 2.0.x в пользу нового стабильного дерева GGI 2.1.x.

GGI 2.1.x работает во многих операционных системах: GNU Hurd, Linux, * BSD, System V, Mac OS X и MS Windows. Добавлена ​​поддержка большего количества аппаратных платформ. NetBSD даже создал двоичный пакет для NetBSD / Vax! Была добавлена ​​новая библиотека GGI поверх libgii под названием libgiigic. Это позволяет сочетать действия пользователя с событиями во время выполнения.

GGI 2.2 был выпущен в декабре 2005 года. Автоматическое обнаружение целей было переработано и больше не ориентировано на Linux. GGI заменил свои целые типы данных типами ANSI C99 для большей переносимости. Добавлена ​​цель для кварца. Пользователи Mac OS X больше не зависят от X11, но по-прежнему могут использовать бэкэнд X11. Однако наиболее заметным для пользователя изменением стала поддержка статических ссылок в целях.

Последний выпуск - GGI 2.2.2, выпуск с исправлением ошибок в стабильной серии GGI 2.2.x. Он был выпущен в январе 2007 года.

Статус на 2006 год

Проект GGI продвигался к выпуску GGI 3.0. libgii была переработана. Обработка ввода была заменена моделью событий реактора, которая более гибкая, чем использование select () в файловом дескрипторе . Это также упростило драйверы ввода в целом, особенно для тех, кто не использует файловые дескрипторы, такие как input-quartz. libgg вынесена в отдельную библиотеку.

libggi объединила несколько целей в одну подслибту, multi с плиткой и монотекст с palemu. libggi также получила новую цель VNC, которая позволяла запускать любое приложение в качестве сервера VNC.

В GGI 3.0 механизм расширений был переработан с нуля, чтобы упростить взаимодействие между расширениями и основными библиотеками. Это потребовало небольшого изменения API.

См. Также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-21 14:32:49
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте