Loading AI tools
графическая библиотека Из Википедии, свободной энциклопедии
Cairo — программная библиотека для отрисовки векторной графики с открытым исходным кодом. Включает в себя аппаратно-независимый прикладной программный интерфейс для разработчиков программного обеспечения. Cairo предоставляет графические примитивы для отрисовки двумерных изображений посредством разнообразных бекендов. Когда есть возможность, Cairo использует аппаратное ускорение.
Cairo | |
---|---|
Тип | графическая библиотека[вд] и библиотека функций |
Разработчики | Кит Паккард, Карл Ворт[вд], Behdad Esfahbod[вд][1] и Chris Wilson[вд] |
Написана на | Си[2] |
Операционные системы | GNU/Linux, Windows, macOS и Unix-подобная операционная система |
Последняя версия |
|
Репозиторий | gitlab.freedesktop.org/c… |
Лицензия | Mozilla Public License 1.1[вд][4] и LGPL-2.1[вд][4] |
Сайт | cairographics.org (англ.) |
Медиафайлы на Викискладе |
Существует официальное предложение по стандартизации в языке C++ прикладного программного интерфейса отрисовки двумерной графики на основе библиотеки Cairo[5].
Любая библиотека, написанная на одном языке программирования, может использоваться и на другом, если реализовано т. н. связывание языков программирования[англ.] этой библиотеки к новому языку. Cairo имеет широкий диапазон привязок к разным языкам программирования: C++, C# и другим языкам, отвечающим требованиям стандарта CLI. Также есть привязки Cairo к языкам Delphi, Factor, Haskell, Lua, Perl, PHP, Python, Ruby, Scheme, Smalltalk и другим[6].
Поскольку Cairo является лишь библиотекой для отрисовки, она способна принести ощутимую пользу при интеграции с инструментами построения графических пользовательских интерфейсов:
Cairo оперирует с абстракцией surface (поверхность). Поверхность — это то, на чём рисует Cairo. За этой поверхностью могут скрываться разнообразные бекенды, которые могут передавать результат работы Cairo в X Window System, Xlib и XCB, Win32 GDI, OS X Quartz Compositor, BeOS, OS/2, контексты OpenGL (напрямую[9] и через glitz), локальный буфер изображений, PNG-файлы, PDF, PostScript, DirectFB и SVG-файлы.
Существуют и другие бекенды, представляющие собой графический прикладной программный интерфейс: OpenVG[10], Qt[11], Skia[англ.][12], и Direct2D[13].
Модель отрисовки Cairo включает в себя три этапа:
Такая модель отрисовки фундаментально отличается от подхода к построению изображений, принятому в SVG.
Довольно сложный графический вариант популярного «Привет, мир!» может быть реализован с помощью Cairo, к примеру, следующим образом:
#include <cairo-svg.h>
int main(int argc, char **argv) {
cairo_t *cr;
cairo_surface_t *surface;
cairo_pattern_t *pattern;
int x,y;
surface = (cairo_surface_t *)cairo_svg_surface_create("Cairo_example.svg", 110.0, 110.0);
cr = cairo_create(surface);
/* Рисуем квадратики на заднем фоне */
for (x=0; x<10; x++)
for (y=0; y<10; y++)
cairo_rectangle(cr, x*10.0, y*10.0, 5, 5);
pattern = cairo_pattern_create_radial(50, 50, 5, 50, 50, 50);
cairo_pattern_add_color_stop_rgb(pattern, 0, 0.75, 0.15, 0.99);
cairo_pattern_add_color_stop_rgb(pattern, 0.9, 1, 1, 1);
cairo_set_source(cr, pattern);
cairo_fill(cr);
/* Отрисовка переднего фона */
cairo_set_font_size (cr, 15);
cairo_select_font_face (cr, "Georgia", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_move_to(cr, 10, 25);
cairo_show_text(cr, "Привет,");
cairo_move_to(cr, 10, 55);
cairo_show_text(cr, "Википедия!");
cairo_destroy (cr);
cairo_surface_destroy (surface);
return 0;
}
Cairo популярен в сообществе opensource, так как обеспечивает переносимость и качественную отрисовку двумерных изображений.
Кит Паккард и Карл Ворт основали проект Cairo для использования в среде X Window System[20]. Вначале (по крайней мере до 2003 года) проект назывался Xr или Xr/Xc. Название было изменено с той целью, чтобы подчеркнуть идею переносимости библиотеки с возможностью доступа к произвольному серверу дисплея[англ.], не привязанному только лишь к X Window System[21].
Имя Cairo произошло от оригинального имени Xr, интерпретируемого буквами греческого алфавита χ and ρ[22].
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.