/*******************************************************************************
*                              Openwave Systems.                               *
*                            Device Products Group                             *
*                            Melbourne,  AUSTRALIA                             *
********************************************************************************
   DESCRIPTION:
   This is a listing of all the public virtual functions that are supported
   by the extension.  This macro file eases maintenance of the virtual
   functions.  The OEM may replace #FUNCTION with #NO_FUNCTION for any virtual
   functions they don't want to support.  Do not modify the order of this list
   or anything else, otherwise you will <b>break the code</b>.


   REVISION HISTORY:
   Date:       Who:               Email:
      - Details:
--------------------------------------------------------------------------------
   10 Nov 2004 Richard Willis     richard.willis@openwave.com
      - Initial version

*******************************************************************************/
/*******************************************************************************
*                  Copyright (c) Openwave Systems 1995-2004                    *
*                            All rights reserved.                              *
*                                                                              *
*     THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Openwave Systems Inc.     *
*               The copyright notice above does not evidence any               *
*              actual or intended publication of such source code.             *
*******************************************************************************/

/*==============================================================================

	DUMMY DEFINES
	Blanks out anything that isn't defined when this macro file is included.

==============================================================================*/

/**@def FUNCTION
 This macro is used in the iimage.m file to declare a virtual function that is
 supported by the class.
 @param RETURNS Return type.  Eg, char *, int, etc
 @param NAME Name of the function.
*/
#ifndef FUNCTION
   #define FUNCTION( RETURNS, NAME )
#endif

/**@def NO_PARAM
 This macro is used in the iimage.m file to declare that a given function
 takes no parameters.
 @warning This item must not be altered by the OEM.
*/
#ifndef NO_PARAM
   #define NO_PARAM
#endif

/**@def FIRST_PARAM
 This macro is used in the iimage.m file to declare the first parameter for
 a given function.
 @param TYPE Parameter type.  Eg, char *, int, etc
 @param NAME Name of the parameter.
*/
#ifndef FIRST_PARAM
   #define FIRST_PARAM( TYPE, NAME )
#endif

/**@def NEXT_PARAM
 This macro is used in the iimage.m file to declare any subsequent parameters
 for a given function.
 @param TYPE Parameter type.  Eg, char *, int, etc
 @param NAME Name of the parameter.
*/
#ifndef NEXT_PARAM
   #define NEXT_PARAM( TYPE, NAME )
#endif

/**@def END_FUNCTION
 This macro is used in the iimage.m file to mark the end of a function
 declaration.
*/
#ifndef END_FUNCTION
   #define END_FUNCTION
#endif


/*==============================================================================

	VIRTUAL FUNCTIONS

 ** DO NOT CHANGE THE ORDER OF THESE MACROS AS IT WILL BREAK THE SOFTWARE **

==============================================================================*/
//------------------------------------------------------------------------------
//---              these are the native IImage functions                     ---
//------------------------------------------------------------------------------
FUNCTION( uint32, AddRef )
FIRST_PARAM( IImage *, psMe )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( uint32, Release )
FIRST_PARAM( IImage *, psMe )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, Draw )
FIRST_PARAM( IImage *, psMe )
NEXT_PARAM( int, iX )
NEXT_PARAM( int, iY )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, DrawFrame )
FIRST_PARAM( IImage *, psMe )
NEXT_PARAM( int, iFrame )
NEXT_PARAM( int, iX )
NEXT_PARAM( int, iY )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, GetInfo )
FIRST_PARAM( IImage *, psMe )
NEXT_PARAM( AEEImageInfo *, psInfo )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, SetParm )
FIRST_PARAM( IImage *, psMe )
NEXT_PARAM( int , iParam )
NEXT_PARAM( int, iP1 )
NEXT_PARAM( int, iP2 )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, Start )
FIRST_PARAM( IImage *, psMe )
NEXT_PARAM( int, iX )
NEXT_PARAM( int, iY )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, Stop )
FIRST_PARAM( IImage *, psMe )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, SetStream )
FIRST_PARAM( IImage *, psMe )
NEXT_PARAM( IAStream *, psStream )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( boolean, HandleEvent )
FIRST_PARAM( IImage *, psMe )
NEXT_PARAM( AEEEvent, eEvent )
NEXT_PARAM( uint16, wParam )
NEXT_PARAM( uint32, lwParam )
END_FUNCTION

//------------------------------------------------------------------------------
FUNCTION( void, Notify )
FIRST_PARAM( IImage *, psMe )
NEXT_PARAM( PFNIMAGEINFO, pfn )
NEXT_PARAM( void *, pvUser )
END_FUNCTION


//------------------------------------------------------------------------------
//---             This marks the start of our custom Opwv functions          ---
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
FUNCTION( void, vLoadOpwvBmp )
FIRST_PARAM( IOPWVIImage *, psMe )
NEXT_PARAM( const void *, kpvUPCBmp )
NEXT_PARAM( int16, iImageLen )
END_FUNCTION



/*==============================================================================

	UNDEFINES
	Allows this macro file to be included multiple times

==============================================================================*/
#undef FUNCTION
#undef NO_PARAM
#undef FIRST_PARAM
#undef NEXT_PARAM
#undef END_FUNCTION


