Библиотека Cairo — это одна самых популярных графических библиотек двумерной векторной графики. Это бесплатная кроссплатформенная библиотека, которая использует аппаратное ускорение графики, если это возможно. Главное достоинство Cairo — это идентичность получаемых изображений как на экране, так и на печати.
Изображение, которое получено на экране, может быть также выведено в файл в различных форматах: pdf, ps, png, svg и других.
Cairo поддерживается на множестве платформ: Windows, Unix, OS X. Библиотека Cairo написана на чистом Си, что обеспечивает максимальную скорость выполнения, но также имеет привязки к другим языкам программирования: C++, C#, Delphi, Factor, Haskell, Lua, Perl, PHP, Python, Ruby и т.д.
Библиотека Cairo используется в следующих популярных программах:
- Фреймворк WebKit, который используется целым рядом браузеров: Google Chrome, Firefox, Safari, Яндекс.Браузер.
- Графическая среда рабочего стола Gnome.
- Набор офисных приложений OpenOffice.
- Векторный графический редактор Inkscape.
- Библиотека GTK+.
В сборке Си-экспресс библиотека Cairo уже встроена и готова к работе.
Что такое векторная графика?
Компьютерная графика может быть растровой или векторной. Растровая графика — графика, которая создается из отдельных точек (пикселей). Этот вид графики получается, например, в результате работы цифрового фотоаппарата или сканера.
Чем более высоко разрешение растровой графики, тем более высокое качество оно обеспечивает, но тем больше памяти расходует.
При масштабировании качество растровой графики резко падает.
Векторная графика — это графика, в которой изображение строится с помощью алгебраического описания графических примитивов. Это позволяет легко масштабировать и трансформировать изображения без потери качества.
Еще одним преимуществом векторной графики является то, что получаемые файлы невелики по размеру, так как по сути — это набор описаний графических примитивов.
Поэтому для формирования изображений программисту намного удобнее и проще использовать векторную графику.
Графическая модель Cairo
Разработчики библиотеки Cairo исходили из предположения, что библиотека будет использоваться для различных трансформаций изображений. Отсюда они выбрали несколько сложную, но очень мощную модель формирования изображения.
Cairo использует следующую модель рисования:
Выбирается источник (source).
Он может быть закрашенной поверхностью, градиентом или битовым изображением. Источник может иметь альфа-канал прозрачности.
Рисуются векторные формы, которые называются маской (mask).
На окончательную поверхность (surface) попадают результаты прохождения источника сквозь маску.
Перед рисованием вы можете выбрать следующие источники:
Цвет
- cairo_set_source_rgb() — сплошной цвет
- cairo_set_source_rgba() — прозрачный цвет
Градиент
- cairo_pattern_create_linear() — линейный
- cairo_pattern_create_radial() — радиальный
Изображение
- cairo_image_surface_create_from_png() — из файла
- cairo_pop_group() — из сохраненного источника
Например, если мы хотим нарисовать синий круг, то нужно выполнить следующие команды:
1 2 3 4 |
// Синий круг cairo_set_source_rgb( cr, 0, 0, 65535); // В качестве источника выбрали синий цвет cairo_arc (cr, 150, 125, 100, 0, 2*M_PI); // В качестве маски выбрали круг cairo_fill( cr ); // Перенесли на поверхность круг, заполненный цветом |
Возможности библиотеки Cairo
Библиотека предоставляет полный набор работы с векторной графикой:
- Рисование графических примитивов
- Вывод текста
- Отображение растровых рисунков
- Линейный и радиальный градиент
- Замыкание контуров
- Трансформации фигур
Возможностей библиотеки достаточно для выполнения любых графических задач с векторной двумерной графикой.
Документация по Cairo
Официальный сайт (eng): www.cairographics.org
Руководство по Cairo (rus): www.opennet.ru/docs/RUS/tutorial_cairo/
Минимальную программу на Cairo можно посмотреть здесь.