#ifndef __GSRSRC__
#define __GSRSRC__


type 'MMNU' {
		decimal integer;										/* Menu ID				*/
		fill long;
		decimal integer;										/* ID of menu def proc	*/
		fill word;
		unsigned hex longint;									/* needs not flags */
		pstring; 												/* Menu Title			*/
		wide array {
				pstring;										/* Item title			*/
				decimal integer;								/* command ID */
				decimal byte; 									/* Icon number			*/
				unsigned hex byte;								/* Item Flags			*/
				decimal byte;									/* key/heirarchical		*/
				unsigned hex byte;								/* key flags			*/
				decimal byte;									/* Marking char or hierarchical	*/
				unsigned hex byte;								/* Style				*/
		};
		byte = 0;
};



type 'MITM' {
	unsigned integer;			/* needs flags */
	unsigned integer;			/* needs not flags */
	pstring;					/* title */
	decimal integer;			/* command ID */
	decimal byte;				/* icon ID */
	unsigned hex byte;			/* chunk flags (should be unsigned) */
	decimal byte;				/* key equivalent */
	unsigned hex byte;			/* key flags (unused) */
	decimal byte;				/* mark char or sub-menu ID */
	hex byte;					/* style flags */
	unsigned longint;			/* product flags */
	unsigned integer;			/* mode flags */
	unsigned integer;			/* version created */
	unsigned integer;			/* version modified */
	unsigned integer;			/* version retired */
	
};




type 'TDef' {
	boolean				pickAndUpdate,			/* disablePickUpdate */
						disablePickUpdate;						
	boolean				doesntNeedScreenPlane,	/* needsScreenPlane */
						needsScreenPlane;
	boolean				doesntNeed3DView,		/* needs3DView */
						needs3DView;
	boolean				use2DCursor,			/* uses3DCursor */
						use3DCursor;
	boolean				constrainCursor,		/* screenBasedCursor */
						screenBasedCursor;
	boolean				doesntNeedPerspective,	/* needsPerspective */
						needsPerspective;
	boolean				showScreenHints,		/* dontShowScreenHints */
						dontShowScreenHints;
	boolean				reservedFalse,			/* unused */
						reservedTrue;
	byte;										/* rest of tool flags */
	integer;									/* Icon ID */
	integer				kFingerCurs=90, kFourWayCurs=93, kTextCurs=101, kSmallCrossCurs=103,	/* Default Cursor ID */
						kLargeCrossCurs=105, kDashCrossCurs=106, kBucketCurs=126, kRotateCurs=133,
						kHandCurs=145, kArrowCurs=147, kBullsEyeCurs=154, kVisibilityCurs=161, 
						kHorizArrowsCurs=400;
	pstring[255];								/* messageStr */
	integer;									/* WaitMove distance */
	longint;									/* Constraint flags */
	integer				kNoDataBar, kXYClLaZo=1, kXY, kSaAaLAXY,	/* barDisplay mode */
						kDxDyRaAXY, kDxDyTlAXY, kDxDyRXY,
						kDxDyLAXY, kDxDyArPeXY, kA=9,
						kDxDyLOXY, 	kDxDySxSyXY, kXYZClLaZo, kVxVyVzYaPi=13,
						kVz, kDa, kAzEl, kAzElRo,
						kVxVyVzLrUdIo, kU1Aw, kThXYZ,
						kO1O2WrWhZ, kWbWtDz, kXYU1, kRaRrRuXYZ, kClLaZo;
	integer;									/* Minimum compatible version */
	pstring[63];								/* Title String */
	unsigned integer;							/* mode flags */
	unsigned longint;							/* product flags */
	unsigned integer;							/* version created */
	unsigned integer;							/* version modified */
	unsigned integer;							/* version retired */
	
};

type 'MEna' {
	unsigned hex integer;
	unsigned hex integer;
};


type 'DMSN' {
	// the pstring[15]'s are would-be doubles, but rez doesn't support floating point data
	pstring[15];			//	dimWitGap; 
	pstring[15];			//	dimWitExtend; 
	pstring[15];			//	dimMinALength; 
	pstring[15];			//	dimExtALength; 
	pstring[15];			//	dimStackGap; 
	pstring[15];			//	dimAboveGap; 
	pstring[15];			//	dimLeaderLength; 
	pstring[15];			//	dimOverHang; 
	pstring[15];			//	dimMarkLength; 
	pstring[15];			//	dimExtendLength; 
	pstring[15];			//	dimMarkGap; 
	
	Byte;			//	dimAlignDimText;	 one of the dimensioning text constants 
	Byte;			//	dimAlignInsideRad;	 one of the dimensioning text constants 
	Byte;			//	dimAlignAngText;	 one of the dimensioning text constants 
	Byte;			//	dimOptions;			 Byte field of summed dimension option constants 
	
	Byte;			//	unused1
	Byte;			//	dimAlignRadText; 
	
	Byte;			//	dimSlashThickness;	 Thickness of tick marks in mils 
	Byte;			//	unused2
	Byte;			//	unused2
	Byte;			//	dimWitnessFixed;     Fixed witness line lengths (for DIN & SIA)

	integer;		//	unused3
	integer;		//	unused3
	integer;		//	unused3
	
	pstring[21];	//	standardName;		 Name of the standard 

	Byte;			//	dimTolSizeFac; 
	Byte;			//	unused4
	Byte;			//	unused4	
	Byte;			//	unused4
	
	integer;		// 	dualDimInd;		 	 Dual dimensioning indicator 

	pstring[15];			//	dimWitGap;           Length of fixed witness lines
	Byte;			//	dualUnitsView
	Byte;			//	textLeftWasOffForVW8
	Byte;			//  unused5
	Byte;			//  unused5
	Byte;			//  unused5
	Byte;			//  unused5

	unsigned integer;
	integer;
	Byte;
	Byte;
	unsigned Byte;
	Byte;
	integer;
	
	unsigned integer;
	integer;
	Byte;
	Byte;
	unsigned Byte;
	Byte;
	integer;	
};

type 'MRKR' {
	unsigned integer;
	integer;
	Byte;
	Byte;
	unsigned Byte;
	Byte;
	integer;
};

type 'CCUS' {
	integer;							// Default length unit
	integer;							// Default area unit
	integer;							// Default volume unit
	longint;							// Display Accuracy
	integer;							// Arrow Size
	pstring[15];						// Pen Grid
	pstring[15];						// Reference Grid
	byte;								// Factor
	byte;								// Loc
	longint;							// Key (PIS data fork size)
	boolean		stdisnotmetric,			
				stdismetric;
	align word;
	integer = $$CountOf(Sheets);		// Array of sheets (up to 9)
	array Sheets {
		integer;						// height in pixels
		integer;						// width in pixels
	};
};



/*
	DEVELOPMENT VERSION MC8 - PCP
*/


type 'VReq' {
	decimal longint;							/* SDK Version	- if this does not match MiniCAD's SDK version, the external won't run */
	boolean				releaseExternal,		/* if this is true, the external can only be used by a BUG version of MiniCAD */
						developmentExternal;						
	boolean				reservedFalse,			/* unused */
						reservedTrue;
	boolean				reservedFalse,			/* unused */
						reservedTrue;
	boolean				reservedFalse,			/* unused */
						reservedTrue;
	boolean				reservedFalse,			/* unused */
						reservedTrue;
	boolean				reservedFalse,			/* unused */
						reservedTrue;
	boolean				reservedFalse,			/* unused */
						reservedTrue;
	boolean				reservedFalse,			/* unused */
						reservedTrue;
};


// Plug-in Resource definitions

type 'VLIB' {
	pstring[63];					/* Routine name */
	pstring[63];					/* Category */
	pstring[255];					/* Description */
	longint;						/* Version */
	byte;							/* Scope */
	fill bit[7];
	boolean		noReturnVal, hasReturnVal;	/* Has return value */
	pstring[127];					/* Reserved.  Actually a C-string */
	pstring[255];					/* Reserved.  Actually a C-string */
	fill byte;						/* Fill byte ?? */

	align word;
	integer = $$CountOf(Parameters);		/* Array of parameters */
	array Parameters {
		pstring[63];			/* Argument name */
		byte;					/* Argument type */
		fill byte;				/* Fill byte ?? */
		longint;				/* Reserved */
	};
};


type 'PDEf' {
	pstring[63];					/* Universal name */
	pstring[63];					/* Display name */
	integer;					/* Version */
};


type 'Chc#' {
	align word;
	integer = $$CountOf(Choices);			/* Array of choices */
	array Choices {
		pstring[255];				/* Universal choice string */
		pstring[255];				/* Localized choice string */
	};
};


type 'PExt' {
	byte;						/* Object sub-type */
	fill bit[7];
	boolean		noResetOnMove, resetOnMove;	/* Reset on move flag */
	fill byte;
	fill bit[7];
	boolean		noResetOnRotate, resetOnRotate;	/* Reset on rotate flag */
	fill byte;
};


type 'POpt' {
	fill bit[7];
	boolean		noWallInsertOnEdge, wallInsertOnEdge;	/* Wall insert on edge flag */
	fill byte;
	fill bit[7];
	boolean		noWallNoBreak, wallNoBreak;			/* Wall break flag */
	fill byte;
	fill bit[7];
	boolean		noWallHalfBreak, wallHalfBreak;		/* Wall half-break flag */
	fill byte;
	fill bit[7];
	boolean		noWallHideCaps, wallHideCaps;		/* Wall hide caps flag */
	fill byte;
};

type 'Prm#' {
	align word;
	integer = $$CountOf(Parameters);		/* Array of parameters */
	array Parameters {
		pstring[63];				/* Universal parameter name */
		pstring[63];				/* Localized parameter name */
		pstring[255];				/* Default value */
		fill byte;					/* Fill byte */
		byte;						/* Type */
		integer;					/* Choice ID for choices (Chc# resource) */
	};
};

// For metric defaults.  This resource mirrors the Prm# resource,
// but only dimension parameters have valid data in them.  The
// values stored in the default value are metric values.
type 'Prm$' {
	align word;
	integer = $$CountOf(Parameters);		/* Array of parameters */
	array Parameters {
		pstring[63];				/* Universal parameter name */
		pstring[63];				/* Localized parameter name */
		pstring[255];				/* Default value */
		fill byte;					/* Fill byte */
		byte;						/* Type */
		integer;					/* Choice ID for choices (Chc# resource) */
	};
};

type 'TEXT' {
	string;
};

type 'GSTx' {
	string;						/* Text used by workspace for tooltips to get around a QuickTime encoding conversion problem - B042728 */
};

type 'PXpr' {
	boolean		hasExtendedPropertiesClear, hasExtendedPropertiesSet;
	boolean		hasUnusedClear, hasUnusedSet;
	boolean		hasUnusedClear, hasUnusedSet;
	boolean		hasUnusedClear, hasUnusedSet;
	boolean		hasUnusedClear, hasUnusedSet;
	boolean		hasUnusedClear, hasUnusedSet;
	boolean		hasUnusedClear, hasUnusedSet;
	boolean		hasUnusedClear, hasUnusedSet;
	byte;		
};


#endif  // _GSRSRC_
