#ifndef SUPPORT_H #define SUPPORT_H #include "windows.h" #include "icc.h" #include "icc_i386.h" #ifdef __cplusplus extern "C" { #endif #define TYPE_CIEBASEDDEF 1 #define TYPE_CIEBASEDDEFG 2 #define TempBfSize 128 #define CIEXYZRange 1.99997 #define MAX_LINELENG 240 // Foreword to the functions format. // All functions return TRUE if successful // and FALSE if not. Exact reason for the FALSE return can be determined // by calling GetLastCPError() function. // This allows us to use the "C" standard left-to-right evaluation order // for the logical expression and the requirement that logical AND // operation is performed until FALSE condition is met. That way we can use // expression like: // if( LoadCP() && ValidateCP() && // DoesCPTagExist() && GetCPTagSig() && // ValidateCPElement()) // { // Profile element is OK // Process CP Element........ // }else // { //Something is wrong // Err=GetLastCPError(); // } // Implementation-specific representation of the handle to the ColorProfile typedef MEMPTR CHANDLE, // For the convinience and speed __far *LPCHANDLE; // let's use the pointer to the // memory block of the profile // as the profile handle BOOL EXTERN LoadCP(LPCSTR filename, HGLOBAL FAR *phMem, LPCHANDLE lphCP); BOOL EXTERN LoadCP32(LPCSTR filename, HGLOBAL *phMem, LPCHANDLE lpCP); BOOL EXTERN FreeCP(HGLOBAL hMem); /* Checks if the profile has all required fields for this specific type of the color profile */ BOOL EXTERN ValidateCP(CHANDLE hCP); BOOL EXTERN DoesCPTagExist(CHANDLE hCP, CSIG CPTag); BOOL EXTERN GetCPTagIndex(CHANDLE hCP, CSIG CPTag, LPSINT lpIndex); BOOL EXTERN GetCPElementCount(CHANDLE hCP, LPSINT lpIndex); BOOL EXTERN ValidateCPElement(CHANDLE hCP, SINT Index); BOOL EXTERN GetCPTagSig(CHANDLE hCP, SINT Index, LPCSIG lpCPTag); BOOL EXTERN GetCPElementType(CHANDLE hCP, SINT Index, LPCSIG lpCSig); BOOL EXTERN GetCPElementSize(CHANDLE hCP, SINT Index, LPSINT lpSize); BOOL EXTERN GetCPElementDataSize(CHANDLE hCP, SINT Index, LPSINT lpSize); BOOL EXTERN GetCPElement(CHANDLE hCP, SINT Index, MEMPTR lpData, SINT Size); BOOL EXTERN GetCPElementData(CHANDLE hCP, SINT Index, MEMPTR lpData, SINT Size); BOOL EXTERN GetCPElementDataType(CHANDLE CP, SINT Index, long far *lpDataType); // Functions that get all information from the Color Profile Header BOOL EXTERN GetCPSize(CHANDLE hCP, LPSINT lpSize); BOOL EXTERN GetCPCMMType(CHANDLE hCP, LPCSIG lpType); BOOL EXTERN GetCPVersion(CHANDLE hCP, LPSINT lpVers); BOOL EXTERN GetCPClass(CHANDLE hCP, LPCSIG lpClass); BOOL EXTERN GetCPDevSpace(CHANDLE hCP, LPCSIG lpDevSpace); BOOL EXTERN GetCPConnSpace(CHANDLE hCP, LPCSIG lpConnSpace); BOOL EXTERN GetCPTarget(CHANDLE hCP, LPCSIG lpTarget); BOOL EXTERN GetCPManufacturer(CHANDLE hCP, LPCSIG lpManuf); BOOL EXTERN GetCPModel(CHANDLE hCP, LPCSIG lpModel); BOOL EXTERN GetCPFlags(CHANDLE hCP, LPSINT lpFlags); BOOL EXTERN GetCPAttributes(CHANDLE hCP, LPATTRIB lpAttributes); BOOL EXTERN GetCPWhitePoint(CHANDLE CP, LPSFLOAT lpWP); BOOL EXTERN GetCPMediaWhitePoint(CHANDLE CP, LPSFLOAT lpMediaWP); BOOL EXTERN GetCPRenderIntent(CHANDLE CP, LPSINT lpIntent); BOOL EXTERN GetPS2ColorRenderingIntent(CHANDLE cp, DWORD Intent, MEMPTR lpMem, LPDWORD Size); SINT EXTERN GetCPLastCPError(); BOOL EXTERN SetCPLastCPError(SINT cpError); BOOL EXTERN SetCPLastError(SINT LastError); #ifndef ICMDLL BOOL EXTERN ValidColorSpace(LPPDEVICE lppd, LPICMINFO lpICMI, LPCSIG lpDevCS); #endif BOOL EXTERN GetCPWhitePoint(CHANDLE CP, LPSFLOAT lpWP); SINT WriteInt(MEMPTR lpMem, SINT Number); SINT WriteHex(MEMPTR lpMem, SINT Number); SINT WriteNewLineObject(MEMPTR lpMem, MEMPTR Obj); SINT WriteObject(MEMPTR lpMem, MEMPTR Obj); SINT WriteObjectN(MEMPTR lpMem, MEMPTR Obj, SINT n); SINT WriteHexBuffer(MEMPTR lpMem, MEMPTR lpBuff, MEMPTR lpLineStart, DWORD dwBytes); SINT WriteFloat(MEMPTR lpMem, double dFloat); SINT WriteStringToken(MEMPTR lpMem, BYTE Token, SINT sNum); SINT WriteByteString(MEMPTR lpMem, MEMPTR lpBuff, SINT sBytes); SINT WriteInt2ByteString(MEMPTR lpMem, MEMPTR lpBuff, SINT sBytes); SINT WriteIntStringU2S(MEMPTR lpMem, MEMPTR lpBuff, SINT sNum); SINT WriteIntStringU2S_L(MEMPTR lpMem, MEMPTR lpBuff, SINT sNum); SINT WriteHNAToken(MEMPTR lpMem, BYTE Token, SINT sNum); SINT WriteAscii85(MEMPTR lpDest, unsigned long inword, SINT nBytes); SINT ConvertBinaryData2Ascii(MEMPTR lpMem, SINT DataSize, SINT BufSize); SINT Convert2Ascii(CHANDLE CP, SINT Index, MEMPTR lpData, SINT BufSize, SINT DataSize, BOOL AllowBinary); #ifdef ICMDLL SINT MemCopy(MEMPTR Dest, MEMPTR Source, SINT Length); #endif //SRGB98 BOOL EXTERN InvertMatrix (double FAR * lpInMatrix, double FAR * lpOutMatrix); BOOL EXTERN MemAlloc(SINT Size, HGLOBAL FAR *hMemory, LPMEMPTR lpMH); BOOL EXTERN MemFree(HGLOBAL hMem); DWORD FIXED_2DOT30(float); DWORD FIXED_16DOT16(float); BOOL DoesTRCAndColorantTagExist(CHANDLE cp); BOOL GetTRCElementSize(CHANDLE cp, CSIG icSigXTRCTag, LPSINT pIndex, LPSINT pTRCSize); #ifdef __cplusplus } #endif #endif // __SUPPORT_H