TGViewer
iOS Dev iOS Dev @iosdev · 7.92K subscribers
Post #698 2.77K
Core Graphics: что это, как появился и как на это повлияли деньги?

Core Graphics, также известный под своим маркетинговым названием «Quartz», является одним из старейших связанных с графикой API на платформах.

Quartz является основой большинства 2D-вещей. Хотите рисовать фигуры, заполнять их градиентами и придавать им тени? Это Core Graphics. Показывать изображения на экране? Они проходят через Core Graphics. Создавать PDF? Эм, ну это всё ещё Core Graphics.

CG — это довольно большой API, охватывающий весь спектр базовых геометрических структур данных (таких как точки, размеры, векторы и прямоугольники) и вызовы для манипулирования ими, которые преобразуют пиксели в изображения или в экран, вплоть до обработки событий.

Почему графический API работает с пользовательскими событиями?

Как и все для всего остального, нужно вспомнить историю. А знание истории может объяснить, почему части Core Graphics ведут себя именно так.

⏳ Еще в 1980-х, графические API были довольно примитивными. Инструменты были ограничены палитрой и рисовать можно было только основные фигуры. Существовали функции «побитового копирования».

В QuickDraw на Mac была интересная функция, называемая регионами для обрезки, контура или хиттеста (что-то знакомо?✅️)

В 1985 году Apple представила LaserWriter — принтер, мощнее компа, который имел в 12 раз больше оперативной памяти и стоил вдвое дороже. Этот принтер производил (для того времени) невероятно красивый результат благодаря технологии PostScript. Интерпретатор языка PostScript был встроен в LaserWriter, поэтому, когда программа на Mac хотела что-то напечатать, программа (или драйвер принтера) генерировала программный код, который загружался в принтер и выполнялся. А вот тут даже есть пример.

Помимо рендеринга страниц, PostScript является полным по Тьюрингу и вы даже можете написать веб-сервер с его помощью.

Когда инженеры NeXT проектировали свою систему, они выбрали PostScript в качестве модели рендеринга. Отображение PostScript было основой взаимодействия с пользователем. События проходили через систему DPS, а затем отправлялись в приложения.

Почему OS X и iOS не используют Display PostScript?

💵 Дело в деньгах! Adobe взимала лицензионный сбор за Display PostScript.

Кроме того, Apple хорошо известна тем, что хочет владеть как можно большей частью своего технологического стека.

Обычно говорят, что Quartz «основан» на PDF, и в некотором смысле это правда. PDF (Adobe's Portable Document Format) — это модель рисования PostScript.

Quartz был разработан так, чтобы использование API было на то, что поддерживается в PDF, что делало создание PDF-файлов на платформе почти тривиальным.

Те же основные механизмы были сохранены, хотя Display PostScript был заменен на Quartz, включая обработку событий.

🧐 Apple разработала новую структуру, объединив модель PDF с поддержкой альфа-канала, и сегодня мы знаем ее как Quartz 2D. Apple внутри компании называет эту графическую библиотеку Core Graphics, а общедоступное название — Quartz 2D.

📖 Источники при подготовке материала: Mihaela MJ, Mark Dalrymple, дока эпл и, конечно,

@iOS Dev — теперь вы знаете больше!
  • 👏 31
  • 👍 21
  • 🔥 9
  • ❤‍🔥 6
  • ❤ 3
  • 🏆 3
  • 💯 1
More from @iosdev
  1. Oct 7, 2026Работа с модальными экранами на iPhone Duo На iPhone Duo всплывающие окна могут выглядеть…
  2. Oct 6, 2026⚡️ Apple обязали всех делать поддержку iPhone Duo с апреля 2027 года Сегодня выкатили обно…
  3. Oct 5, 2026iPhone Duo UIKit Q&A: большая подборка ответов от инженеров Apple 📖 В своём блоге Антон с…
  4. Oct 1, 2026SwiftUI Charts и динамическое маскирование Одним из применений для диаграмм является разны…
  5. Sep 29, 2026⚡️Сегодня ночью десятки тысяч приложений массово начали крашиться из-за либы для аналитики…
  6. Sep 28, 2026От pbxproj к xcproj: разбор конфигураций проекта 📖 В этой статье можно посмотреть на новы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →