/****************************************************************************************

		ExternalAPI.r

		Copyright (c)1990 - 1999 MetaCreations. All rights reserved.

		Author:	
		Date:	6/22/98

		Revision History

		when		who			what & why
		==========	==========	======================================================
		9/24/99		cph			remove 'prwk' type
		7/30/99		Brice		Added PMAP flags paramInvisible
		11/18/98	Greg		Cleaned up the comments
		9/15/98		cph			removed MFRTypes.r
		6/24/98		cph			added painter api version and header

*****************************************************************************************/
#ifndef __EXTERNALAPIR__
#define __EXTERNALAPIR__


#ifndef qDemoVersion
#define kPNTAPIVersion 3
#else
#define kPNTAPIVersion 103
#endif

#include "CommonComDefines.h"
#include "MCRTypes.r"


//******************************************************************
//
// GUID
//

type 'GUID' 
{
	array TypeArray 
	{ 
		hex longint;
		hex integer;
		hex integer;
		//hex string[8];
		hex byte;
		hex byte;
		hex byte;
		hex byte;
		hex byte;
		hex byte;
		hex byte;
		hex byte;
	};
};

//******************************************************************
//
// COMP
//

type 'COMP' 
{
	literal longint;	// Family ID 		(e.g. 'prim' for 3D primitives)
	literal longint;	// Class ID			(e.g. 'sphr' for sphere primitives) 
	pstring[63];		// Name				(e.g. "Sphere")
	pstring[63];		// SubFamily Name	(e.g. "Basic Primitives")
	hex longint;		// Engine version in the form: $xxxx.yy.zz
						//				  	(e.g., 3.1.2 gives 0x00030102)
	pstring[31];		// Version string	
	pstring[255];		// Comment
	longint;			// API version used
};



//******************************************************************
//
// CPUI
//

type 'CPUI' 
{
	literal longint;	// Big  Part ID (0 to use implicit ID)
	literal longint;	// Mini Part ID (0 for No Part ID)
	literal longint;	// style for collapsible part (ECollapsibleStyle)
	longint	kParamsBeforeChildren=0, kParamsAfterChildren=1, kParamsHidden=2;	//Is the big part shown above or below the component
	boolean;			// Is Collapsable => If false : Do not load any part for the expanded state.
};


//******************************************************************
//
// CINF (extra component Info, see TComponentInfo in IExRegisterer.h)
//

type 'CINF'
{
	literal longint;	// fPrefsCompID	: The ID of the component (from the kRID_PreferencesFamilyID family) that stores the preferences for this component (use kNoPrefs for no prefs)
	integer;			// fPlatforms	: On which platforms is the comp running (use platform defines from CommonComDefines.h)
	integer;			// fVersions	: On which version(s) (light/std/pro) is the component running (use host defines from CommonComDefines.h)
	integer;			// fVersionModes: On which mode(s) (normal/demo) is the component running (use host defines from CommonComDefines.h)
};



//******************************************************************
//
// PMap
//

type 'PMap'
{
	array TypeArray
	{
		literal longint; /* ID	*/
		literal longint; /* type */
		longint;         /* flags */
		pstring[31];     /* name */
		pstring[255];    /* token info */
	};
};

//Defines for the flags field of the type 'PMap'
//kept here because I don't want to rename them to k*
#define noFlags			0
#define interpolate		1
#define paramReadOnly	2
#define paramNoSave		4
#define paramInvisible	8

//******************************************************************
//
// prfs
//

type 'prfs'	
{
	cstring;
};

//******************************************************************
//
// Cross Platform View
//

type 'XPVW' 
{
	cstring;
};

//******************************************************************

#endif