tgoop.com/iosdev/698
Last Update:
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, включая обработку событий.Core Graphics
, а общедоступное название — Quartz 2D.
📖 Источники при подготовке материала: Mihaela MJ, Mark Dalrymple, дока эпл и, конечно,
@iOS Dev —