Jump to content

Каир (графика)

Оригинальный автор(ы) Кит Паккард , Карл Уорт [1]
Разработчик(и) Карл Уорт, Бехдад Исфабод
Первоначальный выпуск До 2003 года ; 21 год назад ( 2003 ) [2]
Стабильная версия
1.18.0 (23 сентября 2023 г .; 10 месяцев назад ( 23.09.2023 ) [3] ) [±] }
Репозиторий gitlab .freedesktop .org /Каир /Каир
Написано в С
Тип Графическая библиотека
Лицензия GNU Lesser General Public License версии 2.1 (только) или Mozilla Public License 1.1.
Веб-сайт www .каирография .org

Cairo (стилизовано под cairo ) — это с открытым исходным кодом графическая библиотека , которая предоставляет основанный на векторной графике аппаратно-независимый API разработчикам программного обеспечения . Он предоставляет примитивы для двумерного рисования на различных серверах . Каир использует аппаратное ускорение [4] когда доступно.

Архитектура программного обеспечения

[ редактировать ]

Языковые привязки

[ редактировать ]

Библиотека, написанная на одном языке программирования, может использоваться на другом языке, если привязки написаны ; Cairo имеет ряд привязок для различных языков, включая C++ , C# и другие языки CLI , Delphi , Eiffel , Fortran , Factor , Harbour , Haskell , Julia , Lua , Perl , PHP , Python , Ruby , Rust , Scheme , Smalltalk и некоторые другие. например Гамбас (например, Visual Basic). [5]

Привязки инструментария

[ редактировать ]

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

  • FLTK имеет полную поддержку в Каире (через --enable-cairo компилировать переключатель).
  • GTK начал в 2005 году с версии 2.8 использовать Cairo для рендеринга большинства элементов графического управления , а начиная с версии 3.0 весь рендеринг осуществляется через Cairo.
  • Команда разработчиков Cairo поддерживает актуальные инструкции по рендерингу поверхностей в SDL . [6]

Доступные серверные части

[ редактировать ]

Cairo поддерживает вывод (включая растеризацию ) на несколько различных серверных частей , известных в своем коде как «поверхности». Внутренняя поддержка включает вывод в систему X Window через Xlib и XCB , Win32 GDI , OS X Quartz Compositor , BeOS API, OS/2 , OpenGL (напрямую). контексты [7] и через glitz), локальные буферы изображений, файлы PNG , PDF , PostScript , DirectFB и SVG файлы .

В разработке находятся и другие серверные части, ориентированные на графические API OpenVG . [8] Кт , [9] катание на лыжах , [10] и Direct2D от Microsoft . [11] Серверные части BeOS, OS/2 и DirectFB были исключены в 2022 году. [12]

Чертеж модели

[ редактировать ]
Модель чертежа Каира

Модель рисования Каира основана на трехслойной модели.

Любой процесс рисования происходит в три этапа:

  1. Сначала создается маска, которая включает в себя один или несколько векторных примитивов или форм, например, круги, квадраты, TrueType шрифты , кривые Безье и т. д.
  2. Затем необходимо определить источник, который может быть цветом, цветовым градиентом, растровым изображением или какой-либо векторной графикой, и из окрашенных частей этого источника делается высечка с помощью определенной выше маски.
  3. Наконец, результат передается в пункт назначения или на поверхность, которая предоставляется серверной частью для вывода.

Это принципиально отличается от подхода масштабируемой векторной графики (SVG), который определяет цвет фигур с помощью правил каскадных таблиц стилей (CSS). [ нужна ссылка ] В то время как Cairo создавал бы маску фигуры, затем создавал бы для нее источник, а затем переносил их на поверхность, файл SVG просто определял бы форму с помощью style атрибут. Тем не менее, модели не являются несовместимыми; многие средства визуализации SVG используют Cairo для тяжелой работы. [13]

Изображение SVG, созданное по этому примеру

Достаточно сложную графику « Hello world » можно нарисовать с помощью Cairo всего лишь с помощью нескольких строк исходного кода :

