Я пытаюсь нарисовать png в моем (NPAPI) веб-плагине для Mac на основе basic-plugin .
Я хотел бы перерисовать плагин на NPCocoaEventMouseDown
, но я 'У меня есть проблемы, чтобы получить cgContextRef
.
Метод ниже работает для NPCocoaEventDrawRect
, но не для NPCocoaEventMouseDown
, потому что тогда я не могу использовать event->data.draw.context
.Я пытался получить cgContextRef
с помощью
CGContextRef cgContext = (NP_CGContext*)currentInstance->window.window
, но это не помогло.Вот моя функция:
void drawPlugin(NPP instance, NPCocoaEvent* event)
{
char* path = "/shot.png";
if(!instance || !event)
return;
PluginInstance* currentInstance = (PluginInstance*)(instance->pdata);
//CGContextRef cgContext = event->data.draw.context; //works with DrawRect
CGContextRef cgContext = (NP_CGContext*)currentInstance->window.window;
if (!cgContext) {
return;
}
float windowWidth = currentInstance->window.width;
float windowHeight = currentInstance->window.height;
CGContextSaveGState(cgContext);
//.....
CGContextRestoreGState(cgContext);
}
И функция вызывается здесь:
int16_t NPP_HandleEvent(NPP instance, void* event)
{
NPCocoaEvent* cocoaEvent = (NPCocoaEvent*)event;
if (cocoaEvent && (cocoaEvent->type == NPCocoaEventDrawRect)) {
return 1;
}
if(cocoaEvent)
{
switch (cocoaEvent->type) {
case NPCocoaEventDrawRect:
drawPlugin(instance, (NPCocoaEvent*)event);
break;
case NPCocoaEventMouseDown:
drawPlugin(instance, (NPCocoaEvent*)event);
break;
default:
break;
}
return 1;
}
return 0;
}
Как я могу получить cgContextRef
в NPCocoaEventMouseDown
?