Журнал LinuxFormat - перейти на главную

LXF71:Cairo

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая: == что такое... CAIRO?== ''Вообще-то это векторная графическая библиотека, которая перевернет наши представ...)
 
м (викификация)
Строка 1: Строка 1:
== что такое... CAIRO?==
+
== что такое… CAIRO? ==
 
''Вообще-то это векторная графическая библиотека, которая перевернет наши представления о том, как Linux-приложения осуществляют вывод на экран, но '''Ричард Драммонд''' расскажет вам все в деталях''
 
''Вообще-то это векторная графическая библиотека, которая перевернет наши представления о том, как Linux-приложения осуществляют вывод на экран, но '''Ричард Драммонд''' расскажет вам все в деталях''
  
 
; Расскажите мне о Каире.
 
; Расскажите мне о Каире.
С радостью. каир – столица Египта, самый крупный город на ближнем Востоке, построенный неподалеку
+
С радостью. Каир — столица Египта, самый крупный город на ближнем Востоке, построенный неподалеку
от руин древнего Мемфиса...
+
от руин древнего Мемфиса…
 
; Да, очень впечатляюще. Я имел в виду Каиро (Cairo), открытый проект. Он ведь как-то связан с X Window System?
 
; Да, очень впечатляюще. Я имел в виду Каиро (Cairo), открытый проект. Он ведь как-то связан с X Window System?
Ах, да! Cairo – новый двумерный графический инструментарий, разработанный, в основном, сотрудником Red
+
Ах, да! Cairo — новый двумерный графический инструментарий, разработанный, в основном, сотрудником Red
Hat карлом Вортом (Carl Worth) и легендарным X-хакером кейтом Пакардом (Keith Packard). Вы правы – изначально он был ориентирован на использование X-клиентами. Исходной задачей разработчиков было предоставить X-приложениям профессиональную систему для
+
Hat карлом Вортом (Carl Worth) и легендарным X-хакером кейтом Пакардом (Keith Packard). Вы правы — изначально он был ориентирован на использование X-клиентами. Исходной задачей разработчиков было предоставить X-приложениям профессиональную систему для
 
отрисовки, конкурирующую с Apple Quartz 2D для Mac OS
 
отрисовки, конкурирующую с Apple Quartz 2D для Mac OS
 
X. С тех пор, однако, Cairo превратился в кросс-платформенный продукт. Cairo, как и Quartz 2D, использует
 
X. С тех пор, однако, Cairo превратился в кросс-платформенный продукт. Cairo, как и Quartz 2D, использует
 
экранную модель, сходную с PDF 1.4.
 
экранную модель, сходную с PDF 1.4.
; где-то я все это уже слышал... тогда оно, по-моему, называлось Xr/Xc.
+
; где-то я все это уже слышал… тогда оно, по-моему, называлось Xr/Xc.
 
Да, именно так. Часть Xr в этом названии обязана своим
 
Да, именно так. Часть Xr в этом названии обязана своим
 
появлением расширению the X Rendering Extension или
 
появлением расширению the X Rendering Extension или
Строка 20: Строка 20:
 
работы Cairo.
 
работы Cairo.
 
; А зачем понадобилось менять имя?
 
; А зачем понадобилось менять имя?
По двум причинам. Первая: изменение имени иллюстрирует расширение целей проекта – теперь он ориентируется не только на X-приложения. В данный момент Cairo
+
По двум причинам. Первая: изменение имени иллюстрирует расширение целей проекта — теперь он ориентируется не только на X-приложения. В данный момент Cairo
 
можно использовать для вывода Quartz 2D, Windows GDI
 
можно использовать для вывода Quartz 2D, Windows GDI
 
и OpenGL, а также PostScript, PDF и PNG. Во-вторых, слово «Cairo» гораздо легче произнести.
 
и OpenGL, а также PostScript, PDF и PNG. Во-вторых, слово «Cairo» гораздо легче произнести.
Строка 27: Строка 27:
 
что Египет был колыбелью письменности.
 
что Египет был колыбелью письменности.
 
; А разве не Месопотамия?
 
