Обложка канала

iOS Dev

iOS разработчик, который делится фишками, своим опытом и опытом других. В этом канале вы сможете найти истории из жизни, подходы к реализации а также новости и тренды из мира iOS-разработки Авторский канал, iOS разработка

iOS Dev

4 года назад
Открыть в
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 — теперь вы знаете больше!