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 uint8   Color8[4];   
00090 
00096 typedef uint16  Color16[4];  
00101 typedef real32          Color32[4];  
00102 
00103 
00105 typedef struct
00106 {
00107     uint16 x;    
00108     uint16 y;    
00109     uint16 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, int16 colorSpace, 
00138                     uint8 component0, uint8 component1, 
00139                     uint8 component2, uint8 component3);
00140 
00155 typedef SPAPI SPErr (*ColorSpace_ExtractComponents) (ColorID id, int16 colorSpace,
00156                     uint8 *component0, uint8 *component1, 
00157                     uint8 *component2, uint8 *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, int16 *colorSpace);
00182 
00192 typedef SPAPI SPErr (*ColorSpace_Convert8) (int16 inputCSpace, int16 outputCSpace,
00193                                             Color8 *colorArray, int16 count);
00194 
00204 typedef SPAPI SPErr (*ColorSpace_Convert16) (int16 inputCSpace, int16 outputCSpace,
00205                                             Color16 *colorArray, int16 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)( uint8 *input_data,
00245                                                 uint16 *output_data,
00246                                                 int16 count );
00247 
00256 typedef SPAPI SPErr (*ColorSpace_Convert16to8)( uint16 *input_data,
00257                                                 uint8 *output_data,
00258                                                 int16 count );
00259 
00269 typedef SPAPI SPErr (*ColorSpace_ConvertToMonitorRGB)(int16 inputCSpace,
00270                                             Color8 *input_data,
00271                                             Color8 *output_data,
00272                                             int16 count);
00273 
00282 typedef SPAPI SPErr (*ColorSpace_Convert32to8)( real32 *input_data,
00283                                                 uint8 *output_data,
00284                                                 int16 count );
00285 
00294 typedef SPAPI SPErr (*ColorSpace_ConvertForDisplay) (PSPixelMap *source_data,
00295                                       Color8 *output_data,
00296                                       int32 output_rowBytes,
00297                                       const VRect *display_area);
00298 
00305 typedef SPAPI SPErr (*ColorSpace_GetDisplayProfile) (const VRect *display_area, Handle *profile_data);
00306 
00307 //-------------------------------------------------------------------------
00308 //  ColorSpace suite version 2
00309 //-------------------------------------------------------------------------
00310 
00312 #define kPSColorSpaceSuiteVersion2      2
00313 
00315 #define kPSColorSpaceSuiteVersion   kPSColorSpaceSuiteVersion2
00316 
00318 typedef struct 
00319 {
00320     ColorSpace_Make                 Make;                
00321     ColorSpace_Delete               Delete;              
00322     ColorSpace_StuffComponents      StuffComponents;     
00323     ColorSpace_ExtractComponents    ExtractComponents;   
00324     ColorSpace_StuffXYZ             StuffXYZ;            
00325     ColorSpace_ExtractXYZ           ExtractXYZ;          
00326     ColorSpace_Convert8             Convert8;            
00327     ColorSpace_Convert16            Convert16;           
00328     ColorSpace_GetNativeSpace       GetNativeSpace;      
00329     ColorSpace_IsBookColor          IsBookColor;         
00330     ColorSpace_ExtractColorName     ExtractColorName;    
00331     ColorSpace_PickColor            PickColor;           
00332     ColorSpace_Convert8to16         Convert8to16;        
00333     ColorSpace_Convert16to8         Convert16to8;        
00334     ColorSpace_ConvertToMonitorRGB  ConvertToMonitorRGB; 
00335     ColorSpace_Convert32to8         Convert32to8;        
00336     ColorSpace_ConvertForDisplay    ConvertForDisplay;   
00337     ColorSpace_GetDisplayProfile    GetDisplayProfile;   
00339 } PSColorSpaceSuite2;
00340 
00341 //-------------------------------------------------------------------------
00342 //  ColorSpace suite version 1
00343 //-------------------------------------------------------------------------
00344 
00346 #define kPSColorSpaceSuiteVersion1      1
00347 
00349 typedef struct 
00350 {
00351     ColorSpace_Make                 Make;                
00352     ColorSpace_Delete               Delete;              
00353     ColorSpace_StuffComponents      StuffComponents;     
00354     ColorSpace_ExtractComponents    ExtractComponents;   
00355     ColorSpace_StuffXYZ             StuffXYZ;            
00356     ColorSpace_ExtractXYZ           ExtractXYZ;          
00357     ColorSpace_Convert8             Convert8;            
00358     ColorSpace_Convert16            Convert16;           
00359     ColorSpace_GetNativeSpace       GetNativeSpace;      
00360     ColorSpace_IsBookColor          IsBookColor;         
00361     ColorSpace_ExtractColorName     ExtractColorName;    
00362     ColorSpace_PickColor            PickColor;           
00363     ColorSpace_Convert8to16         Convert8to16;        
00364     ColorSpace_Convert16to8         Convert16to8;        
00365     ColorSpace_ConvertToMonitorRGB  ConvertToMonitorRGB; 
00366     ColorSpace_Convert32to8         Convert32to8;        
00368 } PSColorSpaceSuite1;
00369 
00370 /******************************************************************************/
00371 
00372 #ifdef __cplusplus
00373 }
00374 #endif
00375 
00377 #endif  // PIColorSpaceSuite