; А разве не Месопотамия?
Мы считаем, что это тоже подходящее имя, поскольку векторный инструментарий, вроде Cairo, немыслим без геометрии. В свою очередь, наиболее яркие примеры прикладной геометрии в истории человечества
+
Мы считаем, что это тоже подходящее имя, поскольку векторный инструментарий, вроде Cairo, немыслим без геометрии. В свою очередь, наиболее яркие примеры прикладной геометрии в истории человечества -
 
это пирамиды в Гизе, расположенные в некрополе
 
это пирамиды в Гизе, расположенные в некрополе
 
Мемфиса на окраине современного К аира. Название
 
Мемфиса на окраине современного К аира. Название
 
«Cairo» располагает к выбору впечатляющих логотипов с
 
«Cairo» располагает к выбору впечатляющих логотипов с
 
жуками-скарабеями.
 
жуками-скарабеями.
; Вы сказали, что Cairo использует X Rendering Extension. Объясните, что это значит и почему это так важно.
+
; Вы сказали, что Cairo использует X Rendering Extension. Объясните, что это значит и почему это так важно.
 
Ну, как вы, вероятно, знаете, система X Window System
 
Ну, как вы, вероятно, знаете, система X Window System
 
допускает наращивание функционала посредством
 
допускает наращивание функционала посредством
Строка 38: Строка 38:
 
Render, который был разработан для замены устаревшей экранной модели X. Render предоставляет все функции, необходимые современным приложениям: альфасмешение, субпиксельное позиционирование и сглаживание шрифтов.
 
Render, который был разработан для замены устаревшей экранной модели X. Render предоставляет все функции, необходимые современным приложениям: альфасмешение, субпиксельное позиционирование и сглаживание шрифтов.
 
; Если Render действительно делает все это, то зачем тогда нужен Cairo?
 
; Если Render действительно делает все это, то зачем тогда нужен Cairo?
Трудность состоит в том, что Render – очень низкоуровневое решение. Он реализует несколько базовых примитивов: треугольники, трапеции и изображения. Это упрощает
+
Трудность состоит в том, что Render — очень низкоуровневое решение. Он реализует несколько базовых примитивов: треугольники, трапеции и изображения. Это упрощает
 
жизнь людей, пишущих драйвера устройств для X.
 
жизнь людей, пишущих драйвера устройств для X.
 
Поддержка аппаратного ускорения в Render также не
 
Поддержка аппаратного ускорения в Render также не
 
вызывает проблем, поскольку он делает как раз то, что
 
вызывает проблем, поскольку он делает как раз то, что
умеют современные графические чипсеты. Однако, нарисовать при помощи Render что-то высокоуровневое
+
умеют современные графические чипсеты. Однако, нарисовать при помощи Render что-то высокоуровневое -
 
весьма трудоемкая и сложная задача, и здесь на помощь
 
весьма трудоемкая и сложная задача, и здесь на помощь
приходит Cairo. О на берет на себя всю рутину – разбивает
+
приходит Cairo. О на берет на себя всю рутину — разбивает
 
нужные вам фигуры на примитивы, с которыми умеет
 
нужные вам фигуры на примитивы, с которыми умеет
 
работать Render.
 
работать Render.
; Постойте-постойте! Переносимость, аппаратное ускорение... Это же OpenGL получается!
+
; Постойте-постойте! Переносимость, аппаратное ускорение… Это же OpenGL получается!
 
Действительно, у Cairo и OpenGL много общего. Оба инструментария кросс-платформенные, оба поддерживают
 
Действительно, у Cairo и OpenGL много общего. Оба инструментария кросс-платформенные, оба поддерживают
 
аппаратное ускорение. Отличие состоит в том, что OpenGL
 
аппаратное ускорение. Отличие состоит в том, что OpenGL
Строка 55: Строка 55:
 
путями из прямых линий и кривых Б езье, которые можно
 
путями из прямых линий и кривых Б езье, которые можно
 
залить.
 
залить.
; Хмм... Что такое «кривая Безье»?.
+
; Хмм… Что такое «кривая Безье»?.
 
Не буду утомлять вас математическими деталями. В двух
 
Не буду утомлять вас математическими деталями. В двух
словах, кривая Б езье – это способ параметрического
+
словах, кривая Б езье — это способ параметрического
 
