Переосмыслить 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? Есть ли лучший способ сделать это?
1 ответ
Я думаю, что обертка - ваш единственный вариант, так как это неопределенная структура, а Boost::Python требует знания интерфейса. Вот отправная точка: http://www.boost.org/doc/libs/1_43_0/libs/python/doc/v2/faq.html
Я бы добавил необходимые функции-члены в оболочку. Я делаю что-то похожее, похоже, пока работает прилично:).