Как создать оконный плагин?
Я создал плагин Safari с использованием NPAPI, и я хочу добавить NSView в мой плагин.
Когда я пытаюсь получить функцию выброса NPWindow NPP_SetWindow(экземпляр NPP, окно NPWindow*), второй параметр равен nil.
Я думаю, что мой плагин без окон, но я не знаю, как создать оконный.
1 ответ
NPAPI на Mac не поддерживает NSView в качестве оконного режима. Есть два поддерживаемых режима:
- CoreAnimation (или https://wiki.mozilla.org/NPAPI%3AInvalidatingCoreAnimation в Chrome и Firefox)
- CoreGraphics
Раньше был режим QuickDraw, но это устарело.
Для получения дополнительной информации см . Отличный пост в блоге Стюарта Моргана на эту тему.
Можно сделать рендеринг NSView в контексте CoreGraphics, но вам придется проксировать все события, и это далеко не идеально.
РЕДАКТИРОВАТЬ: Чтобы более подробно объяснить ответ на ваш вопрос, причина, по которой параметр окна имеет значение NULL (это C api, а не Obj C, так что это NULL, а не ноль... несмотря на то, что они одинаковы =]), потому что в Модель событий Какао, вы получаете CGContextRef как часть события рисования, которое действует только в контексте этого события.