задания гладкой кривой. Положение точек параметрической кривой определяется значением одного параметра,
 
задания гладкой кривой. Положение точек параметрической кривой определяется значением одного параметра,
 
обычно обозначаемого буквой t. Чем больше значений t
 
обычно обозначаемого буквой t. Чем больше значений t
Строка 79: Строка 79:
 
(цвет линии). Все перечисленное напрямую зависит от
 
(цвет линии). Все перечисленное напрямую зависит от
 
устройства отображения. Стоит изменить глубину цвета и
 
устройства отображения. Стоит изменить глубину цвета и
экранное разрешение – и вам придется заново вычислять
+
экранное разрешение — и вам придется заново вычислять
 
координаты и подбирать новое значение цвета.
 
координаты и подбирать новое значение цвета.
  
Строка 93: Строка 93:
 
нужно точное отображение пикселей (например, для отрисовки виджетов пользовательского интерфейса), но вы
 
нужно точное отображение пикселей (например, для отрисовки виджетов пользовательского интерфейса), но вы
 
можете выбрать любой другой масштаб.
 
можете выбрать любой другой масштаб.
; Таким образом, Cairo – векторная и независимая от устройства система. В чем же ее отличие от PostScript?
+
; Таким образом, Cairo — векторная и независимая от устройства система. В чем же ее отличие от PostScript?
 
Не будет большим преувеличением сказать, что модель
 
Не будет большим преувеличением сказать, что модель
 
отображения Cairo основана на PostScript, так что здесь
 
отображения Cairo основана на PostScript, так что здесь
Строка 102: Строка 102:
  
 
Однако, с принципиальной точки зрения, Cairo и
 
Однако, с принципиальной точки зрения, Cairo и
PostScript весьма отличаются друг от друга. PostScript
+
PostScript весьма отличаются друг от друга. PostScript -
 
язык для описания страниц, то есть создания программ,
 
язык для описания страниц, то есть создания программ,
 
которые выводят информацию на бумагу или экран.
 
которые выводят информацию на бумагу или экран.
Строка 132: Строка 132:
 
разрешения.
 
разрешения.
  
Следует отметить, что Cairo – это не только геометрические фигуры и заливка. Это также вывод текста сглаженными шрифтами и преобразования (например, поворот и масштабирование) изображений. Правда, в момент
+
Следует отметить, что Cairo — это не только геометрические фигуры и заливка. Это также вывод текста сглаженными шрифтами и преобразования (например, поворот и масштабирование) изображений. Правда, в момент
 
написания настоящей статьи данный функционал еще не
 
написания настоящей статьи данный функционал еще не
 
был завершен.
 
был завершен.
Строка 157: Строка 157:
 
еще не оптимизирован, что неудивительно для столь
 
еще не оптимизирован, что неудивительно для столь
 
молодого проекта (имя Cairo было выбрано в 2003 году).
 
молодого проекта (имя Cairo было выбрано в 2003 году).
; Какие-то приложения уже используют Cairo? Посмотреть бы на него в деле...
+
; Какие-то приложения уже используют Cairo? Посмотреть бы на него в деле…
 
Cairo пока не существует в виде стабильного релиза, и
 
Cairo пока не существует в виде стабильного релиза, и
 
понятно, что его еще не используют производители ПО.
 
понятно, что его еще не используют производители ПО.
Строка 165: Строка 165:
 
использовать Cairo.
 
использовать Cairo.
 
; Например?
 
; Например?
Самым давним «соратником» Cairo является проект XSVG, разрабатывающий коллекцию утилит для работы с SVG в X и, по совместительству, являющийся «родиной» Xr/Xc. SVG – это основанный на XML формат для
+
Самым давним «соратником» Cairo является проект XSVG, разрабатывающий коллекцию утилит для работы с SVG в X и, по совместительству, являющийся «родиной» Xr/Xc. SVG — это основанный на XML формат для
 
хранения векторных изображений, так что он является
 
хранения векторных изображений, так что он является
 
естественной сферой применения Cairo.
 
естественной сферой применения Cairo.
Строка 178: Строка 178:
  
 
Впрочем, не стоит замыкаться на приложениях.
 
