#ifdef __PRIVATE__
//#
//#	File:		CanvasB.idl
//#
//#	Contains:	ODBaseCanvas, an abstract drawing environment
//#
//#	Written by:	Jens Alfke
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <3>	 8/17/94	jpa		Added "functionprefix" directive. [1181512]
//#		 <2>	  8/8/94	jpa		API changes for multiformat canvases & bias
//#									transforms [1179683, 1178688]
//#		 <1>	  6/8/94	jpa		first checked in
//#		 <3>	  6/7/94	RR		Privatize change history
//#		 <2>	 5/26/94	jpa		Tweaked IDL.
//#
//#	To Do:
//#
#else
//#	Copyright:	c 1993-1994 by Apple Computer, Inc., all rights reserved.
#endif

#ifndef _CANVASB_
#define _CANVASB_

#ifndef _ODOBJECT_
#include "ODObject.idl"      
#endif

//==============================================================================
// Classes defined in this interface
//==============================================================================

interface  ODBaseCanvas;

//==============================================================================
// Classes used in this interface
//==============================================================================

interface  ODPart;
interface  ODFacet;
interface  ODShape;
interface  ODTransform;

//==============================================================================
// ODCanvas
//==============================================================================

interface ODBaseCanvas :  ODObject
{
	ODBoolean			HasPlatformCanvas( in ODGraphicsSystem g );
	ODPlatformCanvas	GetPlatformCanvas( in ODGraphicsSystem g );
	void				ReleasePlatformCanvas( );
#ifdef PLATFORM_MACINTOSH
	void				SetPlatformCanvas( in ODGraphicsSystem g, in ODPlatformCanvas c );
#endif
	
	ODBoolean			HasPlatformPrintJob( in ODGraphicsSystem g );
	ODPlatformCanvas	GetPlatformPrintJob( in ODGraphicsSystem g );
	void					SetPlatformPrintJob( in ODGraphicsSystem g, in ODPlatformCanvas j );
	
	ODPart				GetOwner( );
	void					SetOwner( in ODPart owner);
	
	ODFacet				GetFacet( );
	void					SetFacet( in ODFacet facet);
	
	ODTransform			GetBiasTransform( );
	void					SetBiasTransform( in ODTransform x );
	
	ODBoolean			IsDynamic( );
	ODBoolean			IsOffscreen( );

	void					IncrementCanvasRef();
	void					DecrementCanvasRef();
	ODSLong				GetCanvasRef();
	
	ODShape				GetUpdateShape( );
	void					ResetUpdateShape( );
	void					CheckUpdateShape( );
	
	void					Invalidate( in ODShape shape);
	void					Validate( in ODShape shape);

#ifdef __PRIVATE__
	void InitBaseCanvas(in ODBoolean isDynamic, in ODBoolean isOffscreen);
#endif

#ifdef __SOMIDL__
	implementation
	{
		override:
			somInit,
			somUninit;
		
		releaseorder:
			HasPlatformCanvas,
			GetPlatformCanvas,
			ReleasePlatformCanvas,
#ifdef PLATFORM_MACINTOSH
			SetPlatformCanvas,
#endif
			HasPlatformPrintJob,
			GetPlatformPrintJob,
			SetPlatformPrintJob,
			GetOwner,
			SetOwner,
			GetFacet,
			SetFacet,
			IsDynamic,
			IsOffscreen,
			GetUpdateShape,
			ResetUpdateShape,
			GetBiasTransform,
			SetBiasTransform,
			Invalidate,
			Validate,
			CheckUpdateShape,
			IncrementCanvasRef,
			DecrementCanvasRef,
			GetCanvasRef,
		#ifdef __PRIVATE__
			InitBaseCanvas;
		#else
			reserved1;
		#endif
		
		majorversion = 1; minorversion = 0;
		
		functionprefix = ODBaseCanvas;
		
		#ifdef __PRIVATE__
			ODPart				fOwner;
			ODFacet				fFacet;
			ODShape				fUpdateShape;
			ODTransform			fTransform;
			ODBoolean			fIsDynamic; 	
			ODBoolean			fIsOffscreen;
			ODGraphicsSystem	fPrintJobGraphicsSystem;
			ODPlatformCanvas	fPlatformPrintJob;
			ODSLong	  			fCanvasRef;
		#endif
	};
#endif
};

#endif //# _CANVASB_
