void clipboard_push_text(char * text) { #ifdef MACOSX PasteboardRef newclipboard; if (PasteboardCreate(kPasteboardClipboard, &newclipboard)!=noErr) return; if (PasteboardClear(newclipboard)!=noErr) return; PasteboardSynchronize(newclipboard); CFDataRef data = CFDataCreate(kCFAllocatorDefault, text, strlen(text)); PasteboardPutItemFlavor(newclipboard, (PasteboardItemID)1, CFSTR("com.apple.traditional-mac-plain-text"), data, 0); #elif defined WIN32 if (OpenClipboard(NULL)) { HGLOBAL cbuffer; char * glbuffer; EmptyClipboard(); cbuffer = GlobalAlloc(GMEM_DDESHARE, strlen(text)+1); glbuffer = (char*)GlobalLock(cbuffer); strcpy(glbuffer, text); GlobalUnlock(cbuffer); SetClipboardData(CF_TEXT, cbuffer); CloseClipboard(); } #else printf("Not implemented: put text on clipboard \"%s\"\n", text); #endif }
static void RomInfoCopyToClipboard (void) { OSStatus err; PasteboardRef clipboard; PasteboardSyncFlags sync; CFDataRef cfdata; char text[1024]; RomInfoBuildInfoText(text); err = PasteboardCreate(kPasteboardClipboard, &clipboard); if (err == noErr) { err = PasteboardClear(clipboard); if (err == noErr) { sync = PasteboardSynchronize(clipboard); if (!(sync & kPasteboardModified) && (sync & kPasteboardClientIsOwner)) { cfdata = CFDataCreate(kCFAllocatorDefault, (UInt8 *) text, (CFIndex) strlen(text)); if (cfdata) { err = PasteboardPutItemFlavor(clipboard, (PasteboardItemID) 1, CFSTR("com.apple.traditional-mac-plain-text"), cfdata, 0); CFRelease(cfdata); } } } CFRelease(clipboard); } }
void GHOST_SystemCarbon::putClipboard(GHOST_TInt8 *buffer, bool selection) const { if (selection) {return; } // for copying the selection, used on X11 PasteboardRef inPasteboard; CFDataRef textData = NULL; OSStatus err = noErr; /*For error checking*/ OSStatus syncFlags; err = PasteboardCreate(kPasteboardClipboard, &inPasteboard); if (err != noErr) { return; } syncFlags = PasteboardSynchronize(inPasteboard); /* as we always put in a new string, we can safely ignore sync flags */ if (syncFlags < 0) { return; } err = PasteboardClear(inPasteboard); if (err != noErr) { return; } textData = CFDataCreate(kCFAllocatorDefault, (UInt8 *)buffer, strlen(buffer)); if (textData) { err = PasteboardPutItemFlavor(inPasteboard, (PasteboardItemID)1, CFSTR("public.utf8-plain-text"), textData, 0); if (err != noErr) { if (textData) { CFRelease(textData); } return; } } if (textData) { CFRelease(textData); } }
bool ClipBoard::setText(const string text) { #ifdef TARGET_OSX OSStatus err = noErr; static PasteboardRef pasteboard = NULL; PasteboardCreate( kPasteboardClipboard, &pasteboard ); err = PasteboardClear( pasteboard ); require_noerr( err, PasteboardClear_FAILED ); CFDataRef data; data = CFDataCreate(kCFAllocatorDefault, (UInt8*) text.c_str(), strlen(text.c_str())+1); err = PasteboardPutItemFlavor( pasteboard, (PasteboardItemID)1, kUTTypeUTF8PlainText, data, 0); require_noerr( err, PasteboardPutItemFlavor_FAILED ); return true; PasteboardPutItemFlavor_FAILED: ofLog(OF_LOG_ERROR, "ofxGLEditor: pasting from the pasteboard failed"); return false; PasteboardClear_FAILED: ofLog(OF_LOG_ERROR, "ofxGLEditor: clearing the cliboard failed"); return false; #else ofLog(OF_LOG_WARNING, "ofxGLEditor: sorry, pasting from the system clipboard is not supported on your OS yet"); return true; #endif }
char* _applegetsnarf(void) { char *s, *t; CFArrayRef flavors; CFDataRef data; CFIndex nflavor, ndata, j; CFStringRef type; ItemCount nitem; PasteboardItemID id; PasteboardSyncFlags flags; UInt32 i; /* fprint(2, "applegetsnarf\n"); */ qlock(&clip.lk); if(clip.apple == nil){ if(PasteboardCreate(kPasteboardClipboard, &clip.apple) != noErr){ fprint(2, "apple pasteboard create failed\n"); qunlock(&clip.lk); return nil; } } flags = PasteboardSynchronize(clip.apple); if(flags&kPasteboardClientIsOwner){ s = strdup(clip.buf); qunlock(&clip.lk); return s; } if(PasteboardGetItemCount(clip.apple, &nitem) != noErr){ fprint(2, "apple pasteboard get item count failed\n"); qunlock(&clip.lk); return nil; } for(i=1; i<=nitem; i++){ if(PasteboardGetItemIdentifier(clip.apple, i, &id) != noErr) continue; if(PasteboardCopyItemFlavors(clip.apple, id, &flavors) != noErr) continue; nflavor = CFArrayGetCount(flavors); for(j=0; j<nflavor; j++){ type = (CFStringRef)CFArrayGetValueAtIndex(flavors, j); if(!UTTypeConformsTo(type, CFSTR("public.utf16-plain-text"))) continue; if(PasteboardCopyItemFlavorData(clip.apple, id, type, &data) != noErr) continue; ndata = CFDataGetLength(data); qunlock(&clip.lk); s = smprint("%.*S", ndata/2, (Rune*)CFDataGetBytePtr(data)); CFRelease(flavors); CFRelease(data); for(t=s; *t; t++) if(*t == '\r') *t = '\n'; return s; } CFRelease(flavors); } qunlock(&clip.lk); return nil; }
void copy_to_clipboard(const std::string& text, const bool) { std::string new_str; new_str.reserve(text.size()); for (unsigned int i = 0; i < text.size(); ++i) { if (text[i] == '\n') { new_str.push_back('\r'); } else { new_str.push_back(text[i]); } } OSStatus err = noErr; PasteboardRef clipboard; PasteboardSyncFlags syncFlags; CFDataRef textData = NULL; err = PasteboardCreate(kPasteboardClipboard, &clipboard); if (err != noErr) return; err = PasteboardClear(clipboard); if (err != noErr) return; syncFlags = PasteboardSynchronize(clipboard); if ((syncFlags&kPasteboardModified) && !(syncFlags&kPasteboardClientIsOwner)) return; textData = CFDataCreate(kCFAllocatorDefault, (const UInt8 *)new_str.c_str(), text.size()); PasteboardPutItemFlavor(clipboard, (PasteboardItemID)1, CFSTR("public.utf8-plain-text"), textData, 0); }
COSXClipboard::COSXClipboard() : m_time(0), m_pboard(NULL) { m_converters.push_back(new COSXClipboardHTMLConverter); m_converters.push_back(new COSXClipboardBMPConverter); m_converters.push_back(new COSXClipboardUTF16Converter); m_converters.push_back(new COSXClipboardTextConverter); OSStatus createErr = PasteboardCreate(kPasteboardClipboard, &m_pboard); if (createErr != noErr) { LOG((CLOG_DEBUG "failed to create clipboard reference: error %i", createErr)); LOG((CLOG_ERR "unable to connect to pasteboard, clipboard sharing disabled", createErr)); m_pboard = NULL; return; } OSStatus syncErr = PasteboardSynchronize(m_pboard); if (syncErr != noErr) { LOG((CLOG_DEBUG "failed to syncronize clipboard: error %i", syncErr)); } }
void Picture_copyToClipboard (Picture me) { /* * Find the clipboard and clear it. */ PasteboardRef clipboard = nullptr; PasteboardCreate (kPasteboardClipboard, & clipboard); PasteboardClear (clipboard); /* * Add a PDF flavour to the clipboard. */ static CGDataConsumerCallbacks callbacks = { appendBytes, nullptr }; CFDataRef data = CFDataCreateMutable (kCFAllocatorDefault, 0); CGDataConsumerRef consumer = CGDataConsumerCreate ((void *) data, & callbacks); int resolution = 600; CGRect rect = CGRectMake (0, 0, (my selx2 - my selx1) * resolution, (my sely1 - my sely2) * resolution); CGContextRef context = CGPDFContextCreate (consumer, & rect, nullptr); //my selx1 * RES, (12 - my sely2) * RES, my selx2 * RES, (12 - my sely1) * RES) {// scope autoGraphics graphics = Graphics_create_pdf (context, resolution, my selx1, my selx2, my sely1, my sely2); Graphics_play (my graphics.get(), graphics.get()); } PasteboardPutItemFlavor (clipboard, (PasteboardItemID) 1, kUTTypePDF, data, kPasteboardFlavorNoFlags); CFRelease (data); /* * Forget the clipboard. */ CFRelease (clipboard); }
shoes_code shoes_init(SHOES_INIT_ARGS) { #ifdef SHOES_GTK gtk_init(NULL, NULL); #endif #ifdef SHOES_WIN32 INITCOMMONCONTROLSEX InitCtrlEx; InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX); InitCtrlEx.dwICC = ICC_PROGRESS_CLASS; InitCommonControlsEx(&InitCtrlEx); #else signal(SIGINT, shoes_sigint); signal(SIGQUIT, shoes_sigint); #endif ruby_init(); shoes_ruby_init(); shoes_world = shoes_world_alloc(); #ifdef SHOES_QUARTZ shoes_app_quartz_install(); shoes_slot_quartz_register(); if (PasteboardCreate(kPasteboardClipboard, &shoes_world->os.clip) != noErr) { INFO("Apple Pasteboard create failed.\n"); } #endif #ifdef SHOES_WIN32 shoes_world->os.instance = inst; shoes_world->os.style = style; shoes_classex_init(); #endif return SHOES_OK; }
/** * Initialize the global pasteboard and return a reference to it. * * @param pPasteboardRef Reference to the global pasteboard. * * @returns IPRT status code. */ int initPasteboard(PasteboardRef *pPasteboardRef) { int rc = VINF_SUCCESS; if (PasteboardCreate(kPasteboardClipboard, pPasteboardRef)) rc = VERR_NOT_SUPPORTED; return rc; }
COSXClipboard::COSXClipboard() : m_time(0), m_pboard(NULL) { m_converters.push_back(new COSXClipboardUTF16Converter); m_converters.push_back(new COSXClipboardTextConverter); PasteboardCreate( kPasteboardClipboard, &m_pboard); PasteboardSynchronize(m_pboard); }
//****************************************************************************** bool CClipboard::SetString( //Copies the given string into the system clipboard //Returns: true on success, false otherwise. // //Params: const WSTRING& sClip) //(in) { #ifdef WIN32 if (!OpenClipboard(NULL)) return false; EmptyClipboard(); HGLOBAL global = GlobalAlloc(GMEM_ZEROINIT, (sClip.size()+1)*sizeof(WCHAR)); if (global == NULL) { CloseClipboard(); return false; } LPWSTR data = (LPWSTR)GlobalLock(global); WCScpy(data, sClip.c_str()); GlobalUnlock(global); SetClipboardData(CF_UNICODETEXT, global); CloseClipboard(); return true; #elif defined(__APPLE__) PasteboardRef theClipboard; OSStatus err = PasteboardCreate(kPasteboardClipboard, &theClipboard); if (err != noErr) return false; PasteboardClear(theClipboard); PasteboardSynchronize(theClipboard); BYTE *pbOutStr = NULL; if (to_utf8(sClip.c_str(), pbOutStr)) { CFDataRef data = CFDataCreate(kCFAllocatorDefault, (UInt8*)pbOutStr, sClip.size() + 1); PasteboardPutItemFlavor(theClipboard, (PasteboardItemID)1, CFSTR("public.utf8-plain-text"), data, 0); } delete[] pbOutStr; return true; #elif defined(__linux__) || defined(__FreeBSD__) bool bSuccess = false; BYTE *pbOutStr = NULL; if (to_utf8(sClip.c_str(), pbOutStr)) bSuccess = SetStringUTF8((const char*)pbOutStr); delete[] pbOutStr; return bSuccess; #elif defined(__native_client__) return false; #else #error CClipboard::SetString -- Unicode not implemented #endif }
void g2LabelEdit::CopyBuffer() { // Win32 implementation #ifdef _WIN32 // Attempt to open clipboard if(!OpenClipboard(GetForegroundWindow())) return; // Empty current clipboard EmptyClipboard(); // Allocate a system resource (a memory buffer for the text) HGLOBAL TextHandle = GlobalAlloc(GMEM_MOVEABLE, (strlen(TextBuffer) + 1) * sizeof(char)); if(TextHandle == NULL) return; LPTSTR StringLock = (LPTSTR)GlobalLock(TextHandle); if(StringLock == NULL) return; strcpy(StringLock, TextBuffer); GlobalUnlock(TextHandle); // Copy to the clipboard SetClipboardData(CF_TEXT, TextHandle); // Close clipboard CloseClipboard(); // OSX implementation #elif __APPLE__ // Allocate or get a reference to the application's active clipboard PasteboardRef ClipboardHandle; if(PasteboardCreate(kPasteboardClipboard, &ClipboardHandle) != noErr) return; // Clear current clipboard if(PasteboardClear(ClipboardHandle) != noErr) return; // Explicitly update (after cleaning is important) PasteboardSynchronize(ClipboardHandle); // Create a system-wide buffer to give to the clipboard CFDataRef DataBuffer = CFDataCreate(kCFAllocatorDefault, (const UInt8*)TextBuffer, CFIndex((strlen(TextBuffer) + 1) * sizeof(char))); if(DataBuffer == NULL) return; // Paste into clipboard PasteboardPutItemFlavor(ClipboardHandle, (PasteboardItemID)1, CFSTR("public.utf8-plain-text"), DataBuffer, kPasteboardFlavorNoFlags); // Not a feature in Linux... #endif }
wxClipboard::wxClipboard() { m_open = false; m_data = NULL ; PasteboardRef clipboard = 0; OSStatus err = PasteboardCreate( kPasteboardClipboard, &clipboard ); if (err != noErr) { wxLogSysError( wxT("Failed to create the clipboard.") ); } m_pasteboard.reset(clipboard); }
QMacPasteboard::QMacPasteboard(CFStringRef name, uchar mt) { mac_mime_source = false; mime_type = mt ? mt : uchar(QMacPasteboardMime::MIME_ALL); paste = 0; OSStatus err = PasteboardCreate(name, &paste); if(err == noErr) { PasteboardSetPromiseKeeper(paste, promiseKeeper, this); } else { qDebug("PasteBoard: Error creating pasteboard: %s [%d]", QCFString::toQString(name).toLatin1().constData(), (int)err); } }
QMacPasteboard::QMacPasteboard(uchar mt) { mac_mime_source = false; mime_type = mt ? mt : uchar(QMacPasteboardMime::MIME_ALL); paste = 0; OSStatus err = PasteboardCreate(0, &paste); if(err == noErr) { PasteboardSetPromiseKeeper(paste, promiseKeeper, this); } else { qDebug("PasteBoard: Error creating pasteboard: [%d]", (int)err); } }
void QuartzBitmap_Output(QuartzDesc_t dev, QuartzBitmapDevice *qbd) { if(qbd->path && qbd->uti) { /* On 10.4+ we can employ the CGImageDestination API to create a variety of different bitmap formats */ #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 char buf[PATH_MAX+1]; snprintf(buf, PATH_MAX, qbd->path, qbd->page); buf[PATH_MAX] = '\0'; CFStringRef pathString = CFStringCreateWithBytes(kCFAllocatorDefault, (UInt8*) buf, strlen(buf), kCFStringEncodingUTF8, FALSE); CFURLRef path; if(CFStringFind(pathString, CFSTR("://"), 0).location != kCFNotFound) { CFStringRef pathEscaped = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, pathString, NULL, NULL, kCFStringEncodingUTF8); path = CFURLCreateWithString(kCFAllocatorDefault, pathEscaped, NULL); CFRelease(pathEscaped); } else { path = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (const UInt8*) buf, strlen(buf), FALSE); } CFRelease(pathString); CFStringRef scheme = CFURLCopyScheme(path); CFStringRef type = CFStringCreateWithBytes(kCFAllocatorDefault, (UInt8*) qbd->uti, strlen(qbd->uti), kCFStringEncodingUTF8, FALSE); CGImageRef image = CGBitmapContextCreateImage(qbd->bitmap); if(CFStringCompare(scheme,CFSTR("file"), 0) == 0) { /* file output */ CGImageDestinationRef dest = CGImageDestinationCreateWithURL(path, type, 1, NULL); if(dest) { CGImageDestinationAddImage(dest, image, NULL); CGImageDestinationFinalize(dest); CFRelease(dest); } else error(_("QuartzBitmap_Output - unable to open file '%s'"), buf); } else if(CFStringCompare(scheme, CFSTR("clipboard"), 0) == 0) { /* clipboard output */ CFMutableDataRef data = CFDataCreateMutable(kCFAllocatorDefault, 0); CGImageDestinationRef dest = CGImageDestinationCreateWithData(data, type, 1, NULL); CGImageDestinationAddImage(dest, image, NULL); CGImageDestinationFinalize(dest); CFRelease(dest); PasteboardRef pb = NULL; if(PasteboardCreate(kPasteboardClipboard, &pb) == noErr) { PasteboardClear(pb); PasteboardSynchronize(pb); PasteboardPutItemFlavor(pb, (PasteboardItemID) 1, type, data, 0); } CFRelease(data); } else warning(_("not a supported scheme, no image data written")); CFRelease(scheme); CFRelease(type); CFRelease(path); CFRelease(image); #endif } }
int QuartzWindow::put_scrap_text(const char* s, int len) { // See Pasteboard Manager Programming guide PasteboardRef clipboard; OSStatus err; CFDataRef textData = CFDataCreate(kCFAllocatorDefault, (const UInt8*)s, len); if (textData == NULL) return -1; if ((err = PasteboardCreate(kPasteboardClipboard, &clipboard)) != noErr) return err; if ((err = PasteboardClear(clipboard)) != noErr) return err; return PasteboardPutItemFlavor(clipboard, (PasteboardItemID)s, kUTTypeOldMacText, textData, kPasteboardFlavorNoFlags); }
void _appleputsnarf(char *s) { CFDataRef cfdata; PasteboardSyncFlags flags; /* fprint(2, "appleputsnarf\n"); */ if(strlen(s) >= SnarfSize) return; qlock(&clip.lk); strcpy(clip.buf, s); runesnprint(clip.rbuf, nelem(clip.rbuf), "%s", s); if(clip.apple == nil){ if(PasteboardCreate(kPasteboardClipboard, &clip.apple) != noErr){ fprint(2, "apple pasteboard create failed\n"); qunlock(&clip.lk); return; } } if(PasteboardClear(clip.apple) != noErr){ fprint(2, "apple pasteboard clear failed\n"); qunlock(&clip.lk); return; } flags = PasteboardSynchronize(clip.apple); if((flags&kPasteboardModified) || !(flags&kPasteboardClientIsOwner)){ fprint(2, "apple pasteboard cannot assert ownership\n"); qunlock(&clip.lk); return; } cfdata = CFDataCreate(kCFAllocatorDefault, (uchar*)clip.rbuf, runestrlen(clip.rbuf)*2); if(cfdata == nil){ fprint(2, "apple pasteboard cfdatacreate failed\n"); qunlock(&clip.lk); return; } if(PasteboardPutItemFlavor(clip.apple, (PasteboardItemID)1, CFSTR("public.utf16-plain-text"), cfdata, 0) != noErr){ fprint(2, "apple pasteboard putitem failed\n"); CFRelease(cfdata); qunlock(&clip.lk); return; } /* CFRelease(cfdata); ??? */ qunlock(&clip.lk); }
std::string copy_from_clipboard(const bool) { OSStatus err = noErr; PasteboardRef clipboard; PasteboardSyncFlags syncFlags; ItemCount count; err = PasteboardCreate(kPasteboardClipboard, &clipboard); if (err != noErr) return ""; syncFlags = PasteboardSynchronize(clipboard); if (syncFlags&kPasteboardModified) return ""; err = PasteboardGetItemCount(clipboard, &count); if (err != noErr) return ""; for (UInt32 k = 1; k <= count; k++) { PasteboardItemID itemID; CFArrayRef flavorTypeArray; CFIndex flavorCount; err = PasteboardGetItemIdentifier(clipboard, k, &itemID); if (err != noErr) return ""; err = PasteboardCopyItemFlavors(clipboard, itemID, &flavorTypeArray); if (err != noErr) return ""; flavorCount = CFArrayGetCount(flavorTypeArray); for (CFIndex j = 0; j < flavorCount; j++) { CFStringRef flavorType; CFDataRef flavorData; CFIndex flavorDataSize; flavorType = (CFStringRef)CFArrayGetValueAtIndex(flavorTypeArray, j); if (UTTypeConformsTo(flavorType, CFSTR("public.utf8-plain-text"))) { err = PasteboardCopyItemFlavorData(clipboard, itemID, flavorType, &flavorData); if (err != noErr) { CFRelease(flavorTypeArray); return ""; } flavorDataSize = CFDataGetLength(flavorData); std::string str; str.reserve(flavorDataSize); str.resize(flavorDataSize); CFDataGetBytes(flavorData, CFRangeMake(0, flavorDataSize), (UInt8 *)str.data()); for (unsigned int i = 0; i < str.size(); ++i) { if (str[i] == '\r') str[i] = '\n'; } return str; } } } return ""; }
void copy_to_clipboard(const char* text) { OSStatus err = noErr; PasteboardRef gClipboard; CFDataRef textData; err = PasteboardCreate( kPasteboardClipboard, &gClipboard ); err = PasteboardClear( gClipboard ); // allocate data based on the size of the selection textData = CFDataCreate( kCFAllocatorSystemDefault, (UInt8*)text, strlen(text)); // add text data to the pasteboard err = PasteboardPutItemFlavor( gClipboard, (PasteboardItemID)1, CFSTR("com.apple.traditional-mac-plain-text"), textData, 0 ); CFRelease(textData); CFRelease( gClipboard ); }
void osx_driver_setclipboard_loop( struct ts_display_t *d, ts_clipboard_p clipboard) { if (!clip) PasteboardCreate(kPasteboardClipboard, &clip); if (!clipboard->flavorCount) return; for (int i = 0; i < clipboard->flavorCount; i++) { if (!strcmp(clipboard->flavor[i].name, "text")) { V1("%s adding %d bytes of %s\n", __func__, (int)clipboard->flavor[i].size, clipboard->flavor[i].name); if (PasteboardClear(clip) != noErr) { V1("apple pasteboard clear failed"); return; } PasteboardSyncFlags flags = PasteboardSynchronize(clip); if ((flags & kPasteboardModified) || !(flags & kPasteboardClientIsOwner)) { V1("apple pasteboard cannot assert ownership"); return; } CFDataRef cfdata = CFDataCreate(kCFAllocatorDefault, (uint8_t*)clipboard->flavor[i].data, clipboard->flavor[i].size); if (cfdata == nil) { V1("apple pasteboard cfdatacreate failed"); return; } if (PasteboardPutItemFlavor(clip, (PasteboardItemID) 1, CFSTR("public.utf8-plain-text"), cfdata, 0) != noErr) { V1("apple pasteboard putitem failed"); CFRelease(cfdata); } CFRelease(cfdata); return; } } }
char *TCOD_sys_clipboard_get() { PasteboardSyncFlags syncFlags; ItemCount itemCount; PasteboardRef clipboard; UInt32 itemIndex; if (PasteboardCreate(kPasteboardClipboard, &clipboard) != noErr) return NULL; syncFlags = PasteboardSynchronize(clipboard); if (PasteboardGetItemCount(clipboard, &itemCount) != noErr) return NULL; if (itemCount == 0) return NULL; for(itemIndex = 1; itemIndex <= itemCount; itemIndex++) { PasteboardItemID itemID; CFArrayRef flavorTypeArray; CFIndex flavorCount; CFIndex flavorIndex; if (PasteboardGetItemIdentifier(clipboard, itemIndex, &itemID ) != noErr) return NULL; if (PasteboardCopyItemFlavors(clipboard, itemID, &flavorTypeArray) != noErr) return NULL; flavorCount = CFArrayGetCount(flavorTypeArray); for(flavorIndex = 0; flavorIndex < flavorCount; flavorIndex++) { CFStringRef flavorType; CFDataRef flavorData; CFIndex flavorDataSize; flavorType = (CFStringRef)CFArrayGetValueAtIndex(flavorTypeArray, flavorIndex); if (UTTypeConformsTo(flavorType, CFSTR("public.plain-text"))) { if (PasteboardCopyItemFlavorData(clipboard, itemID, flavorType, &flavorData) != noErr) { CFRelease(flavorData); return NULL; } flavorDataSize = CFDataGetLength( flavorData ); flavorDataSize = (flavorDataSize<254) ? flavorDataSize : 254; short dataIndex; for(dataIndex = 0; dataIndex <= flavorDataSize; dataIndex++) { clipboardText[dataIndex] = *(CFDataGetBytePtr(flavorData) + dataIndex); } clipboardText[flavorDataSize] = '\0'; clipboardText[flavorDataSize+1] = '\n'; CFRelease (flavorData); } } } return clipboardText; }
string ClipBoard::getText() { #ifdef TARGET_OSX OSStatus err = noErr; ItemCount itemCount; PasteboardSyncFlags syncFlags; static PasteboardRef inPasteboard = NULL; PasteboardCreate( kPasteboardClipboard, &inPasteboard ); char* data; data = NULL; syncFlags = PasteboardSynchronize( inPasteboard ); err = badPasteboardSyncErr; err = PasteboardGetItemCount( inPasteboard, &itemCount ); require_noerr( err, CantGetPasteboardItemCount ); for( int itemIndex = 1; itemIndex <= itemCount; itemIndex++ ) { PasteboardItemID itemID; CFDataRef flavorData; err = PasteboardGetItemIdentifier( inPasteboard, itemIndex, &itemID ); require_noerr( err, CantGetPasteboardItemIdentifier ); err = PasteboardCopyItemFlavorData( inPasteboard, itemID, CFSTR("public.utf8-plain-text"), &flavorData ); data = (char*)CFDataGetBytePtr(flavorData); CantGetPasteboardItemIdentifier: ; } CantGetPasteboardItemCount: return (string) data; #else ofLog(OF_LOG_WARNING, "ofxGLEditor: sorry, copying to the system clipboard is not supported on your OS yet"); return ""; #endif }
void clipboard_push_text(char * text) { #ifdef MACOSX PasteboardRef newclipboard; if (PasteboardCreate(kPasteboardClipboard, &newclipboard)!=noErr) return; if (PasteboardClear(newclipboard)!=noErr) return; PasteboardSynchronize(newclipboard); CFDataRef data = CFDataCreate(kCFAllocatorDefault, text, strlen(text)); PasteboardPutItemFlavor(newclipboard, (PasteboardItemID)1, CFSTR("com.apple.traditional-mac-plain-text"), data, 0); #elif defined WIN32 if (OpenClipboard(NULL)) { HGLOBAL cbuffer; char * glbuffer; EmptyClipboard(); cbuffer = GlobalAlloc(GMEM_DDESHARE, strlen(text)+1); glbuffer = (char*)GlobalLock(cbuffer); strcpy(glbuffer, text); GlobalUnlock(cbuffer); SetClipboardData(CF_TEXT, cbuffer); CloseClipboard(); } #elif (defined(LIN32) || defined(LIN64)) && defined(SDL_VIDEO_DRIVER_X11) if (clipboard_text!=NULL) { free(clipboard_text); clipboard_text = NULL; } clipboard_text = mystrdup(text); sdl_wminfo.info.x11.lock_func(); XSetSelectionOwner(sdl_wminfo.info.x11.display, XA_CLIPBOARD, sdl_wminfo.info.x11.window, CurrentTime); XFlush(sdl_wminfo.info.x11.display); sdl_wminfo.info.x11.unlock_func(); #else printf("Not implemented: put text on clipboard \"%s\"\n", text); #endif }
void TCOD_sys_clipboard_set(const char *value) { PasteboardRef clipboard; if (PasteboardCreate(kPasteboardClipboard, &clipboard) != noErr) return; if (PasteboardClear(clipboard) != noErr) { CFRelease(clipboard); return; } size_t len = strlen(value); CFDataRef data = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, (const UInt8 *)value, len, kCFAllocatorNull); if (data == NULL) { CFRelease(clipboard); return; } OSStatus err; err = PasteboardPutItemFlavor(clipboard, NULL, kUTTypePlainText, data, 0); CFRelease(clipboard); CFRelease(data); }
GHOST_TUns8 *GHOST_SystemCarbon::getClipboard(bool selection) const { PasteboardRef inPasteboard; PasteboardItemID itemID; CFDataRef flavorData; OSStatus err = noErr; GHOST_TUns8 *temp_buff; CFRange range; OSStatus syncFlags; err = PasteboardCreate(kPasteboardClipboard, &inPasteboard); if (err != noErr) { return NULL; } syncFlags = PasteboardSynchronize(inPasteboard); /* as we always get in a new string, we can safely ignore sync flags if not an error*/ if (syncFlags < 0) { return NULL; } err = PasteboardGetItemIdentifier(inPasteboard, 1, &itemID); if (err != noErr) { return NULL; } err = PasteboardCopyItemFlavorData(inPasteboard, itemID, CFSTR("public.utf8-plain-text"), &flavorData); if (err != noErr) { return NULL; } range = CFRangeMake(0, CFDataGetLength(flavorData)); temp_buff = (GHOST_TUns8 *) malloc(range.length + 1); CFDataGetBytes(flavorData, range, (UInt8 *)temp_buff); temp_buff[range.length] = '\0'; if (temp_buff) { return temp_buff; } else { return NULL; } }
bool getClipBoard(char* text /* out */, const int bufSize ) { OSStatus err = noErr; PasteboardRef theClipboard; err = PasteboardCreate( kPasteboardClipboard, &theClipboard ); require_noerr( err, PasteboardCreateFailed ); if (!GetDataFromPasteboard(theClipboard, text, bufSize)) { fprintf(stderr, "Cannot copy clipboard, GetDataFromPasteboardFailed!\n"); return false; } CFRelease(theClipboard); return true; // ---- error handling PasteboardCreateFailed: fprintf(stderr, "Cannot copy clipboard, PasteboardCreateFailed!\n"); CFRelease(theClipboard); return false; }
void start_paste(widget_list *widget) { OSStatus err = noErr; PasteboardRef gClipboard; PasteboardItemID itemID; CFDataRef flavorData; char* flavorText; err = PasteboardCreate( kPasteboardClipboard, &gClipboard ); //require_noerr( err, CantCreateClipboard ); err = PasteboardGetItemIdentifier( gClipboard, 1, &itemID ); err = PasteboardCopyItemFlavorData( gClipboard, itemID, CFSTR("com.apple.traditional-mac-plain-text"), &flavorData ); int flavorDataSize = CFDataGetLength(flavorData); flavorText=(char*)malloc(flavorDataSize+1); short dataIndex; for(dataIndex = 0; dataIndex <= flavorDataSize; dataIndex++ ) { char byte = *(CFDataGetBytePtr( flavorData ) + dataIndex); flavorText[dataIndex] = (byte>32) ? byte : ' '; } flavorText[flavorDataSize] = '\0'; CFRelease(flavorData); if (widget == NULL) { do_paste (flavorText); } else { do_paste_to_text_field(widget, flavorText); } free(flavorText); CFRelease( gClipboard ); }
wxDragResult wxDropSource::DoDragDrop(int flags) { wxASSERT_MSG( m_data, wxT("Drop source: no data") ); if ((m_data == NULL) || (m_data->GetFormatCount() == 0)) return (wxDragResult)wxDragNone; DragReference theDrag; RgnHandle dragRegion; OSStatus err = noErr; PasteboardRef pasteboard; // add data to drag err = PasteboardCreate( kPasteboardUniqueName, &pasteboard ); if ( err != noErr ) return wxDragNone; // we add a dummy promise keeper because of strange messages when linking against carbon debug err = PasteboardSetPromiseKeeper( pasteboard, wxMacPromiseKeeper, this ); if ( err != noErr ) { CFRelease( pasteboard ); return wxDragNone; } err = PasteboardClear( pasteboard ); if ( err != noErr ) { CFRelease( pasteboard ); return wxDragNone; } PasteboardSynchronize( pasteboard ); m_data->AddToPasteboard( pasteboard, 1 ); if (NewDragWithPasteboard( pasteboard , &theDrag) != noErr) { CFRelease( pasteboard ); return wxDragNone; } dragRegion = NewRgn(); RgnHandle tempRgn = NewRgn(); EventRecord rec; ConvertEventRefToEventRecord( (EventRef) wxTheApp->MacGetCurrentEvent(), &rec ); const short dragRegionOuterBoundary = 10; const short dragRegionInnerBoundary = 9; SetRectRgn( dragRegion, rec.where.h - dragRegionOuterBoundary, rec.where.v - dragRegionOuterBoundary, rec.where.h + dragRegionOuterBoundary, rec.where.v + dragRegionOuterBoundary ); SetRectRgn( tempRgn, rec.where.h - dragRegionInnerBoundary, rec.where.v - dragRegionInnerBoundary, rec.where.h + dragRegionInnerBoundary, rec.where.v + dragRegionInnerBoundary ); DiffRgn( dragRegion, tempRgn, dragRegion ); DisposeRgn( tempRgn ); // TODO: work with promises in order to return data // only when drag was successfully completed gTrackingGlobals.m_currentSource = this; gTrackingGlobals.m_result = wxDragNone; gTrackingGlobals.m_flags = flags; err = TrackDrag( theDrag, &rec, dragRegion ); DisposeRgn( dragRegion ); DisposeDrag( theDrag ); CFRelease( pasteboard ); gTrackingGlobals.m_currentSource = NULL; return gTrackingGlobals.m_result; }