Впрочем, не стоит замыкаться на приложениях.
Waimea – первый оконный менеджер для X, использующий Cairo для отрисовки рамок. он был разработан
+
Waimea — первый оконный менеджер для X, использующий Cairo для отрисовки рамок. он был разработан
 
Дэвидом ревменом (David Reveman), автором библиотеки
 
Дэвидом ревменом (David Reveman), автором библиотеки
 
glitz, которая, как вы помните, используется Cairo для
 
glitz, которая, как вы помните, используется Cairo для
Строка 213: Строка 213:
 
официальный сайт проекта расположен по адресу http://www.cairographics.org и поддерживается карлом
 
официальный сайт проекта расположен по адресу http://www.cairographics.org и поддерживается карлом
 
Вортом. Здесь можно найти инструкцию, как выписать
 
Вортом. Здесь можно найти инструкцию, как выписать
Cairo из CVS. Проект пока не предоставляет пакетов – ни
+
Cairo из CVS. Проект пока не предоставляет пакетов — ни
 
двоичных, ни в исходных текстах. Из-за отсутствия стабильных релизов, Cairo не включается в дистрибутивы
 
двоичных, ни в исходных текстах. Из-за отсутствия стабильных релизов, Cairo не включается в дистрибутивы
 
Linux, однако, вы можете найти данный инструментарий в
 
Linux, однако, вы можете найти данный инструментарий в
 
дереве разработки вашего дистрибутива. Gentoo содержит
 
дереве разработки вашего дистрибутива. Gentoo содержит
Cairo 0.4.0, а Debian – 0.3.0, который уже не особенно
+
Cairo 0.4.0, а Debian — 0.3.0, который уже не особенно
 
актуален. Лучше всего выписать код из CVS и собрать
 
актуален. Лучше всего выписать код из CVS и собрать
 
Cairo самостоятельно. Это совсем не трудно.
 
Cairo самостоятельно. Это совсем не трудно.
Строка 228: Строка 228:
  
 
На самом деле, лучший способ познакомиться с
 
На самом деле, лучший способ познакомиться с
Cairo – это изучить код, который его использует.
+
Cairo — это изучить код, который его использует.
 
обратите внимание на модуль cairo-demos в CVS-дереве проекта. Некоторые из программ были написаны
 
обратите внимание на модуль cairo-demos в CVS-дереве проекта. Некоторые из программ были написаны
 
для старых версий Cairo, однако, это один из лучших
 
