Cairo | |
---|---|
![]() | |
Тип | графическая библиотека[d] и библиотека функций |
Разработчик | Кит Паккард, Карл Ворт[d] и Behdad Esfahbod[d] |
Написана на | Си[1] |
Операционная система | GNU/Linux[d], Microsoft Windows и macOS |
Последняя версия | |
Лицензия | Mozilla Public License 1.1[d][3] и GNU Lesser General Public License 2.1[d][3] |
Сайт | cairographics.org (англ.) |
![]() |
Cairo — это программная библиотека для отрисовки векторной графики с открытым исходным кодом. Включает в себя аппаратно-независимый прикладной программный интерфейс для разработчиков программного обеспечения. Cairo предоставляет графические примитивы для отрисовки двумерных изображений посредством разнообразных бекендов. Когда есть возможность, Cairo использует аппаратное ускорение.
Существует официальное предложение по стандартизации в языке C++ прикладного программного интерфейса отрисовки двумерной графики на основе библиотеки Cairo.[4]
Любая библиотека, написанная на одном языке программирования, может использоваться и на другом, если реализована т. н. привязка этой библиотеки к новому языку. Cairo имеет широкий диапазон привязок к разным языкам программирования: C++, C# и другим языкам, отвечающим требованиям стандарта CLI. Также есть привязки Cairo к языкам Delphi, Factor, Haskell, Lua, Perl, PHP, Python, Ruby, Scheme, Smalltalk и другим.[5]
Поскольку Cairo является лишь библиотекой для отрисовки, она способна принести ощутимую пользу при интеграции с инструментами построения графических пользовательских интерфейсов:
Cairo оперирует с абстракцией surface (поверхность). Поверхность — это то, на чём рисует Cairo. За этой поверхностью могут скрываться разнообразные бекенды, которые могут передавать результат работы Cairo в X Window System, Xlib и XCB, Win32 GDI, OS X Quartz Compositor, BeOS, OS/2, контексты OpenGL (напрямую[8] и через glitz), локальный буфер изображений, PNG-файлы, PDF, PostScript, DirectFB и SVG-файлы.
Существуют и другие бекенды, представляющие собой графический прикладной программный интерфейс: OpenVG,[9] Qt,[10] Skia,[11] и Direct2D.[12]
Модель отрисовки Cairo включает в себя три этапа:
Такая модель отрисовки фундаментально отличается от подхода к построению изображений, принятому в SVG.
Довольно сложный графический вариант популярного «Привет, мир!» может быть реализован с помощью Cairo, к примеру, следующим образом:
1 #include <cairo-svg.h>
2
3 int main(int argc, char **argv) {
4
5 cairo_t *cr;
6 cairo_surface_t *surface;
7 cairo_pattern_t *pattern;
8 int x,y;
9
10 surface = (cairo_surface_t *)cairo_svg_surface_create("Cairo_example.svg", 110.0, 110.0);
11 cr = cairo_create(surface);
12
13 /* Рисуем квадратики на заднем фоне */
14 for (x=0; x<10; x++)
15 for (y=0; y<10; y++)
16 cairo_rectangle(cr, x*10.0, y*10.0, 5, 5);
17
18 pattern = cairo_pattern_create_radial(50, 50, 5, 50, 50, 50);
19 cairo_pattern_add_color_stop_rgb(pattern, 0, 0.75, 0.15, 0.99);
20 cairo_pattern_add_color_stop_rgb(pattern, 0.9, 1, 1, 1);
21
22 cairo_set_source(cr, pattern);
23 cairo_fill(cr);
24
25 /* Отрисовка переднего фона */
26 cairo_set_font_size (cr, 15);
27 cairo_select_font_face (cr, "Georgia", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
28 cairo_set_source_rgb (cr, 0, 0, 0);
29
30 cairo_move_to(cr, 10, 25);
31 cairo_show_text(cr, "Привет,");
32
33 cairo_move_to(cr, 10, 55);
34 cairo_show_text(cr, "Википедия!");
35
36 cairo_destroy (cr);
37 cairo_surface_destroy (surface);
38 return 0;
39 }
Cairo популярен в сообществе opensource, так как обеспечивает переносимость и качественную отрисовку двумерных изображений.
Keith Packard и Carl Worth основали проект Cairo для использования в среде X Window System.[18] Вначале (по крайней мере до 2003 года) проект назывался Xr или Xr/Xc. Название было изменено с той целью, чтобы подчеркнуть идею переносимости библиотеки с возможностью доступа к произвольному серверу дисплея, не привязанному только лишь к X Window System.[19]
Имя Cairo произошло от оригинального имени Xr, интерпретируемого буквами греческого алфавита χ and ρ.[20]
![]() |
Cairo на Викискладе |
---|
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .