Я пытаюсь получить кварцевый код, сгенерированный, когда мы создаем кнопку в какао?
Вы не можете этого получить, потому что такого не получается.
Создание кнопки не генерирует код, кварц или иное.Код уже написан;он просто используется новым объектом кнопки, когда этому объекту приказано рисовать, при этом кнопка (со всеми ее свойствами) предоставляется коду в качестве входных данных.То же самое относится и к вашим drawRect:
реализациям.
Хотя в случае AppKit это немного более абстрактно.В последних двух версиях Mac OS X Apple перешла к описанию появления стандартных представлений в файлах XML.Платформа, называемая Core UI, реализует чертеж, следуя этим «рецептам» XML;это, по-видимому, в конечном итоге приводит к вызову функций Quartz (хотя это еще не обязательно означает, что генерируется какой-либо код).
Джон Сиракуза в общих чертах рассказывает об основном интерфейсе ядра в своем обзоре Leopard.
HITheme и Appearance Manager в настоящее время, вероятно, оба выполняют вызов Core UI одинаково, хотя они только рисуют кнопку (или что-то еще).Это единственный общедоступный способ сделать это без создания реальной кнопки, которая может реагировать на события.
В рамках моего исследования мне нужно доказать, что весь пользовательский интерфейс фреймворков Cocoa / Carbon делаетв этом вам может помочь использование Quartz…
otx : он позволяет разбирать фреймворки, чтобы увидеть, что они на самом деле делают.Имейте в виду, что это нарушает лицензионное соглашение Mac OS X.
… и все их можно визуализировать с использованием кварца.
Это так.Это может занять много работы, чтобы получить богато разработанные полностью векторные представления (поиграйтесь с масштабным коэффициентом в Quartz Debug и посмотрите, как векторизованные элементы управления разваливаются), но это возможно.Даже если вы создадите и просто начертите растровое изображение, вы все равно будете использовать Quartz для этого.
Чего AppKit почти наверняка не сделает, так это рисовать с использованием Quartz напрямую.Это была работа HITheme (и внешнего вида менеджера до этого), и теперь это основной пользовательский интерфейс.Я ожидаю увидеть AppKit, использующий HITheme, HITheme, использующий Core UI, и Core UI, использующий Quartz.