/* @(#)Z 1.6 com/src/imaging/idl/ShapeB.idl, odimaging, od96nt, odnt9712d 97/03/21 16:44:38 (96/10/29 09:26:02) */

/********************************************************************/
/*  Licensed Materials - Property of IBM                            */
/*                                                                  */
/*                                                                  */
/* Copyright (C) International Business Machines Corp., 1994.       */
/* Copyright (C) Apple Computer, Inc., 1994                         */
/*                                                                  */
/*  US Government Users Restricted Rights -                         */
/*  Use, duplication, or disclosure restricted                      */
/*  by GSA ADP Schedule Contract with IBM Corp.                     */
/*                                                                  */
/*                                                                  */
/********************************************************************/

#ifndef _SHAPEB_
#define _SHAPEB_

#ifndef _REFCTOBJ_
#include "RefCtObj.idl"  
#endif

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

interface ODBaseShape;

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

interface ODShape;
interface ODTransform;
interface ODStorageUnit;


//==============================================================================
// ODBaseShape
//==============================================================================

interface ODBaseShape :  ODRefCntObject
{

	ODShape			NewShape();
    ODShape			Copy();

	ODGeometryMode	GetGeometryMode();
	void			SetGeometryMode(in ODGeometryMode mode);
	void			GetBoundingBox(out ODRect bounds);
	ODShape			SetRectangle(in ODRect rect);
	void			CopyPolygon(out ODPolygon copy);
	ODShape			SetPolygon(in ODPolygon polygon);
	ODPlatformShape	GetPlatformShape(in ODGraphicsSystem graphicsSystem);
	void			SetPlatformShape(in ODGraphicsSystem graphicsSystem,
									  in ODPlatformShape platformShape);
	void			Reset();

	void			WriteShape(in ODStorageUnit storageUnit);
	ODShape			ReadShape(in ODStorageUnit storageUnit);

	ODBoolean		IsSameAs(in ODShape compareShape);
	ODBoolean		IsEmpty();
	ODBoolean		ContainsPoint(in ODPoint point);
	ODBoolean		IsRectangular();
	ODBoolean		HasGeometry();

	void		CopyFrom(in ODShape sourceShape);
	ODShape		Transform(in ODTransform transform);
	ODShape		InverseTransform(in ODTransform transform);
	ODShape		Subtract(in ODShape diffShape);
	ODShape		Intersect(in ODShape sectShape);
	ODShape		Union(in ODShape unionShape);
	ODShape		Outset( in ODCoordinate distance );

#ifdef __SOMIDL__
	implementation
	{
		override:
			somUninit,
			Purge,
			Release;

		releaseorder:
			SetGeometryMode,
			GetGeometryMode,
			GetBoundingBox,
			SetRectangle,
			CopyPolygon,
			SetPolygon,
			GetPlatformShape,
			SetPlatformShape,
			WriteShape,
			ReadShape,
			IsSameAs,
			IsEmpty,
			ContainsPoint,
			IsRectangular,
			HasGeometry,
			Copy,
			CopyFrom,
			Transform,
			InverseTransform,
			Subtract,
			Intersect,
			Union,
			Outset,
			NewShape,
			Reset,
			reserved1,
			reserved2;


		majorversion = 1; minorversion = 0;

		functionprefix = ODBaseShape;

	};
#endif
};

#endif // _SHAPEB_