для старых версий Cairo, однако, это один из лучших
способов понять данный инструментарий. Списки рассылки Cairo (http://www.cairographics.org/lists) подходящее место для общения с разработчиками и другими
+
способов понять данный инструментарий. Списки рассылки Cairo (http://www.cairographics.org/lists) - подходящее место для общения с разработчиками и другими
 
пользователями.
 
пользователями.
 
; А когда выйдет Cairo 1.0?
 
; А когда выйдет Cairo 1.0?
 
когда он будет готов, разумеется!
 
когда он будет готов, разумеется!

Версия 20:36, 6 декабря 2008

что такое… CAIRO?

Вообще-то это векторная графическая библиотека, которая перевернет наши представления о том, как Linux-приложения осуществляют вывод на экран, но Ричард Драммонд расскажет вам все в деталях

Расскажите мне о Каире.

С радостью. Каир — столица Египта, самый крупный город на ближнем Востоке, построенный неподалеку от руин древнего Мемфиса…

Да, очень впечатляюще. Я имел в виду Каиро (Cairo), открытый проект. Он ведь как-то связан с X Window System?

Ах, да! Cairo — новый двумерный графический инструментарий, разработанный, в основном, сотрудником Red Hat карлом Вортом (Carl Worth) и легендарным X-хакером кейтом Пакардом (Keith Packard). Вы правы — изначально он был ориентирован на использование X-клиентами. Исходной задачей разработчиков было предоставить X-приложениям профессиональную систему для отрисовки, конкурирующую с Apple Quartz 2D для Mac OS X. С тех пор, однако, Cairo превратился в кросс-платформенный продукт. Cairo, как и Quartz 2D, использует экранную модель, сходную с PDF 1.4.

где-то я все это уже слышал… тогда оно, по-моему, называлось Xr/Xc.

Да, именно так. Часть Xr в этом названии обязана своим появлением расширению the X Rendering Extension или Render, которое, по мере возможностей, использовалось для отрисовки и альфа-смешения (полупрозрачности). Если сервер не поддерживал расширение Render, применялась часть Xc, которая выполняла все нужные действия на стороне клиента. Позже Xr превратилась в Cairo, а Xc вошла в состав библиотеки для управления пиксельными регионами libpixman, которая необходима для работы Cairo.

А зачем понадобилось менять имя?

По двум причинам. Первая: изменение имени иллюстрирует расширение целей проекта — теперь он ориентируется не только на X-приложения. В данный момент Cairo можно использовать для вывода Quartz 2D, Windows GDI и OpenGL, а также PostScript, PDF и PNG. Во-вторых, слово «Cairo» гораздо легче произнести.

Быть может, в этом имени есть какой-нибудь тайный смысл?

По словам карла Ворта, такое имя было выбрано потому, что Египет был колыбелью письменности.

А разве не Месопотамия?

Мы считаем, что это тоже подходящее имя, поскольку векторный инструментарий, вроде Cairo, немыслим без геометрии. В свою очередь, наиболее яркие примеры прикладной геометрии в истории человечества - это пирамиды в Гизе, расположенные в некрополе Мемфиса на окраине современного К аира. Название «Cairo» располагает к выбору впечатляющих логотипов с жуками-скарабеями.

Вы сказали, что Cairo использует X Rendering Extension. Объясните, что это значит и почему это так важно.

Ну, как вы, вероятно, знаете, система X Window System допускает наращивание функционала посредством дополнительных расширений. Одним из них является Render, который был разработан для замены устаревшей экранной модели X. Render предоставляет все функции, необходимые современным приложениям: альфасмешение, субпиксельное позиционирование и сглаживание шрифтов.

Если Render действительно делает все это, то зачем тогда нужен Cairo?

Трудность состоит в том, что Render — очень низкоуровневое решение. Он реализует несколько базовых примитивов: треугольники, трапеции и изображения. Это упрощает жизнь людей, пишущих драйвера устройств для X. Поддержка аппаратного ускорения в Render также не вызывает проблем, поскольку он делает как раз то, что умеют современные графические чипсеты. Однако, нарисовать при помощи Render что-то высокоуровневое - весьма трудоемкая и сложная задача, и здесь на помощь приходит Cairo. О на берет на себя всю рутину — разбивает нужные вам фигуры на примитивы, с которыми умеет работать Render.

Постойте-постойте! Переносимость, аппаратное ускорение… Это же OpenGL получается!

Действительно, у Cairo и OpenGL много общего. Оба инструментария кросс-платформенные, оба поддерживают аппаратное ускорение. Отличие состоит в том, что OpenGL предназначен для работы с трехмерными объектами, тогда как Cairo фокусируется на двумерных и не зависит от устройства отображения. К роме того, они используют различные экранные модели. OpenGL умеет выводить точки, линии и многоугольники, а Cairo оперирует замкнутыми путями из прямых линий и кривых Б езье, которые можно залить.

Хмм… Что такое «кривая Безье»?.

Не буду утомлять вас математическими деталями. В двух словах, кривая Б езье — это способ параметрического задания гладкой кривой. Положение точек параметрической кривой определяется значением одного параметра, обычно обозначаемого буквой t. Чем больше значений t вы возьмете, тем более гладкой будет выглядеть нарисованная кривая. В принципе, кривые Безье могут иметь любой порядок, хотя в компьютерной графике обычно используются квадратичные и кубические.

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

Довольно математики! До какой степени Cairo не зависим от устройства?

Cairo независим от устройства в том смысле, что вы можете осуществлять вывод во что угодно, не беспокоясь о разрешении и способе представления цвета. Cairo прячет от вас ненужные подробности.

А разве X зависим от устройства?

X переносим, но это не значит, что он независим от устройства. Средства отображения X оперируют с пикселями и их значениями. Например, если вы хотите нарисовать отрезок прямой, то должны сообщить X координаты пикселей в ее начале и конце, а также их значения (цвет линии). Все перечисленное напрямую зависит от устройства отображения. Стоит изменить глубину цвета и экранное разрешение — и вам придется заново вычислять координаты и подбирать новое значение цвета.

Cairo гораздо более абстрактен. Чтобы изобразить отрезок прямой линии, вам достаточно нарисовать отрезок между точками A и B нужного вам цвета. Чувствуете? Здесь нет никаких пикселей. О ни появляются лишь в тот момент, когда математическая кривая растеризуется на экране монитора на основании выбранного вами масштаба и разрешения устройства. С цветом все обстоит аналогичным образом. Вы выбираете подходящую цветовую модель, а Cairo решает, каким образом следует представить нужные вам цвета на устройстве вывода.

По умолчанию Cairo использует масштаб «1 точка:1 пиксель», что хорошо подходит для приложений, которым не нужно точное отображение пикселей (например, для отрисовки виджетов пользовательского интерфейса), но вы можете выбрать любой другой масштаб.

Таким образом, Cairo — векторная и независимая от устройства система. В чем же ее отличие от PostScript?

Не будет большим преувеличением сказать, что модель отображения Cairo основана на PostScript, так что здесь вы найдете эквиваленты практически для всех операторов языка PostScript. На самом деле, модель Cairo ближе к PDF 1.4, поскольку в ней присутствует понятие полупрозрачности.

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

Одним из плюсов сходства между Cairo и PostScript является дешевизна отрисовки Cairo в файл PostScript. Это позволяет приложениям легко создавать «твердые копии» того, что находится на экране. Т радиционно для этих целей приходится использовать специальную логику, которая переводит команды рисования вашей программы в PostScript или же вставлять в PS-документ растровое изображение и мириться с потерей качества. Приложения, использующие Cairo, могут выводить на печать первоклассные документы без каких-либо дополнительных усилий.

Все эти разговоры о геометрии и кривых Безье выглядят очень абстрактными. Я понимаю, что Cairo может помочь при разработке графического редактора вроде Inkscape, но захотят ли разработчики традиционных приложений использовать весь этот потенциал?

Конечно. Вспомните, что Cairo предназначен для замены традиционного инструментария X, а поэтому может использоваться любым приложением. Р ечь идет не только о сложных геометрических фигурах, хотя, безусловно, они Cairo «по зубам».

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

Следует отметить, что Cairo — это не только геометрические фигуры и заливка. Это также вывод текста сглаженными шрифтами и преобразования (например, поворот и масштабирование) изображений. Правда, в момент написания настоящей статьи данный функционал еще не был завершен.

А Cairo не замедлит работу X-приложений? Все это не выглядит слишком легким.

Нет. Даже наоборот, с помощью Cairo в принципе можно добиться ускорения приложений, работающих со сложной графикой, поскольку стандартный X-протокол не поддерживает альфа-смешения, так что всю работу приходится выполнять на стороне клиента и передавать на сервер готовую картинку. Например, библиотека libart предлагает возможности, сходные с Cairo, но при этом работает на стороне клиента, что исключает возможность аппаратного ускорения, так что вся нагрузка приходится на CPU.

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

К счастью, Cairo может осуществлять вывод посредством OpenGL. Это делается через библиотеку glitz, предоставляющую API, сходный с Render. Т аким образом, для трехмерных ускорителей, имеющих драйвера DRI, Cairo будет использовать графическое ускорение. Вам потребуется сравнительно свежий X-сервер, включающий одну из последних версий библиотеки Mesa3D. Если вас волнует скорость, имейте в виду, что Cairo еще не оптимизирован, что неудивительно для столь молодого проекта (имя Cairo было выбрано в 2003 году).

Какие-то приложения уже используют Cairo? Посмотреть бы на него в деле…

Cairo пока не существует в виде стабильного релиза, и понятно, что его еще не используют производители ПО.

однако существует множество демо-примеров, иллюстрирующих его возможности. более того, некоторые ведущие open-source проекты уже объявили о намерении использовать Cairo.

Например?

Самым давним «соратником» Cairo является проект XSVG, разрабатывающий коллекцию утилит для работы с SVG в X и, по совместительству, являющийся «родиной» Xr/Xc. SVG — это основанный на XML формат для хранения векторных изображений, так что он является естественной сферой применения Cairo.

кроме этого, началась работа по использованию Cairo в «движке» SVG, встроенном в пакет Mozilla. Последние рабочие сборки Firefox уже используют данный инструментарий. Подробности можно найти по адресу: http://www.mozilla.org/projects/svg. В дальнейшем разработчики планируют перевести на Cairo и другие части Mozilla, ответственные за вывод.

были поставлены кое-какие эксперименты по использованию Cairo в OpenOffice.org. Естественными кандидатами здесь являются программы Draw и Impress.

Впрочем, не стоит замыкаться на приложениях. Waimea — первый оконный менеджер для X, использующий Cairo для отрисовки рамок. он был разработан Дэвидом ревменом (David Reveman), автором библиотеки glitz, которая, как вы помните, используется Cairo для работы с OpenGL. См. http://freedesktop.org/wiki/Software_2fwaimea.

Занятно, но есть ли какие-либо примеры использования Cairo в библиотеках для создания GUI?

Да. Проект GTK объявил о своем намерении использовать Cairo. такая возможность была включена в версию 2.8.0. Имеется несколько примеров, демонстрирующих использование Cairo из GTK, в том числе, «движок» визуальных тем, который применяет Cairo для векторной отрисовки виджетов, а также gtkcairo, «холст» (canvas), на котором можно рисовать с помощью операторов Cairo.

А что насчет Qt?

Qt 4.0 включает новую графическую подсистему (известную как Arthur), которая во многом сходна с Cairo и может использовать расширение Render в X. Arthur поддерживает множество инструментов рендеринга и вполне сможет работать и с Cairo.

Я разработчик. Какие языки программирования поддерживаются Cairo?

Любые, для которых существуют привязки (bindings). Сам Cairo написан на C и, естественно, вы можете использовать этот язык. Привязки для C++, Java, Python и Ruby находятся на различных стадиях разработки.

Я уже могу начинать использовать Cairo в своих приложениях?

Да, но учтите, что интерфейс прикладного программирования (API) Cairo сформирован не полностью, так что, к моменту выпуска версии 1.0 обратная совместимость может быть нарушена. Это уже случалось. Например, текущая CVS-версия (0.5.0) не может использоваться для сборки приложений, написанных для Cairo 0.4.0. Если вас это не смущает, Cairo вполне готов к использованию.

По какой лицензии распространяется Cairo?

По двойной: LGPL или Mozilla Public License (MPL). Это свободное По, но оно может использоваться вместе с проприетарным, если вы выполняете требования лицензии.

где я могу найти Cairo?

официальный сайт проекта расположен по адресу http://www.cairographics.org и поддерживается карлом Вортом. Здесь можно найти инструкцию, как выписать Cairo из CVS. Проект пока не предоставляет пакетов — ни двоичных, ни в исходных текстах. Из-за отсутствия стабильных релизов, Cairo не включается в дистрибутивы Linux, однако, вы можете найти данный инструментарий в дереве разработки вашего дистрибутива. Gentoo содержит Cairo 0.4.0, а Debian — 0.3.0, который уже не особенно актуален. Лучше всего выписать код из CVS и собрать Cairo самостоятельно. Это совсем не трудно.

А что насчет документации?

На сайте Cairo можно найти документацию, автоматически генерируемую на основе исходных текстов. однако, в ней не так уж много информации, и разработчики осведомлены о том, что она нуждается в улучшении. Учебников пока нет, однако, вы можете ознакомиться с презентацией кейта Пакарда (http://freedesktop.org/~keithp/tutorials/cairo/cairo-tutorial), которую он создал в 2003 году.

На самом деле, лучший способ познакомиться с Cairo — это изучить код, который его использует. обратите внимание на модуль cairo-demos в CVS-дереве проекта. Некоторые из программ были написаны для старых версий Cairo, однако, это один из лучших способов понять данный инструментарий. Списки рассылки Cairo (http://www.cairographics.org/lists) - подходящее место для общения с разработчиками и другими пользователями.

А когда выйдет Cairo 1.0?

когда он будет готов, разумеется!

Персональные инструменты
купить
подписаться
Яндекс.Метрика