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

/********************************************************************/
/*  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 _TRNSFRMB_
#define _TRNSFRMB_

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

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

interface  ODBaseTransform;

//==============================================================================
// Classes used by this interface
//==============================================================================

interface ODTransform;
interface ODShape;
interface ODStorageUnit;

//==============================================================================
// ODTransform
//==============================================================================

interface ODBaseTransform :  ODRefCntObject
{

	ODTransform		NewTransform();
    ODTransform		Copy();

    ODTransformType	GetType();
    void			GetOffset(out ODPoint offset);
    void			GetPreScaleOffset(out ODPoint offset);
    void			GetScale(out ODPoint scale);
    void			GetMatrix(out ODMatrix matrix);
    ODBoolean		HasMatrix();

    ODBoolean		IsSameAs(in ODTransform compareTransform);

    ODTransform		Reset();
    ODTransform		SetMatrix(in ODMatrix matrix);
    ODTransform		CopyFrom(in ODTransform sourceTransform);

    ODTransform		SetOffset(in ODPoint point);
    ODTransform		MoveBy(in ODPoint point);
    ODTransform		ScaleBy( in ODPoint scale);
    ODTransform		ScaleDownBy( in ODPoint scale);

    ODTransform		Invert( );
    ODTransform		PreCompose(in ODTransform transform);
    ODTransform		PostCompose(in ODTransform transform);

    void			TransformPoint(inout ODPoint point);
    void			InvertPoint(inout ODPoint point);

    void			TransformShape(in ODShape shape);
    void			InvertShape(in ODShape shape);

    void			WriteTo(in ODStorageUnit storageUnit);
    void			ReadFrom(in ODStorageUnit storageUnit);


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

		releaseorder:
			GetType,
			GetOffset,
			GetPreScaleOffset,
			GetScale,
			GetMatrix,
			HasMatrix,
			IsSameAs,
			Reset,
			SetMatrix,
			Copy,
			CopyFrom,
			SetOffset,
			MoveBy,
			ScaleBy,
			ScaleDownBy,
			Invert,
			PreCompose,
			PostCompose,
			TransformPoint,
			InvertPoint,
			TransformShape,
			InvertShape,
			WriteTo,
			ReadFrom,
			NewTransform,
			reserved1,
			reserved2;

		majorversion = 1; minorversion = 0;

		functionprefix = ODBaseTransform;

  };
#endif
};

#endif 

