Архитектура беглого взгляда
Следовать разделы исследуют архитектуру Беглого взгляда. Общая картина этой архитектуры помогает Вам понять роль и ограничения генераторов.
Потребители беглого взгляда и производители
Архитектура Беглого взгляда основывается на потребителе — модель производителя. Потребитель (или клиент) является приложением, хотящим вывести на экран миниатюру и представления предварительного просмотра документов. Сторона производителя архитектуры обеспечивает те представления потребителю. (Некоторые клиенты Беглого взгляда являются системными приложениями, такими как Средство поиска, Центр внимания и FileSync.) У клиентов есть доступ к государственной функции QLThumbnailImageCreate
, и к панели предварительного просмотра Беглого взгляда, описанной в Ссылке класса QLPreviewPanel. Рисунок 2-1 иллюстрирует архитектуру Беглого взгляда.
Потребительская часть Беглого взгляда имеет три компонента: читатель документа (состоящий из пользовательского представления и панели), выведите на экран пакеты для того читателя и SPI для включения связи с клиентом. Каждый из этих компонентов имеет определенную роль для игры в поддержку потребителя:
Читатель документа — Беглый взгляд реализует представление (NSView) и панель (NSPanel), настроенный для отображения предварительных просмотров документа. Вместе с содержанием предварительного просмотра представление могло бы включать (в опцию клиента) средства управления для управления предварительным просмотром, такие как форвард страницы, обратный страницей, начать играть, перемотка и текстовый поиск. Клиентское приложение может встроить это представление в свой пользовательский интерфейс, если это выбирает. Панель Quick Look содержит представление Quick Look и различные средства управления, позволяющие пользователю принять некоторые меры с предварительным просмотром, такое создание предварительного просмотра отобразить полноэкранный или запуск слайд-шоу.
Пакеты дисплея — само представление Quick Look не выводит на экран предварительные просмотры документа, но делегатов, работающих к пакету дисплея. Существует один пакет дисплея Беглого взгляда для каждого собственного типа документа. Посмотрите Разработку для Беглого взгляда для обсуждения Быстрых собственных типов. Если документ не имеет собственного типа, он должен быть преобразован в тот, чтобы быть выведенным на экран как миниатюра Беглого взгляда или предварительный просмотр.
Потребитель SPI — клиентское приложение говорит с Беглым взглядом через этот интерфейс, обращаясь с просьбами для предварительных просмотров и миниатюр и получая доступ к читателю документа Беглого взгляда.
Часть «производителя» Беглого взгляда основывается на сменной архитектуре, позволяющей приложениям обеспечить миниатюры и предварительные просмотры их документов, если те документы не являются одним из собственных типов Беглого взгляда. Части потребителя и производителя Беглого взгляда связываются по одному или более портам Маха.
Более внимательное рассмотрение в демонах беглого взгляда и генераторах
Сторона «производителя» Беглого взгляда - то, где сторонняя разработка имеет место, и таким образом это заслуживает более внимательное рассмотрение. это состоит из одного или более демонов Беглого взгляда и многократных генераторов Беглого взгляда. Рисунок 2-2 показывает, как эти вещи связаны с друг другом.
Генератор Беглого взгляда является находящимся в CFPlugIn пакетом, обеспечивающим изображения миниатюр и предварительные просмотры для документов приложения. Задание генератора должно преобразовать данные документа в один из собственных типов Беглого взгляда для каждого предварительного просмотра, или миниатюра запрашивают, чтобы это получило. Демон загружает генератор, когда он сначала получает запрос на предварительный просмотр или миниатюру документа. Это определяет местоположение генератора, связанного с определенным документом с помощью типа контента документа UTI, указанный в информационном списке свойств генератора. Это ищет генератор в комплекте приложений или в одном из стандартных расположений файловой системы для генераторов, такой как /Library/QuickLook
. Двоичный файл генератора Беглого взгляда должен быть универсальным и должен быть 32-разрядным только.
Демон Беглого взгляда (quicklookd
) безликое фоновое приложение, действующее как узел к находящимся в CFPlugIn генераторам. Это связывается с потребительской стороной Беглого взгляда через порт Маха, и (как отмечено выше) определяет местоположение и загружает генераторы, когда это сначала получает запрос на предварительный просмотр или миниатюру для документа, формат которого не является одним из собственных типов. Это передает запросы от клиентов к генераторам и возвращает их ответы.
Существуют преимущества для наличия демона как посредник между потребителем SPI и генераторами. Если демон Беглого взгляда отказывает, это может быть перезапущено сразу для возобновления службы, где это кончило. Если генератор не ориентирован на многопотоковое исполнение или должен быть изолирован по какой-либо другой причине, отдельный демон может быть выполнен для обрабатывания запросов для того генератора. Когда демон неактивен, Беглый взгляд может завершить его, освободив системные ресурсы.
Со всеми архитектурными частями на месте, давайте следовать за тем, что происходит, когда клиентское приложение, такое как Средство поиска просит отображать предварительный просмотр документа. Пользователь открывает папку, выводя на экран список документов различных типов; некоторые из этих документов имеют собственные типы Беглого взгляда, и другие являются определенными для определенных приложений. Пользователь выбирает документ — говорят, файл JPG — и выбирает команду Quick Look Preview из меню File. В Беглом взгляде происходит следующая последовательность действий:
Клиент (Средство поиска) отправляет сообщение в потребительскую часть Беглого взгляда, запрашивающего предварительный просмотр на документ.
Беглый взгляд видит, что формат документа имеет собственный тип, таким образом, это загружает надлежащий пакет дисплея (если необходимый)
Пакет дисплея составляет документ в читателе документа (т.е. в представлении Quick Look, которое является представлением содержания панели Quick Look).
Пользователь затем запрашивает предварительный просмотр на документ, который не имеет собственного типа Беглого взгляда. Следующие последовательности шагов происходят:
Клиент (Средство поиска) отправляет сообщение в потребительскую часть Беглого взгляда, запрашивающего предварительный просмотр на документ.
Платформа Беглого взгляда видит, что формат документа не имеет собственного типа, таким образом, это передает сообщение демону Беглого взгляда.
Используя тип контента документа UTI, демон определяет местоположение надлежащего генератора и загружает его при необходимости.
Это передает запрос предварительного просмотра к генератору, создающему предварительный просмотр и или возвращающему его или говорящему генератор, где найти его.
Демон возвращает ответ генератора на потребительскую часть Беглого взгляда.
Беглый взгляд загружает надлежащий пакет дисплея (если необходимый).
Пакет дисплея составляет документ в читателе документа.
Установка генераторов беглого взгляда
Можно сохранить генератор Беглого взгляда в комплекте приложений (в MyApp.app/Contents/Library/QuickLook/
) или в одном из стандартных расположений файловой системы:
~/Library/QuickLook
— сторонние генераторы, доступные только для, вошли в систему пользователь/Library/QuickLook
— сторонние генераторы, доступные для всех пользователей системы/System/Library/QuickLook
— Предоставленные Apple генераторы, доступные для всех пользователей системы
Когда Беглый взгляд ищет генератор для использования, он сначала ищет его в пакете связанного приложения и затем в стандартных расположениях файловой системы в порядке, данном в списке выше. Если два генератора имеют тот же UTI, Беглый взгляд использует первый, который это находит в этом поисковом порядке. Если два генератора требуют того же UTI на том же уровне (например, в /Library/QuickLook
), нет никакого способа определить, какой из них будет выбран.