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

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

#ifndef _TRNSFRMB_
#include "TrnsfrmB.idl"      
#endif

//==============================================================================
// Constants & types defined in this interface
//==============================================================================
#ifdef _PLATFORM_OS2_
struct OS2MATRIXLF {
   long  fxM11;
   long  fxM12;
   long  lM13;
   long  fxM21;
   long  fxM22;
   long  lM23;
   long  lM31;
   long  lM32;
   long  lM33;
};
typedef OS2MATRIXLF MATRIXLF;
#endif // _PLATFORM_OS2_

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

interface  ODTransform;

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

interface ODTransform :  ODBaseTransform
{

    void InitTransform();

    //*********************
    // Macintosh Specific
    //*********************
#ifdef _PLATFORM_MACINTOSH_

    ODBoolean IsQDOffset();

    Point GetQDOffset();

    ODTransform SetQDOffset(in Point point);

#endif  // _PLATFORM_MACINTOSH_

    //*********************
    // OS/2 Specific
    //*********************
#ifdef _PLATFORM_OS2_

    ODBoolean IsIntegerOffset();

    void GetMATRIXLF(out MATRIXLF mtx);

    void SetMATRIXLF(in MATRIXLF mtx);

    void TransformPoints( in ODByteArray points, in ODULong npoints );

#endif // _PLATFORM_OS2_

    //*********************
    // Windows Specific
    //*********************
#ifdef _PLATFORM_WIN32_

    ODBoolean IsIntegerOffset();

    Point GetOffsetAsPoint();

    ODTransform SetOffsetUsingPoint(in Point point);

    void TransformPoints( in ODByteArray points, in ODULong npoints );

#endif // _PLATFORM_WIN32_

    //*********************
    // UNIX Specific
    //*********************
#ifdef _PLATFORM_UNIX_

    ODBoolean IsIntegerOffset();

    Point GetOffsetAsPoint();

    ODTransform SetOffsetUsingPoint(in Point point);

    void TransformPoints( in ODByteArray points, in ODULong npoints );

#endif // _PLATFORM_UNIX_

#ifdef __SOMIDL__
  implementation
  {
    releaseorder:
      InitTransform,

#ifdef _PLATFORM_MACINTOSH_
      IsQDOffset,
      GetQDOffset,
      SetQDOffset;
#endif  // _PLATFORM_MACINTOSH_

#ifdef _PLATFORM_OS2_
      IsIntegerOffset,
      GetMATRIXLF,
      SetMATRIXLF,
      TransformPoints;
#endif //  _PLATFORM_OS2_

#ifdef _PLATFORM_WIN32_
      IsIntegerOffset,
      GetOffsetAsPoint,
      SetOffsetUsingPoint,
      TransformPoints;
#endif  // _PLATFORM_WIN32_

#ifdef _PLATFORM_AIX_
      IsIntegerOffset,
      GetOffsetAsPoint,
      SetOffsetUsingPoint,
      TransformPoints;
#endif //  _PLATFORM_AIX_

    majorversion = 1; minorversion = 0;

    functionprefix = ODTransform;

  };
#endif
};

#endif 

