Общий графический интерфейс - General Graphics Interface

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

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

Проект GGI и связанные с ним проекты, такие как KGI, в целом признаны мертвыми.[2]

Цели

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

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

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

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

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

История

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

Разработка scrdrv была мотивирована проблемами, вызванными сосуществующими, но не очень хорошо взаимодействующими графическими средами (в основном Икс и SVGAlib ) под операционной системой Linux в это время, что часто приводит к зависаниям, требующим перезагрузки. Первый дизайн scrdrv находился под сильным влиянием графической подсистемы расширителя DJ DOS и некоторых концепций из ЗДРАВОМЫСЛЯЩИЙ проект. Основная проблема, которую решила scrdrv, заключалась в том, что он предоставил драйвер режима ядра, который знал достаточно об оборудовании для видео, чтобы настроить режимы, что позволило перейти в нормальное состояние даже из испорченного или аварийного графического приложения.

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

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

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

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

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

Для GGI 2.0 KGI был выделен и стал отдельным проектом под названием Проект KGI. 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, Система 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 target, что позволяло запускать любое приложение как VNC-сервер.

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

Смотрите также

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

  1. ^ Loki Software, Inc; Джон Р. Холл (2001). Программирование игр для Linux. Пресс без крахмала. п. 56. ISBN  978-1-886411-49-4.
  2. ^ Ларабель, Майкл (3 июля 2011 г.). "Графический интерфейс ядра (KGI) практически мертв - Phoronix". www.phoronix.com. Получено 2019-06-08.
  3. ^ marc.info
  4. ^ linux-kongress.org

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