Я пытаюсь скопировать CGImageRef в буфер обмена. Я нашел функцию, которая утверждает, что должна делать это, создавая пункт назначения из (нулевого размера), добавляя изображение к месту назначения, завершая, а затем вставляя ссылку в буфер обмена в PasteboardPutItemFlav.
Однако это не работает, поэтому два вопроса:
Является ли правильным способом? (т.е. есть небольшая ошибка или я делаю это неправильно?)
Какого типа я должен сделать пункт назначения? В источнике он был в формате TIFF, но слово, похоже, не знает, как с этим справиться, я изменил его на PICT, который по крайней мере дал мне опцию «вставить», но затем сказал, что он слишком большой ...
Код:
void copyCGImageRefToPasteboard(CGImageRef ref)
{
OSStatus err = noErr;
PasteboardRef theClipboard;
err = PasteboardCreate( kPasteboardClipboard, &theClipboard );
err = PasteboardClear( theClipboard );// 1
CFMutableDataRef url = CFDataCreateMutable(kCFAllocatorDefault, 0);
CFStringRef type = kUTTypePICT;
size_t count = 1;
CFDictionaryRef options = NULL;
CGImageDestinationRef dest = CGImageDestinationCreateWithData(url, type, count, options);
CGImageDestinationAddImage(dest, ref, NULL);
CGImageDestinationFinalize(dest);
err = PasteboardPutItemFlavor( theClipboard, (PasteboardItemID)1, type, url, 0 );
}