Открыть сервис

Quartz 2D

Quartz 2D — это двухмерный графический движок (рендеринговый движок), входящий в состав графической подсистемы Quartz в операционных системах macOS и iOS. Он является частью Core Graphics framework и отвечает за отрисовку векторной графики, растровых изображений, текста и управление цветом, обеспечивая аппаратно-ускоренный вывод на экран и принтер.

История

Разработка Quartz 2D началась в конце 1990-х годов как часть операционной системы Mac OS X (ныне macOS). В основе Quartz 2D лежит технология Display PostScript, использовавшаяся в NeXTSTEP, но адаптированная для работы с Portable Document Format (PDF). Первая публичная версия Quartz 2D была представлена в 2001 году с выходом Mac OS X 10.0 Cheetah.

С момента появления Quartz 2D постоянно развивался. В Mac OS X 10.2 Jaguar была добавлена поддержка Quartz Extreme — аппаратного ускорения композитинга. В Mac OS X 10.4 Tiger появилась поддержка Core Image и Core Video, которые расширили возможности обработки изображений. В iOS 2.0 (2008 год) Quartz 2D был портирован на мобильные устройства, где используется для отрисовки интерфейса и графики в приложениях. В macOS 10.13 High Sierra (2017) была внедрена поддержка Metal — низкоуровневого API для работы с графическим процессором, что позволило Quartz 2D использовать аппаратное ускорение для некоторых операций.

Архитектура

Quartz 2D является частью фреймворка Core Graphics, который, в свою очередь, входит в состав Core Services. Основные компоненты архитектуры:

Графический контекст (CGContext)

Графический контекст — это объект, представляющий поверхность для рисования. Он определяет параметры вывода (цвет, прозрачность, трансформации) и содержит текущее состояние графического конвейера. Контекст может быть связан с экраном (CGContext для окна или представления), растровым изображением (CGBitmapContext), PDF-файлом (CGPDFContext) или принтером.

Координатная система

Quartz 2D использует декартову систему координат, где ось X направлена вправо, а ось Y — вверх. Начало координат (0,0) по умолчанию находится в левом нижнем углу контекста. Для iOS и macOS применяются разные системы координат: в iOS ось Y направлена вниз, что требует трансформации контекста при отрисовке.

Графический конвейер

Отрисовка в Quartz 2D проходит через несколько этапов:

  1. Определение пути — создание последовательности линий, кривых и дуг.
  2. Обводка и заливка — нанесение цвета, градиента или шаблона на путь.
  3. Композитинг — смешивание пикселей с учётом прозрачности (альфа-канала).
  4. Растеризацияпреобразование векторных данных в пиксели.
  5. Вывод — передача результата на устройство отображения.

Основные возможности

Векторная графика

Quartz 2D поддерживает создание и отрисовку векторных фигур: линий, прямоугольников, эллипсов, дуг и кривых Безье. Пути могут быть замкнутыми или разомкнутыми. Для построения кривых используются квадратичные и кубические кривые Безье.

Растровые изображения

Движок может загружать, отображать и манипулировать растровыми изображениями в форматах PNG, JPEG, TIFF, GIF и других. Поддерживается масштабирование, поворот, обрезка, наложение фильтров (через Core Image) и управление цветовыми профилями.

Текст

Quartz 2D использует Core Text для рендеринга текста. Поддерживаются шрифты TrueType, OpenType и PostScript Type 1. Текст может быть отображён в любом направлении, с трансформациями и наложением на произвольные пути.

Управление цветом

Встроенная система управления цветом (ColorSync) позволяет работать с различными цветовыми пространствами: sRGB, Adobe RGB, Display P3 и другими. Quartz 2D автоматически преобразует цвета между пространствами при выводе на экран или печать.

PDF-рендеринг

Quartz 2D может отображать PDF-документы, извлекать из них страницы, текст и изображения. Поддерживается создание PDF-файлов из любого графического контекста.

Применение

Разработка приложений для macOS и iOS

Quartz 2D используется для создания пользовательских интерфейсов, отрисовки графиков, диаграмм, игр и других визуальных элементов. В iOS он является основным способом рендеринга для UIView и CALayer.

Печать

Движок обеспечивает высококачественный вывод на принтеры, поддерживая PostScript и PDF. Печать может быть выполнена как из приложений, так и из системных диалогов.

Обработка изображений

Quartz 2D применяется в графических редакторах (например, Pixelmator, Affinity Photo) для фильтрации, коррекции цвета и композитинга.

Научная и инженерная графика

Благодаря точности векторной графики, Quartz 2D используется в CAD-системах, программах для моделирования и визуализации данных.

Примеры использования

Отрисовка простой фигуры

``objc CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor); CGContextFillRect(context, CGRectMake(10, 10, 100, 100)); ``

Создание PDF-файла

``objc NSArray paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString pdfPath = [[paths firstObject] stringByAppendingPathComponent:@"output.pdf"]; UIGraphicsBeginPDFContextToFile(pdfPath, CGRectZero, nil); UIGraphicsBeginPDFPage(); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor); CGContextFillRect(context, CGRectMake(50, 50, 200, 200)); UIGraphicsEndPDFContext(); ``

Сравнение с другими технологиями

ТехнологияПлатформаТип графикиАппаратное ускорение
Quartz 2DmacOS, iOSВекторная, растроваяЧастичное (через Metal)
Direct2DWindowsВекторная, растроваяПолное (через DirectX)
CairoКроссплатформеннаяВекторная, растроваяЧастичное (через OpenGL)
SkiaКроссплатформеннаяВекторная, растроваяПолное (через Vulkan, Metal, OpenGL)

Quartz 2D уступает Direct2D и Skia в производительности на сложных сценах, но обеспечивает более точную цветопередачу и интеграцию с PDF.

Критика

Основные претензии к Quartz 2D:

  • Производительность — при отрисовке большого количества объектов или сложных путей скорость может быть ниже, чем у конкурирующих технологий.
  • Ограниченность — отсутствие встроенной поддержки 3D-графики, что требует использования OpenGL или Metal.
  • Зависимость от платформы — технология доступна только в экосистеме Apple, что ограничивает её применение в кроссплатформенных проектах.

Интересные факты

  • Quartz 2D использует модель композитинга, основанную на PDF 1.4, что позволяет легко экспортировать графику в этот формат.
  • В macOS Quartz 2D работает поверх Quartz Extreme — системы композитинга окон, которая объединяет все окна в единое изображение.
  • Название «Quartz» происходит от минерала кварца, что символизирует прозрачность и чистоту графики.

Источники

  • Apple Inc. «Core Graphics Programming Guide» (2013).
  • Apple Inc. «Quartz 2D Programming Guide» (2015).
  • Apple Inc. «macOS Technology Overview» (2020).
  • Apple Inc. «iOS Graphics and Animation» (2021).
  • Техническая документация Apple Developer (developer.apple.com).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →