/*
 	File:		CMScriptingPlugin.h
 
 	Contains:	ColorSync Scripting Plugin API
 
 	Version:	Technology:	ColorSync 2.5
 				Release:	QuickTime 4.1
 
 	Copyright:	(c) 1998-1999 by Apple Computer, Inc., all rights reserved.
 
 	Bugs?:		For bug reports, consult the following page on
 				the World Wide Web:
 
 					http://developer.apple.com/bugreporter/
 
*/
#ifndef __CMSCRIPTINGPLUGIN__
#define __CMSCRIPTINGPLUGIN__

#ifndef __FILES__
	#include <Files.h>
#endif

#ifndef __CMAPPLICATION__
	#include <CMApplication.h>
#endif

#ifndef __CODEFRAGMENTS__
	#include <CodeFragments.h>
#endif






#if PRAGMA_ONCE
#pragma once
#endif

#ifdef __cplusplus
extern "C" {
#endif

#if PRAGMA_IMPORT
#pragma import on
#endif

#if PRAGMA_STRUCT_ALIGN
	#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
	#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
	#pragma pack(2)
#endif

enum {
																/* ColorSync Scripting AppleEvent Errors */
	cmspInvalidImageFile		= -4220,						/* Plugin cannot handle this image file type */
	cmspInvalidImageSpace		= -4221,						/* Plugin cannot create an image file of this colorspace */
	cmspInvalidProfileEmbed		= -4222,						/* Specific invalid profile errors */
	cmspInvalidProfileSource	= -4223,
	cmspInvalidProfileDest		= -4224,
	cmspInvalidProfileProof		= -4225,
	cmspInvalidProfileLink		= -4226
};


/**** embedFlags field  ****/
/* reserved for future use: currently 0 */

/**** matchFlags field  ****/
enum {
	cmspFavorEmbeddedMask		= 0x00000001					/* if bit 0 is 0 then use srcProf profile, if 1 then use profile embedded in image if present*/
};


/**** scripting plugin entry points  ****/
typedef CALLBACK_API_C( CMError , ValidateImageProcPtr )(const FSSpec *spec);
typedef CALLBACK_API_C( CMError , GetImageSpaceProcPtr )(const FSSpec *spec, OSType *space);
typedef CALLBACK_API_C( CMError , ValidateSpaceProcPtr )(const FSSpec *spec, OSType *space);
typedef CALLBACK_API_C( CMError , EmbedImageProcPtr )(const FSSpec *specFrom, const FSSpec *specInto, CMProfileRef embedProf, UInt32 embedFlags);
typedef CALLBACK_API_C( CMError , UnembedImageProcPtr )(const FSSpec *specFrom, const FSSpec *specInto);
typedef CALLBACK_API_C( CMError , MatchImageProcPtr )(const FSSpec *specFrom, const FSSpec *specInto, UInt32 qual, UInt32 srcIntent, CMProfileRef srcProf, CMProfileRef dstProf, CMProfileRef prfProf, UInt32 matchFlags);
typedef CALLBACK_API_C( CMError , CountImageProfilesProcPtr )(const FSSpec *spec, UInt32 *count);
typedef CALLBACK_API_C( CMError , GetIndImageProfileProcPtr )(const FSSpec *spec, UInt32 index, CMProfileRef *prof);
typedef CALLBACK_API_C( CMError , SetIndImageProfileProcPtr )(const FSSpec *specFrom, const FSSpec *specInto, UInt32 index, CMProfileRef prof, UInt32 embedFlags);
/**** CSScriptingLib API  ****/

EXTERN_API_C( CMError )
CMValidImage					(const FSSpec *			spec);

EXTERN_API_C( CMError )
CMGetImageSpace					(const FSSpec *			spec,
								 OSType *				space);

EXTERN_API_C( CMError )
CMEmbedImage					(const FSSpec *			specFrom,
								 const FSSpec *			specInto,
								 Boolean 				repl,
								 CMProfileRef 			embProf);

EXTERN_API_C( CMError )
CMUnembedImage					(const FSSpec *			specFrom,
								 const FSSpec *			specInto,
								 Boolean 				repl);

EXTERN_API_C( CMError )
CMMatchImage					(const FSSpec *			specFrom,
								 const FSSpec *			specInto,
								 Boolean 				repl,
								 UInt32 				qual,
								 CMProfileRef 			srcProf,
								 UInt32 				srcIntent,
								 CMProfileRef 			dstProf);

EXTERN_API_C( CMError )
CMProofImage					(const FSSpec *			specFrom,
								 const FSSpec *			specInto,
								 Boolean 				repl,
								 UInt32 				qual,
								 CMProfileRef 			srcProf,
								 UInt32 				srcIntent,
								 CMProfileRef 			dstProf,
								 CMProfileRef 			prfProf);

EXTERN_API_C( CMError )
CMLinkImage						(const FSSpec *			specFrom,
								 const FSSpec *			specInto,
								 Boolean 				repl,
								 UInt32 				qual,
								 CMProfileRef 			lnkProf,
								 UInt32 				lnkIntent);

EXTERN_API_C( CMError )
CMCountImageProfiles			(const FSSpec *			spec,
								 UInt32 *				count);

EXTERN_API_C( CMError )
CMGetIndImageProfile			(const FSSpec *			spec,
								 UInt32 				index,
								 CMProfileRef *			prof);

EXTERN_API_C( CMError )
CMSetIndImageProfile			(const FSSpec *			specFrom,
								 const FSSpec *			specInto,
								 Boolean 				repl,
								 UInt32 				index,
								 CMProfileRef 			prof);


#if PRAGMA_STRUCT_ALIGN
	#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
	#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
	#pragma pack()
#endif

#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif

#ifdef __cplusplus
}
#endif

#endif /* __CMSCRIPTINGPLUGIN__ */

