/************************************************************************** Prepares the clipboard so that text can be written into it **************************************************************************/ struct IFFHandle *PrepareClipboard(void) { struct IFFHandle *iff = AllocIFF(); if(iff) { if((iff->iff_Stream = (ULONG) OpenClipboard (0))) { InitIFFasClip(iff); if(!OpenIFF(iff,IFFF_WRITE)) { if(!PushChunk(iff, MAKE_ID('F','T','X','T'), MAKE_ID('F','O','R','M'), IFFSIZE_UNKNOWN)) { if(!PushChunk(iff, 0, MAKE_ID('C','H','R','S'), IFFSIZE_UNKNOWN)) { return iff; } PopChunk(iff); } CloseIFF(iff); } CloseClipboard((struct ClipboardHandle*)iff->iff_Stream); } FreeIFF(iff); } return NULL; }
BOOL InitClipboard(struct InstData *data, ULONG flags) { struct IFFHandle *iff; ENTER(); if((iff = AllocIFF()) != NULL) { SHOWVALUE(DBF_CLIPBOARD, iff); if((iff->iff_Stream = (ULONG)OpenClipboard(0)) != 0) { SHOWVALUE(DBF_CLIPBOARD, iff->iff_Stream); InitIFFasClip(iff); if(OpenIFF(iff, flags) == 0) { data->iff = iff; SHOWVALUE(DBF_CLIPBOARD, flags); RETURN(TRUE); return TRUE; } CloseClipboard((struct ClipboardHandle *)iff->iff_Stream); } FreeIFF(iff); } RETURN(FALSE); return(FALSE); }
struct IFFHandle *ami_clipboard_init_internal(int unit) { struct IFFHandle *iffhandle = NULL; if(iffhandle = AllocIFF()) { if(iffhandle->iff_Stream = (ULONG)OpenClipboard(unit)) { InitIFFasClip(iffhandle); } } return iffhandle; }
void ClipInit(void) { no_clip_conversion = PrefsFindBool("noclipconversion"); // Create clipboard IFF handle iffw = AllocIFF(); if (iffw) { ch = OpenClipboard(PRIMARY_CLIP); if (ch) { iffw->iff_Stream = (ULONG)ch; InitIFFasClip(iffw); clipboard_open = true; } } }
/*** Open the clipboard using iffparse library***/ static BOOL CBOpen(ULONG unit) { extern struct Library * IFFParseBase; if( IFFParseBase != NULL && (clip = (APTR) AllocIFF() ) ) { if( (clip->iff_Stream = (ULONG) OpenClipboard(unit)) ) { InitIFFasClip(clip); return TRUE; } FreeIFF( clip ); } ThrowError(Wnd, ErrMsg(ERR_OPENCLIP)); return FALSE; }
char *Sys_GetClipboardData(void) { #ifdef __AROS__ struct IFFHandle *IFFHandle; struct ContextNode *cn; char *data = NULL; if ((IFFHandle = AllocIFF())) { if ((IFFHandle->iff_Stream = (IPTR) OpenClipboard(0))) { InitIFFasClip(IFFHandle); if (!OpenIFF(IFFHandle, IFFF_READ)) { if (!StopChunk(IFFHandle, ID_FTXT, ID_CHRS)) { if (!ParseIFF(IFFHandle, IFFPARSE_SCAN)) { cn = CurrentChunk(IFFHandle); if (cn && (cn->cn_Type == ID_FTXT) && (cn->cn_ID == ID_CHRS) && (cn->cn_Size > 0)) { data = (char *) Z_Malloc(cn->cn_Size + 1); if (ReadChunkBytes(IFFHandle, data, cn->cn_Size)) { data[cn->cn_Size] = '\0'; } else { data[0] = '\0'; } } } } CloseIFF(IFFHandle); } CloseClipboard((struct ClipboardHandle *) IFFHandle->iff_Stream); } FreeIFF(IFFHandle); } return data; #else return NULL; #endif }