#include <cairo-svg.h>
#include <stdio.h>

int main(int argc, char **argv) {
    cairo_surface_t *surface = cairo_svg_surface_create("Cairo_example.svg", 100.0, 100.0);
    cairo_t *cr = cairo_create(surface);

    /* Draw the squares in the background */
    for (int x = 0; x < 10; ++x)
       for (int y = 0; y < 10; ++y)
           cairo_rectangle(cr, x * 10.0, y * 10.0, 5, 5);

    cairo_pattern_t *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);

    /* Writing in the foreground */
    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, "Hallo");

    cairo_move_to(cr, 10, 75);
    cairo_show_text(cr, "Wikipedia!");

    cairo_destroy(cr);
    cairo_surface_destroy(surface);
}

Заметное использование

[ редактировать ]

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

  • GTK , начиная с 2005 года с версии 2.8, использует Cairo для рендеринга большинства своих графических элементов управления . [14] Начиная с версии GTK 3, весь рендеринг выполняется с использованием Cairo.
    • Программа под названием gtk-vector-screenshot, найденный в Debian, позволяет делать векторные снимки экрана (SVG, PDF или PostScript) приложений GTK 3. [15]
  • Проект «Моно» , [16] включая лунный свет , [17] с самого начала использовал Cairo для поддержки серверных частей своих GDI+ (libgdiplus) и System.Drawing пространств имен .
  • Проект Mozilla использовал Cairo в своем механизме компоновки Gecko , используемом для рендеринга графического вывода продуктов Mozilla. Gecko 1.8, механизм компоновки для Mozilla Firefox 2.0 и SeaMonkey 1.0, использовал Cairo для рендеринга содержимого SVG и <canvas> . Геккон 1,9, [18] выпуск Gecko, который служит основой Firefox 3 , использует Cairo в качестве графической части для рендеринга как содержимого веб-страницы, так и пользовательского интерфейса (или «хрома»).
  • Платформа WebKit использует Cairo для всего рендеринга в портах GTK и EFL . Также была добавлена ​​поддержка содержимого SVG и <canvas> с использованием Cairo.
  • Библиотека Poppler использует Cairo для рендеринга PDF-документов. Cairo позволяет рисовать векторную графику со сглаживанием и прозрачные объекты.
  • Приложение векторной графики Inkscape использует библиотеку Cairo для отображения в контурном режиме, а также для экспорта в PDF и PostScript , начиная с версии 0.46. [19]
  • Первоначальная версия Manim , называемая ManimCairo, представляет собой движок математической анимации, используемый в анимации видео 3Blue1Brown на YouTube. С тех пор Маним перешел на использование OpenGL . Эта версия называется ManimGL. [20]
  • MorphOS 2.5 включает реализацию Cairo с общей библиотекой, которая была доступна как отдельная версия для более ранних версий MorphOS.
  • AmigaOS 4.1 поддерживает библиотеку общих объектов Cairo (libcairo.so) при установке по умолчанию.
  • FontForge по умолчанию включил Cairo для рендеринга в середине октября 2008 года.
  • R может выводить графики в форматах PDF , PostScript и SVG, используя Cairo, если он доступен.
  • Gnuplot 4.4 теперь использует Cairo для рендеринга PDF и PNG . [21]
  • Интернет-браузер для PlayStation 3 использует Cairo начиная с обновления системного программного обеспечения 4.10.
  • Synfig 0.64 теперь поддерживает дополнительный рендеринг Cairo.
  • Построение графиков данных временных рядов по требованию в Graphite .
  • Движок виджетов Konfabulator/Yahoo использует Cairo для вывода, идентичного Win32 и Quartz в Mac OS/X .
  • SolveSpace , бесплатное программное обеспечение 2D и 3D CAD с открытым исходным кодом .

Кит Паккард и Карл Уорт основали проект Cairo для использования в системе X Window . [2] Первоначально (по крайней мере, до 2003 года) он назывался Xr или Xr/Xc . Название было изменено, чтобы подчеркнуть идею кроссплатформенной библиотеки для доступа к серверу отображения , не привязанной к X Window System . [22] Название Каир происходит от первоначального названия Xr , интерпретируемого как греческие буквы хи и ро . [23]

