PIColorSpaceSuite.h

Go to the documentation of this file.
00001 // ADOBE SYSTEMS INCORPORATED
00002 // Copyright  1993 - 2005 Adobe Systems Incorporated
00003 // All Rights Reserved
00004 //
00005 // NOTICE:  Adobe permits you to use, modify, and distribute this 
00006 // file in accordance with the terms of the Adobe license agreement
00007 // accompanying it.  If you have received this file from a source
00008 // other than Adobe, then your use, modification, or distribution
00009 // of it requires the prior written permission of Adobe.
00010 //-------------------------------------------------------------------
00047 #ifndef __PIColorSpaceSuite__
00048 #define __PIColorSpaceSuite__
00049 
00050 #if PRAGMA_ONCE
00051 #pragma once
00052 #endif
00053 
00054 #include "PIGeneral.h"
00055 
00056 #ifdef __cplusplus
00057 extern "C" {
00058 #endif
00059 
00060 /******************************************************************************/
00061 
00063 #define kPSColorSpaceSuite          "Photoshop ColorSpace Suite for Plug-ins"
00064 
00065 //-------------------------------------------------------------------------
00066 //  ColorSpace suite typedefs 
00067 //-------------------------------------------------------------------------
00068 
00069 // These are defined in PIGeneral.h
00070 /*
00071     Constants for colorSpace fields
00072     
00073 #define plugIncolorServicesRGBSpace     0
00074 #define plugIncolorServicesHSBSpace     1
00075 #define plugIncolorServicesCMYKSpace    2
00076 #define plugIncolorServicesLabSpace     3
00077 #define plugIncolorServicesGraySpace    4
00078 #define plugIncolorServicesHSLSpace     5
00079 #define plugIncolorServicesXYZSpace     6
00080 */
00081 
00082 typedef struct Color_T *ColorID; 
00084 // formatted as 0RGB, CMYK, 0LAB, 0XYZ, 0HSB, 0HSL, 000Gray
00089 typedef unsigned char   Color8[4];   
00090 
00096 typedef unsigned short  Color16[4];  
00101 typedef float           Color32[4];  
00102 
00103 
00105 typedef struct
00106 {
00107     unsigned short x;    
00108     unsigned short y;    
00109     unsigned short z;    
00110 } CS_XYZColor;
00111 
00117 typedef SPAPI SPErr (*ColorSpace_Make) (ColorID *id);
00118 
00124 typedef SPAPI SPErr (*ColorSpace_Delete) (ColorID *id);
00125 
00137 typedef SPAPI SPErr (*ColorSpace_StuffComponents) (ColorID id, short colorSpace, 
00138                     unsigned char component0, unsigned char component1, 
00139                     unsigned char component2, unsigned char component3);
00140 
00155 typedef SPAPI SPErr (*ColorSpace_ExtractComponents) (ColorID id, short colorSpace,
00156                     unsigned char *component0, unsigned char *component1, 
00157                     unsigned char *component2, unsigned char *component3, Boolean *gamutFlag);
00158                     
00165 typedef SPAPI SPErr (*ColorSpace_StuffXYZ) (ColorID id, CS_XYZColor xyz);
00166 
00173 typedef SPAPI SPErr (*ColorSpace_ExtractXYZ) (ColorID id, CS_XYZColor *xyz);
00174 
00181 typedef SPAPI SPErr (*ColorSpace_GetNativeSpace) (ColorID id, short *colorSpace);
00182 
00192 typedef SPAPI SPErr (*ColorSpace_Convert8) (short inputCSpace, short outputCSpace,
00193                                             Color8 *colorArray, short count);
00194 
00204 typedef SPAPI SPErr (*ColorSpace_Convert16) (short inputCSpace, short outputCSpace,
00205                                             Color16 *colorArray, short count);
00206 
00213 typedef SPAPI SPErr (*ColorSpace_IsBookColor) (ColorID id, Boolean *isBookColor);
00214 
00221 typedef SPAPI SPErr (*ColorSpace_ExtractColorName) (ColorID id, ASZString *colorName);
00222 
00229 typedef SPAPI SPErr (*ColorSpace_PickColor) (ColorID *id, ASZString promptString);
00230 
00231 
00232 // these use the Photoshop internal 16 bit range of [0..32768]
00233 // data can be single or multiple channels, as long as the count includes all of it
00234 
00244 typedef SPAPI SPErr (*ColorSpace_Convert8to16)( unsigned char *input_data,
00245                                                 unsigned short *output_data,
00246                                                 short count );
00247 
00256 typedef SPAPI SPErr (*ColorSpace_Convert16to8)( unsigned short *input_data,
00257                                                 unsigned char *output_data,
00258                                                 short count );
00259 
00269 typedef SPAPI SPErr (*ColorSpace_ConvertToMonitorRGB)(short inputCSpace,
00270                                             Color8 *input_data,
00271                                             Color8 *output_data,
00272                                             short count);
00273 
00282 typedef SPAPI SPErr (*ColorSpace_Convert32to8)( float *input_data,
00283                                                 unsigned char *output_data,
00284                                                 short count );
00285 
00286 
00287 //-------------------------------------------------------------------------
00288 //  ColorSpace suite version 1
00289 //-------------------------------------------------------------------------
00290 
00292 #define kPSColorSpaceSuiteVersion1      1
00293 
00295 typedef struct 
00296 {
00297     ColorSpace_Make                 Make;                
00298     ColorSpace_Delete               Delete;              
00299     ColorSpace_StuffComponents      StuffComponents;     
00300     ColorSpace_ExtractComponents    ExtractComponents;   
00301     ColorSpace_StuffXYZ             StuffXYZ;            
00302     ColorSpace_ExtractXYZ           ExtractXYZ;          
00303     ColorSpace_Convert8             Convert8;            
00304     ColorSpace_Convert16            Convert16;           
00305     ColorSpace_GetNativeSpace       GetNativeSpace;      
00306     ColorSpace_IsBookColor          IsBookColor;         
00307     ColorSpace_ExtractColorName     ExtractColorName;    
00308     ColorSpace_PickColor            PickColor;           
00309     ColorSpace_Convert8to16         Convert8to16;        
00310     ColorSpace_Convert16to8         Convert16to8;        
00311     ColorSpace_ConvertToMonitorRGB  ConvertToMonitorRGB; 
00312     ColorSpace_Convert32to8         Convert32to8;        
00314 } PSColorSpaceSuite1;
00315 
00316 /******************************************************************************/
00317 
00318 #ifdef __cplusplus
00319 }
00320 #endif
00321 
00323 #endif  // PIColorSpaceSuite