/* @(#)Z 1.7 com/src/imaging/idl/Canvas.idl, odimaging, od96nt, odnt9712d 97/03/21 16:44:38 (96/10/29 09:25:44) */

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

#ifndef _CANVASB_
#include "CanvasB.idl"      // base class
#endif

#if defined( _PLATFORM_OS2_ ) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
#ifndef _PLATCANV_
#include "PlatCanv.idl"
#endif
#endif // IBM Platforms

//==============================================================================
// Mac OS types used in this interface
//==============================================================================

/*
#pragma somemittypes off
*/

typedef unsigned long GrafPtr;		

/*
#pragma somemittypes on
*/

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

interface  ODCanvas;

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

interface ODCanvas :  ODBaseCanvas
{
    //*********************
    // MACINTOSH SPECIFIC
    //*********************

#ifdef _PLATFORM_MACINTOSH_
  GrafPtr  GetQDPort( );

  ODPlatformCanvas  GetGXViewport( );  // Really a gxViewport; see <graphics types.h>
#endif // _PLATFORM_MACINTOSH_


    //*********************
    // IBM CROSS PLATFORM SOLUTION
    //*********************
#if defined( _PLATFORM_OS2_ ) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)

  ODPlatformCanvas CreatePlatformCanvas( in ODGraphicsSystem aSystemType,
					 in ODBoolean isDynamic,
					 in ODBoolean isOffScreen );

#endif  // IBM Platforms

#ifdef __SOMIDL__
  implementation
  {
    majorversion = 1; minorversion = 0;

    releaseorder:
#ifdef _PLATFORM_MACINTOSH_
        GetQDPort,
        GetGXViewport,

        reserved1;

    override:
	HasPlatformCanvas,
	GetPlatformCanvas,
	SetPlatformCanvas,
	Invalidate,
	Validate;

#endif  // _PLATFORM_MACINTOSH_

#if defined( _PLATFORM_OS2_ ) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)

        reserved1,

        CreatePlatformCanvas;

    override:
	HasPlatformCanvas,
	GetPlatformCanvas,
	SetPlatformCanvas;

#endif // IBM Platforms

    functionprefix = ODCanvas;

  };
#endif
};

#endif // _CANVAS_

