После восемнадцати месяцев разработки представлен новый стабильный релиз векторной графической библиотеки Cairo 1.12.0. Особенностью Cairo является поддержка формирования 2D-графики, используя различные механизмы вывода, от стандартного вывода на экран через X Window System, Quartz и Win32, до генерации PostScript, PDF, SVG и задействования OpenGL, XCB и DirectFB. При этом библиотека обеспечивает унифицированный интерфейс для формирования изображений, независимо от используемого бэкенда вывода. API библиотеки предоставляет функции, напоминающие операторы рисования PostScript и PDF, дополненные возможностями трансформации изображений (масштабирование, поворот, вращение и т.п.), создания полупрозрачных объектов и рендеринга текста. Код Cairo написан на языке Си и распространяется под лицензиями LGPL и Mozilla Public License. Среди известных проектов, использующих Cairo, можно отметить GTK+ и Firefox.
Среди новшеств, добавленных в Cairo 1.12.0:
- Поддержка сетчатых градиентов (mesh gradient), которые компонуются из набора простых градиентов, привязанных к сетке из кривых Безье, что позволяет формировать такие эффекты, как блики и перетекание разных цветов или тонов (классические примеры - заливка капли воды или шара с бликом);
- API для выполнение callback-вызовов, которые позволяют получить доступ к пиксельным данным заданной области во время рендеринга. Например, приложение может независимо от Cairo получить данные после распаковки изначально сжатого изображения или реализовать отложенный рендеринг;
- API (cairo_surface_create_similar_image, cairo_surface_map_to_imag), позволяющий создавать поверхности как при работе с изображениями, а также обращаться к уже существующим векторным поверхностям как к изображениям, с возможностью непосредственной модификации растровых данных;
- Проведение работы по оптимизации производительности и устранению известных узких мест. Переработаны процессы растеризации и клиппинга, бэкенды вывода теперь могут реализовывать свои специфичные пути построения картинки, выбирая более оптимальные последовательности выполнения операций;
- Поддержка задания опций сглаживания (NONE, FAST, GOOD, BEST), позволяющих выбрать приемлемый для себя баланс между скоростью и качеством;
- Новая архитектура наблюдения (cairo_surface_observer_t), позволяющая проанализировать время, затрачиваемое на те или иные команды рисования и выявить факторы, оказывающие негативное влияние на эффективность работы как Cairo, так и приложений;
- Значительно улучшен бэкенд для вывода через OpenGL, в том числе добавлена поддержка OpenGL ES 2 и задействованы расширенные возможности оборудования.