Сложная верстка текста

[ редактировать ]

Cairo поддерживает шрифты на основе латиницы и CJK, но не поддерживает напрямую шрифты со сложной компоновкой текста , требующие формирования глифов. Разработчики Cairo рекомендуют использовать Pango , который обеспечивает сложную верстку текста и может интегрироваться с Cairo. [24]

См. также

[ редактировать ]
  1. ^ «Скучные веб-страницы Карла» . cworth.org . 2013 . Проверено 11 июля 2014 г.
  2. ^ Jump up to: а б «Xr: кросс-девайсный рендеринг векторной графики» . Проверено 8 июня 2009 г.
  3. ^ «Выпущен Cairo 1.18 — первая стабильная версия за пять лет» . www.phoronix.com . Проверено 23 сентября 2023 г.
  4. ^ «Домашняя страница Каира» . Проверено 30 октября 2010 г.
  5. ^ «Каирские языковые привязки» . Проверено 16 апреля 2014 г.
  6. ^ «СДЛ» . Каир . 17 февраля 2009 г. Проверено 3 ноября 2014 г.
  7. ^ Крис Уилсон (22 июля 2009 г.). «Объединен новый бэкэнд OpenGL» . Проверено 12 февраля 2010 г.
  8. ^ Ойвинд Колос (24 января 2008 г.). «Анонсируем бэкэнд OpenVG» . Проверено 12 февраля 2010 г.
  9. ^ Владимир Вукичевич (06 мая 2008 г.). «Ну, разве это не Qt» . Архивировано из оригинала 9 апреля 2010 г. Проверено 12 февраля 2010 г.
  10. ^ Крис Уилсон (31 августа 2009 г.). «Классная штука» . Проверено 12 февраля 2010 г.
  11. ^ Бас Схоутен (22 ноября 2009 г.). «Direct2D: Аппаратный рендеринг браузера» . Проверено 12 февраля 2010 г.
  12. ^ Ларабель, Майкл (27 февраля 2022 г.). «Графическая библиотека Cairo удаляет множество старых бэкэндов» . Фороникс . Проверено 5 июня 2022 г.
  13. ^ «ГНОМ/librsvg» . Гитхаб .
  14. ^ «GTK+ для использования векторного движка Cairo» . Проверено 27 декабря 2009 г.
  15. ^ «Подробная информация о пакете gtk-vector-screenshot в растянутом виде» . Дебиан . GitHub
  16. ^ «Моно-рисование» . Проверено 27 декабря 2009 г.
  17. ^ «Лунные заметки» . Проверено 27 декабря 2009 г.
  18. ^ «Дорожная карта Gecko 1.9» . Проверено 27 декабря 2009 г.
  19. ^ «Примечания к выпуску046» . Инкскейп вики . Проверено 31 марта 2008 г.
  20. ^ «Учебное пособие по ManimCE от теоремыБетховена — Учебное пособие по ManimCE от документации TB» . zavden.github.io . Проверено 29 января 2023 г.
  21. ^ «Анонс Gnuplot версии 4.4.0» . Домашняя страница Gnuplot . Архивировано из оригинала 14 мая 2011 г. Проверено 22 февраля 2011 г.
  22. ^ «Ветка списка рассылки об изменении названия Каира» . 15 июля 2003 года . Проверено 8 июня 2009 г.
  23. ^ «Ветка списка рассылки об изменении названия Каира» . 12 июля 2003 года . Проверено 2 декабря 2006 г.
  24. ^ «Как мне использовать Pango вместо «игрушечного» текстового API Cairo?» . Проверено 20 марта 2024 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 695f9c7423ddbacd4eba7dbd28ccba99__1710910140
URL1:https://arc.ask3.ru/arc/aa/69/99/695f9c7423ddbacd4eba7dbd28ccba99.html
Заголовок, (Title) документа по адресу, URL1:
Cairo (graphics) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)