#ifdef __PRIVATE__
//#
//#	File:		Clipbd.idl				** DO NOT REMERGE WITH APPLE CODE **
//#
//#	Contains:	Definition of ODClipboard
//#
//#	Written by:	Craig Carper
//#	Ported by:	Chris Andrew
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#	          	c 1995 by Novell, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#	To Do:
//#
#else
//#	Copyright:	c 1993-1994 by Apple Computer, Inc., all rights reserved.
//#	          	c 1995 by Novell, Inc., all rights reserved.
#endif

#ifndef _CLIPBD_
#define _CLIPBD_

#ifndef _CLIPBDB_
#include "ClipbdB.idl"
#endif

//=====================================================================================
// Classes defined in this interface
//=====================================================================================
interface  ODClipboard;

//=====================================================================================
// Classes used by this interface
//=====================================================================================
interface  ODStorageUnit;
interface  ODDraft;
interface  ODDocument;
interface  ODContainer;
interface  ODSession;
interface  ODPlatformTypeList;
interface  ODFacet;

//=====================================================================================
// Implementation Types
//=====================================================================================

typedef somToken OLEPromiseKeeper;
typedef somToken DWORD;
typedef somToken HWND;
typedef somToken LPVOID;
typedef somToken POINTL;
typedef somToken Handle;

//=====================================================================================
// ODClipboard
//=====================================================================================

interface ODClipboard :  ODBaseClipboard
{
	ODBoolean ShowPasteAsDialog(
					in		ODBoolean		canPasteLink,
					in		ODBoolean		canEmbed,
					in		ODFacet			facet,
					in		ODTypeToken		viewType,
					out		ODPasteAsResult	theResult);

#ifdef __PRIVATE__

	void InitClipboard(in ODSession session);
	
	void NewClipboard();
	
	void DiscardClipboard();
	
	void ImportContent( in void *pDataObject );
	
	void ExportPlatformTypes(in ODPlatformTypeList typeList, in ODBoolean bExportClipboard );
	
	void ExportOleObjects(in void *pDataObject );

	void PutClipboardOnPlatformClipboard( in void *pDataObject );
	
	ODBoolean ImportClipboard( in void *pDataObject );

	ODBoolean ImportOleClipboard( in void *pDataObject );

	ODBoolean PlatformClipboardHasType( in void *pDataObject , in ODPlatformType type);

	void ClipboardChanged();

#endif

	#ifdef __SOMIDL__
	implementation
	{
		override:
			somInit,
			somUninit,
			Purge,
			GetChangeID,
			Clear,
			GetContentStorageUnit,
			SetPlatformClipboard,
			ExportClipboard;

		releaseorder:
			ShowPasteAsDialog,
		#ifdef __PRIVATE__
			InitClipboard,
			NewClipboard,
			DiscardClipboard,
			ImportContent,
			PutContentOnPlatformClipboard,
			ExportPlatformTypes,
			PutClipboardOnPlatformClipboard,
			ExportOleObjects,
			ImportOleClipboard,
			PlatformClipboardHasType,
			ImportClipboard,
			ClipboardChanged;
		#else
			reserved1,
			reserved2,
			reserved3,
			reserved4,
			reserved5,
			reserved6,
			reserved7,
			reserved8,
			reserved9,
			reserved10,
			reserved11,
			reserved12;
		#endif
		
		majorversion = 1; minorversion = 0;
			
		#ifdef __PRIVATE__
			ODSession 			fSession;
			Handle				fContainerHandle;
			ODContainer 		fContainer;
			ODDocument 			fDocument;
			ODDraft 			fDraft;
			ODStorageUnit 		fSU;
			ODBoolean			fbClear;	/* Clear was the last operation */
			void				*fpIDataObjectLast;
			OLEPromiseKeeper	*fPromiseKeeper;	
			HWND				fhwndClipboardMonitor;
			ODChangeID			fChangeID;
		#endif

	};
	#endif /*__SOMIDL__*/
};

#endif // _CLIPBD_
