2010-05-12 4 views
1

Я делаю что-то, что сложно подсчитать в названии, поэтому, пожалуйста, несите меня.Переинтерпретировать CGImageRef с использованием PyObjC в Python

Я пишу модуль Python, который предоставляет интерфейс для моей библиотеки C++, который предоставляет некоторые специализированные функции обработки изображений. Было бы очень удобно иметь доступ к буферам изображений как CGImageRefs из Python, поэтому их можно было бы манипулировать с использованием Quartz (используя PyObjC, который хорошо работает).

Так у меня есть функция C++, которая обеспечивает представление CGImageRef из моих собственных буферов изображения, как это:

CGImageRef CreateCGImageRefForImageBuffer(shared_ptr<ImageBuffer> buffer);

Я использую Boost, :: Python, чтобы создать свой Python мост. Какой самый простой способ экспортировать эту функцию, чтобы я мог использовать CGImageRef из Python?

Проблемы: Тип CGImageRef не может быть экспортирован напрямую, поскольку он является указателем на неопределенную структуру. Поэтому я мог бы сделать функцию-оболочку, которая обертывает ее в PyCObject или что-то, чтобы заставить ее отправить указатель на Python. Но тогда как мне «передать» этот объект CGImageRef из Python? Есть ли лучший способ сделать это?

ответ

0

Я думаю, что оболочка - это ваш единственный вариант, поскольку это неопределенная структура и Boost :: Python требует знать интерфейс. Вот начальная точка: http://www.boost.org/doc/libs/1_43_0/libs/python/doc/v2/faq.html#xref

Я бы добавил необходимые функции-члены, необходимые в оболочку. Я делаю нечто похожее, похоже, работает прилично до сих пор :).