Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

getcrd.c File Reference

#include "generic.h"

Go to the source code of this file.

Defines

#define ICMSEG

Functions

SINT EXTERN CreateLutCRD (CHANDLE cp, SINT Index, MEMPTR lpMem, DWORD InputIntent, BOOL AllowBinary)
BOOL GetRevCurve (MEMPTR lpBuff, MEMPTR lpCurve, MEMPTR lpRevCurve)
SINT EXTERN CreateMonoCRD (CHANDLE cp, SINT Index, MEMPTR lpMem, DWORD InputIntent)
BOOL GetTRCElementSize (CHANDLE cp, CSIG icSigXTRCTag, LPSINT pIndex, LPSINT pTRCSize)
BOOL DoesTRCAndColorantTagExist (CHANDLE cp)
SINT CreateRevArray (CHANDLE cp, MEMPTR lpMem, MEMPTR lpBuff, MEMPTR lpRevCurve, CSIG CPTag, BOOL AllowBinary)
SINT SendRevArray (CHANDLE cp, MEMPTR lpMem, MEMPTR lpBuff, CSIG CPTag, BOOL AllowBinary)
SINT CreateColorantArray (CHANDLE cp, double FAR *lpArray, CSIG CPTag)
SINT EXTERN CreateMatrixCRD (CHANDLE cp, MEMPTR lpMem, DWORD InputIntent, BOOL AllowBinary)
BOOL EXTERN GetPS2ColorRenderingDictionary (CHANDLE cp, DWORD Intent, MEMPTR lpMem, LPDWORD lpcbSize, BOOL AllowBinary)

Variables

char ICMSEG BeginString [] = "<"
char ICMSEG EndString [] = ">"
char ICMSEG BeginArray [] = "["
char ICMSEG EndArray [] = "]"
char ICMSEG BeginFunction [] = "{"
char ICMSEG EndFunction [] = "}bind "
char ICMSEG BeginDict [] = "<<"
char ICMSEG EndDict [] = ">>"
char ICMSEG BlackPoint [] = "[0 0 0]"
char ICMSEG DictType [] = "/ColorRenderingType 1 "
char ICMSEG WhitePointTag [] = "/WhitePoint "
char ICMSEG BlackPointTag [] = "/BlackPoint "
char ICMSEG RangePQRTag [] = "/RangePQR "
char ICMSEG TransformPQRTag [] = "/TransformPQR "
char ICMSEG MatrixPQRTag [] = "/MatrixPQR "
char ICMSEG RangeABCTag [] = "/RangeABC "
char ICMSEG MatrixATag [] = "/MatrixA "
char ICMSEG MatrixABCTag [] = "/MatrixABC "
char ICMSEG EncodeABCTag [] = "/EncodeABC "
char ICMSEG RangeLMNTag [] = "/RangeLMN "
char ICMSEG MatrixLMNTag [] = "/MatrixLMN "
char ICMSEG EncodeLMNTag [] = "/EncodeLMN "
char ICMSEG RenderTableTag [] = "/RenderTable "
char ICMSEG CIEBasedATag [] = "/CIEBasedA "
char ICMSEG CIEBasedABCTag [] = "/CIEBasedABC "
char ICMSEG CIEBasedDEFGTag [] = "/CIEBasedDEFG "
char ICMSEG CIEBasedDEFTag [] = "/CIEBasedDEF "
char ICMSEG DecodeATag [] = "/DecodeA "
char ICMSEG DecodeABCTag [] = "/DecodeABC "
char ICMSEG DecodeLMNTag [] = "/DecodeLMN "
char ICMSEG DeviceRGBTag [] = "/DeviceRGB "
char ICMSEG DeviceCMYKTag [] = "/DeviceCMYK "
char ICMSEG DeviceGrayTag [] = "/DeviceGray "
char ICMSEG TableTag [] = "/Table "
char ICMSEG DecodeDEFGTag [] = "/DecodeDEFG "
char ICMSEG DecodeDEFTag [] = "/DecodeDEF "
char ICMSEG NullOp [] = ""
char ICMSEG DupOp [] = "dup "
char ICMSEG UserDictOp [] = "userdict "
char ICMSEG GlobalDictOp [] = "globaldict "
char ICMSEG CurrentGlobalOp [] = "currentglobal "
char ICMSEG SetGlobalOp [] = "setglobal "
char ICMSEG DefOp [] = "def "
char ICMSEG BeginOp [] = "begin "
char ICMSEG EndOp [] = "end "
char ICMSEG TrueOp [] = "true "
char ICMSEG FalseOp [] = "false "
char ICMSEG MulOp [] = "mul "
char ICMSEG DivOp [] = "div "
char ICMSEG NewLine [] = "\n"
char ICMSEG Slash [] = "/"
char ICMSEG Space [] = " "
char ICMSEG CRDBegin [] = "%** CRD Begin "
char ICMSEG CRDEnd [] = "%** CRD End "
char ICMSEG CieBasedDEFGBegin [] = "%** CieBasedDEFG CSA Begin "
char ICMSEG CieBasedDEFBegin [] = "%** CieBasedDEF CSA Begin "
char ICMSEG CieBasedABCBegin [] = "%** CieBasedABC CSA Begin "
char ICMSEG CieBasedABegin [] = "%** CieBasedA CSA Begin "
char ICMSEG CieBasedDEFGEnd [] = "%** CieBasedDEFG CSA End "
char ICMSEG CieBasedDEFEnd [] = "%** CieBasedDEF CSA End "
char ICMSEG CieBasedABCEnd [] = "%** CieBasedABC CSA End "
char ICMSEG CieBasedAEnd [] = "%** CieBasedA CSA End "
char ICMSEG RangeABC [] = "[ 0 1 0 1 0 1 ] "
char ICMSEG RangeLMN [] = "[ 0 2 0 2 0 2 ] "
char ICMSEG Identity [] = "[1 0 0 0 1 0 0 0 1]"
char ICMSEG RangeABC_Lab [] = "[0 100 -128 127 -128 127]"
char ICMSEG Clip01 [] = "dup 1.0 ge{pop 1.0}{dup 0.0 lt{pop 0.0}if}ifelse "
char ICMSEG DecodeA3 [] = "256 div exp "
char ICMSEG DecodeA3Rev [] = "256 div 1.0 exch div exp "
char ICMSEG DecodeABCArray [] = "DecodeABC_"
char ICMSEG InputArray [] = "Inp_"
char ICMSEG OutputArray [] = "Out_"
char ICMSEG PreViewInArray [] = "IPV_"
char ICMSEG PreViewOutArray [] = "OPV_"
char ICMSEG IndexArray16b []
char ICMSEG IndexArray []
char ICMSEG TestingDEFG []
char ICMSEG SupportDEFG_S [] = "SupportDEFG? { "
char ICMSEG NotSupportDEFG_S [] = "SupportDEFG? not { "
char ICMSEG SupportDEFG_E [] = "}if "
char ICMSEG StartClip [] = "dup 1.0 le{dup 0.0 ge{"
char ICMSEG EndClip [] = "}if}if "
char ICMSEG Scale8 [] = "255 div "
char ICMSEG Scale16 [] = "65535 div "
char ICMSEG Scale16XYZ [] = "32768 div "
char ICMSEG TFunction8 [] = "exch 255 mul round cvi get 255 div "
char ICMSEG TFunction8XYZ [] = "exch 255 mul round cvi get 128 div "
char ICMSEG MatrixABCLab [] = "[1 1 1 1 0 0 0 0 -1]"
char ICMSEG DecodeABCLab1 [] = "[{16 add 116 div} bind {500 div} bind {200 div} bind]"
char ICMSEG DecodeALab [] = " 50 mul 16 add 116 div "
char ICMSEG DecodeLMNLab []
char ICMSEG RangeLMNLab [] = "[0 1 0 1 0 1]"
char ICMSEG EncodeLMNLab []
char ICMSEG MatrixABCLabCRD [] = "[0 500 0 116 -500 200 0 0 -200]"
char ICMSEG MatrixABCXYZCRD [] = "[0 1 0 1 0 0 0 0 1]"
char ICMSEG EncodeABCLab1 [] = "16 sub 100 div "
char ICMSEG EncodeABCLab2 [] = "128 add 255 div "
char ICMSEG RangePQR [] = "[ -0.07 2.2 -0.02 1.4 -0.2 4.8 ]"
char ICMSEG MatrixPQR [] = "[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]"
char * TransformPQR [3]


Define Documentation

#define ICMSEG
 


Function Documentation

SINT CreateColorantArray CHANDLE  cp,
double FAR *  lpArray,
CSIG  CPTag
 

Definition at line 703 of file jul98/dll32/getcrd.c.

References FAR, GetCPElement(), GetCPElementSize(), GetCPTagIndex(), icS15Fixed16Number, Index, lpcpXYZType, LPMEMPTR, LPSINT, MemAlloc(), MemFree(), MEMPTR, NULL, SFLOAT, si16f16toSFLOAT, SINT, and TRUE.

00704 { 00705 SINT i, Index; 00706 MEMPTR lpTable; 00707 MEMPTR Buff = NULL; 00708 SINT MemSize = 0; 00709 HGLOBAL hBuff; 00710 00711 if (GetCPTagIndex (cp, CPTag, (LPSINT) & Index) && 00712 GetCPElementSize (cp, Index, (LPSINT) & MemSize) && 00713 MemAlloc (MemSize, (HGLOBAL FAR *)&hBuff, (LPMEMPTR) & Buff) && 00714 GetCPElement (cp, Index, Buff, MemSize)) 00715 { 00716 lpTable = (MEMPTR) & (((lpcpXYZType) Buff)->data); 00717 for (i = 0; i < 3; i++) 00718 { 00719 *lpArray++ = (SFLOAT)si16f16toSFLOAT (lpTable); 00720 lpTable += sizeof (icS15Fixed16Number); 00721 } 00722 MemFree (hBuff); 00723 } 00724 return ( TRUE ); 00725 }

SINT EXTERN CreateLutCRD CHANDLE  cp,
SINT  Index,
MEMPTR  lpMem,
DWORD  InputIntent,
BOOL  AllowBinary
 

Definition at line 166 of file jul98/dll32/getcrd.c.

References AllowBinary, BeginArray, BeginDict, BeginGlobalDict(), BeginString, CP_POSTSCRIPT_ERR, CRDBegin, CRDEnd, CreateInputArray(), CreateOutputArray(), CSIG, DictType, EnableGlobalDict(), EndArray, EndClip, EndDict, EndGlobalDict(), EndString, FALSE, FAR, GetCLUTinfo(), GetCPConnSpace, GetCPElement(), GetCPElementSize(), GetCPElementType(), GetCPMediaWhitePoint(), GetCPTagSig(), GetCPWhitePoint(), GetPublicArrayName(), icAbsoluteColorimetric, icSigLut16Type, icSigLut8Type, icUInt16Number, Index, IndexArray, lpcpLut16Type, lpcpLut8Type, LPCSIG, LPMEMPTR, LPSFLOAT, LPSINT, MAX_LINELENG, MemAlloc(), MemFree(), MEMPTR, NewLine, NULL, RenderTableTag, SendCRDABC(), SendCRDBWPoint(), SendCRDLMN(), SendCRDOutputTable(), SendCRDPQR(), SetCPLastError(), SFLOAT, SINT, StartClip, TempBfSize, ui16toSINT, WriteByteString(), WriteHex, WriteHexBuffer(), WriteInt, WriteInt2ByteString(), WriteNewLineObject(), WriteObject, and WriteStringToken().

00167 { 00168 SINT nInputCh, nOutputCh, nGrids; 00169 SINT nInputTable, nOutputTable, nNumbers; 00170 CSIG Tag, PCS; 00171 CSIG IntentSig; 00172 00173 SINT Ret; 00174 SINT i, j; 00175 MEMPTR lpTable; 00176 00177 SFLOAT IlluminantWP[3]; 00178 SFLOAT MediaWP[3]; 00179 MEMPTR Buff = NULL; 00180 SINT MemSize = 0; 00181 MEMPTR lpOldMem = lpMem; 00182 char PublicArrayName[TempBfSize]; 00183 HGLOBAL hMem; 00184 MEMPTR lpLineStart; 00185 // Check if we can generate the CRD 00186 if (!GetCPTagSig (cp, Index, (LPCSIG) & IntentSig) || 00187 !GetCPElementType (cp, Index, (LPCSIG) & Tag) || 00188 ((Tag != icSigLut8Type) && (Tag != icSigLut16Type)) || 00189 !GetCPConnSpace (cp, (LPCSIG) & PCS) || 00190 !GetCPElementSize (cp, Index, (LPSINT) & MemSize) || 00191 !MemAlloc (MemSize, (HGLOBAL FAR *)&hMem, (LPMEMPTR) & Buff) || 00192 !GetCPElement (cp, Index, Buff, MemSize)) 00193 { 00194 if (NULL != Buff) 00195 { 00196 MemFree (hMem); 00197 } 00198 return (0); 00199 } 00200 GetCLUTinfo(Tag, Buff, &nInputCh, &nOutputCh, 00201 &nGrids, &nInputTable, &nOutputTable, &i); 00202 // Level 2 printers support only tri-component CIEBasedABC input, 00203 // but can have either 3 or 4 output channels. 00204 if (((nOutputCh != 3) && 00205 (nOutputCh != 4)) || 00206 (nInputCh != 3)) 00207 { 00208 SetCPLastError (CP_POSTSCRIPT_ERR); 00209 MemFree (hMem); 00210 return (0); 00211 } 00212 Ret = nInputCh * nInputTable * 6 + 00213 nOutputCh * nOutputTable * 6 + // Number of INT bytes 00214 nOutputCh * nGrids * nGrids * nGrids * 2 + // LUT HEX bytes 00215 nInputCh * (lstrlen (IndexArray) + 00216 lstrlen (StartClip) + 00217 lstrlen (EndClip)) + 00218 nOutputCh * (lstrlen (IndexArray) + 00219 lstrlen (StartClip) + 00220 lstrlen (EndClip)) + 00221 2048; // + other PS stuff 00222 00223 if (lpMem == NULL) // This is a size request 00224 { 00225 MemFree (hMem); 00226 return (Ret); 00227 } 00228 // Get all necessary params from the header 00229 // GetCPRenderIntent (cp, (LPCSIG) & Intent); // Get Intent 00230 GetCPWhitePoint (cp, (LPSFLOAT) & IlluminantWP); // .. Illuminant 00231 00232 // Support absolute whitePoint 00233 if (InputIntent == icAbsoluteColorimetric) 00234 { 00235 if (!GetCPMediaWhitePoint (cp, (LPSFLOAT) & MediaWP)) // .. Media WhitePoint 00236 { 00237 MediaWP[0] = IlluminantWP[0]; 00238 MediaWP[1] = IlluminantWP[1]; 00239 MediaWP[2] = IlluminantWP[2]; 00240 } 00241 } 00242 00243 //******** Define golbal array used in EncodeABC and RenderTaber 00244 GetPublicArrayName (cp, IntentSig, PublicArrayName); 00245 lpMem += WriteNewLineObject (lpMem, CRDBegin); 00246 00247 lpMem += EnableGlobalDict(lpMem); 00248 lpMem += BeginGlobalDict(lpMem); 00249 00250 lpMem += CreateInputArray (lpMem, nInputCh, nInputTable, 00251 (MEMPTR) PublicArrayName, Tag, Buff, AllowBinary, NULL); 00252 00253 i = nInputTable * nInputCh + 00254 nGrids * nGrids * nGrids * nOutputCh; 00255 lpMem += CreateOutputArray (lpMem, nOutputCh, nOutputTable, i, 00256 (MEMPTR) PublicArrayName, Tag, Buff, AllowBinary, NULL); 00257 00258 lpMem += EndGlobalDict(lpMem); 00259 00260 //************* Start writing CRD **************************** 00261 lpMem += WriteNewLineObject (lpMem, BeginDict); // Begin dictionary 00262 lpMem += WriteObject (lpMem, DictType); // Dictionary type 00263 00264 //********** Send Black/White Point. 00265 lpMem += SendCRDBWPoint(lpMem, IlluminantWP); 00266 00267 //********** Send PQR - used for Absolute Colorimetric ***** 00268 lpMem += SendCRDPQR(lpMem, InputIntent, IlluminantWP); 00269 00270 //********** Send LMN - For Absolute Colorimetric use WhitePoint's XYZs 00271 lpMem += SendCRDLMN(lpMem, InputIntent, IlluminantWP, MediaWP, PCS); 00272 00273 // ******** Create MatrixABC and EncodeABC stuff 00274 lpMem += SendCRDABC(lpMem, PublicArrayName, 00275 PCS, nInputCh, Buff, NULL, Tag, AllowBinary); 00276 00277 //********** /RenderTable 00278 lpMem += WriteNewLineObject (lpMem, RenderTableTag); 00279 lpMem += WriteObject (lpMem, BeginArray); 00280 00281 lpMem += WriteInt (lpMem, nGrids); // Send down Na 00282 lpMem += WriteInt (lpMem, nGrids); // Send down Nb 00283 lpMem += WriteInt (lpMem, nGrids); // Send down Nc 00284 00285 lpLineStart = lpMem; 00286 lpMem += WriteNewLineObject (lpMem, BeginArray); 00287 nNumbers = nGrids * nGrids * nOutputCh; 00288 for (i = 0; i < nGrids; i++) // Na strings should be sent 00289 { 00290 lpMem += WriteObject (lpMem, NewLine); 00291 lpLineStart = lpMem; 00292 if (Tag == icSigLut8Type) 00293 { 00294 lpTable = (MEMPTR) (((lpcpLut8Type) Buff)->lut.data) + 00295 nInputTable * nInputCh + 00296 nNumbers * i; 00297 } else 00298 { 00299 lpTable = (MEMPTR) (((lpcpLut16Type) Buff)->lut.data) + 00300 2 * nInputTable * nInputCh + 00301 2 * nNumbers * i; 00302 } 00303 if (!AllowBinary) // Output ASCII CRD 00304 { 00305 lpMem += WriteObject (lpMem, BeginString); 00306 if (Tag == icSigLut8Type) 00307 lpMem += WriteHexBuffer (lpMem, lpTable, lpLineStart, nNumbers); 00308 else 00309 { 00310 for (j = 0; j < nNumbers; j++) 00311 { 00312 lpMem += WriteHex (lpMem, ui16toSINT (lpTable) / 256); 00313 lpTable += sizeof (icUInt16Number); 00314 if (((SINT) (lpMem - lpLineStart)) > MAX_LINELENG) 00315 { 00316 lpLineStart = lpMem; 00317 lpMem += WriteObject (lpMem, NewLine); 00318 } 00319 } 00320 } 00321 lpMem += WriteObject (lpMem, EndString); 00322 } else 00323 { // Output BINARY CRD 00324 lpMem += WriteStringToken (lpMem, 143, nNumbers); 00325 if (Tag == icSigLut8Type) 00326 lpMem += WriteByteString (lpMem, lpTable, nNumbers); 00327 else 00328 lpMem += WriteInt2ByteString (lpMem, lpTable, nNumbers); 00329 } 00330 } 00331 00332 lpMem += WriteObject (lpMem, EndArray); // End array 00333 lpMem += WriteInt (lpMem, nOutputCh); // Send down m 00334 00335 //********** Send Output Table. 00336 lpMem += SendCRDOutputTable(lpMem, PublicArrayName, 00337 nOutputCh, Tag, FALSE, AllowBinary); 00338 00339 lpMem += WriteObject (lpMem, EndArray); // End array 00340 lpMem += WriteObject (lpMem, EndDict); // End dictionary definition 00341 00342 lpMem += WriteNewLineObject (lpMem, CRDEnd); 00343 00344 // Testing Convert binary to ascii 00345 // i = ConvertBinaryData2Ascii(lpOldMem, (SINT)(lpMem - lpOldMem), Ret); 00346 // lpMem = lpOldMem + i; 00347 // Testing Convert binary to ascii 00348 00349 MemFree (hMem); 00350 return ((SINT) ((unsigned long) (lpMem - lpOldMem))); 00351 }

SINT EXTERN CreateMatrixCRD CHANDLE  cp,
MEMPTR  lpMem,
DWORD  InputIntent,
BOOL  AllowBinary
 

Definition at line 749 of file jul98/dll32/getcrd.c.

References AllowBinary, BeginArray, BeginDict, BeginGlobalDict(), CRDBegin, CRDEnd, CreateColorantArray(), CreateRevArray(), DictType, EnableGlobalDict(), EncodeABCTag, EndArray, EndDict, EndGlobalDict(), FAR, GetCPElement(), GetCPWhitePoint(), GetTRCElementSize(), icSigBlueColorantTag, icSigBlueTRCTag, icSigGreenColorantTag, icSigGreenTRCTag, icSigRedColorantTag, icSigRedTRCTag, InvertMatrix(), lpcpCurveType, LPMEMPTR, LPSFLOAT, MatrixLMNTag, MemAlloc(), MemFree(), MEMPTR, NewLine, NULL, REVCURVE_RATIO, SendCRDBWPoint(), SendCRDPQR(), SendRevArray(), SFLOAT, SINT, ui32toSINT, WriteFloat(), WriteNewLineObject(), and WriteObject.

00750 { 00751 SINT RedTRCIndex, GreenTRCIndex, BlueTRCIndex; 00752 SINT i, MemSize; 00753 SINT nRedCount, nGreenCount, nBlueCount; 00754 MEMPTR lpRed = NULL,lpGreen, lpBlue; 00755 SINT RedTRCSize = 0, GreenTRCSize = 0, BlueTRCSize = 0; 00756 MEMPTR lpOldMem = lpMem; 00757 MEMPTR lpRevCurve; 00758 HGLOBAL hRevCurve; 00759 SINT Ret = 0; 00760 HGLOBAL hMem; 00761 SFLOAT IlluminantWP[3]; 00762 double Colorant[9]; 00763 double RevColorant[9]; 00764 00765 // Check if we can generate the CRD 00766 if (!GetTRCElementSize(cp, icSigRedTRCTag, &RedTRCIndex, &RedTRCSize) || 00767 !GetTRCElementSize(cp, icSigGreenTRCTag, &GreenTRCIndex, &GreenTRCSize) || 00768 !GetTRCElementSize(cp, icSigBlueTRCTag, &BlueTRCIndex, &BlueTRCSize)) 00769 { 00770 return 0; 00771 } 00772 MemSize = RedTRCSize + GreenTRCSize + BlueTRCSize; 00773 if (!MemAlloc (MemSize, (HGLOBAL FAR *)&hMem, (LPMEMPTR) & lpRed)) 00774 return 0; 00775 00776 lpGreen = lpRed + RedTRCSize; 00777 lpBlue = lpGreen + GreenTRCSize; 00778 if (!GetCPElement (cp, RedTRCIndex, lpRed, RedTRCSize) || 00779 !GetCPElement (cp, GreenTRCIndex, lpGreen, GreenTRCSize ) || 00780 !GetCPElement (cp, BlueTRCIndex, lpBlue, BlueTRCSize )) 00781 { 00782 MemFree (hMem); 00783 return (0); 00784 } 00785 nRedCount = ui32toSINT (((lpcpCurveType) lpRed)->curve.count); 00786 nGreenCount = ui32toSINT (((lpcpCurveType) lpGreen)->curve.count); 00787 nBlueCount = ui32toSINT (((lpcpCurveType) lpBlue)->curve.count); 00788 00789 // Estimate the memory size required to hold CRD 00790 Ret = (nRedCount + nGreenCount + nBlueCount) * 6 * REVCURVE_RATIO + 00791 2048; // Number of INT elements + other PS stuff 00792 if (lpMem == NULL) // This is a size request 00793 { 00794 MemFree (hMem); 00795 return (Ret); 00796 } 00797 00798 if (!MemAlloc (nRedCount * 2 * (REVCURVE_RATIO + 1), 00799 (HGLOBAL FAR *) &hRevCurve, (LPMEMPTR) & lpRevCurve)) 00800 { 00801 MemFree (hMem); 00802 return (0); 00803 } 00804 00805 lpMem += EnableGlobalDict(lpMem); 00806 lpMem += BeginGlobalDict(lpMem); 00807 00808 lpMem += CreateRevArray (cp, lpMem, lpRed, lpRevCurve, icSigRedTRCTag, AllowBinary); 00809 lpMem += CreateRevArray (cp, lpMem, lpGreen, lpRevCurve, icSigGreenTRCTag, AllowBinary); 00810 lpMem += CreateRevArray (cp, lpMem, lpBlue, lpRevCurve, icSigBlueTRCTag, AllowBinary); 00811 00812 lpMem += EndGlobalDict(lpMem); 00813 00814 // GetCPCMMType (cp, (LPCSIG) & Intent); // Get Intent 00815 GetCPWhitePoint (cp, (LPSFLOAT) & IlluminantWP); // .. Illuminant 00816 00817 //************* Start writing CRD **************************** 00818 lpMem += WriteNewLineObject (lpMem, CRDBegin); 00819 00820 lpMem += WriteNewLineObject (lpMem, BeginDict); // Begin dictionary 00821 lpMem += WriteObject (lpMem, DictType); // Dictionary type 00822 00823 //********** Send Black/White Point. 00824 lpMem += SendCRDBWPoint(lpMem, IlluminantWP); 00825 00826 //********** /TransformPQR 00827 lpMem += SendCRDPQR(lpMem, InputIntent, IlluminantWP); 00828 00829 //********** /MatrixLMN 00830 CreateColorantArray(cp, &Colorant[0], icSigRedColorantTag); 00831 CreateColorantArray(cp, &Colorant[3], icSigGreenColorantTag); 00832 CreateColorantArray(cp, &Colorant[6], icSigBlueColorantTag); 00833 InvertMatrix (Colorant, RevColorant); 00834 00835 lpMem += WriteNewLineObject (lpMem, MatrixLMNTag); 00836 00837 lpMem += WriteObject (lpMem, BeginArray); 00838 for (i = 0; i < 9; i++) 00839 { 00840 lpMem += WriteFloat (lpMem, (SFLOAT)RevColorant[i]); 00841 } 00842 lpMem += WriteObject (lpMem, EndArray); 00843 00844 //********** /EncodeABC 00845 lpMem += WriteNewLineObject (lpMem, EncodeABCTag); 00846 lpMem += WriteObject (lpMem, BeginArray); 00847 00848 lpMem += WriteObject (lpMem, NewLine); 00849 lpMem += SendRevArray (cp, lpMem, lpRed, icSigRedTRCTag, AllowBinary); 00850 lpMem += WriteObject (lpMem, NewLine); 00851 lpMem += SendRevArray (cp, lpMem, lpGreen, icSigGreenTRCTag, AllowBinary); 00852 lpMem += WriteObject (lpMem, NewLine); 00853 lpMem += SendRevArray (cp, lpMem, lpBlue, icSigBlueTRCTag, AllowBinary); 00854 lpMem += WriteNewLineObject (lpMem, EndArray); 00855 00856 lpMem += WriteObject (lpMem, EndDict); // End dictionary definition 00857 00858 lpMem += WriteNewLineObject (lpMem, CRDEnd); 00859 00860 MemFree (hRevCurve); 00861 MemFree (hMem); 00862 return ((SINT) ((unsigned long) (lpMem - lpOldMem))); 00863 }

SINT EXTERN CreateMonoCRD CHANDLE  cp,
SINT  Index,
MEMPTR  lpMem,
DWORD  InputIntent
 

Definition at line 447 of file jul98/dll32/getcrd.c.

References BeginArray, BeginDict, BeginFunction, CSIG, DecodeA3Rev, DictType, DupOp, EncodeABCLab1, EncodeABCTag, EndArray, EndClip, EndDict, EndFunction, FALSE, FAR, GetCPConnSpace, GetCPElement(), GetCPElementSize(), GetCPElementType(), GetCPMediaWhitePoint(), GetCPWhitePoint(), GetRevCurve(), icAbsoluteColorimetric, icSigCurveType, icSigLabData, icSigXYZData, icUInt16Number, Index, IndexArray, lpcpCurveType, LPCSIG, LPMEMPTR, LPSFLOAT, LPSINT, MatrixABCLabCRD, MatrixABCTag, MatrixABCXYZCRD, MAX_LINELENG, MemAlloc(), MemFree(), MEMPTR, NewLine, NULL, PUSHORT, REVCURVE_RATIO, Scale16, SendCRDBWPoint(), SendCRDLMN(), SendCRDPQR(), SFLOAT, SINT, StartClip, ui16toSINT, ui32toSINT, WriteInt, WriteNewLineObject(), and WriteObject.

00448 { 00449 SINT nCount; 00450 CSIG Tag, PCS; 00451 00452 MEMPTR Buff = NULL; 00453 SINT MemSize = 0; 00454 MEMPTR lpOldMem = lpMem; 00455 MEMPTR lpCurve, lpRevCurve; 00456 HGLOBAL hRevCurve; 00457 SINT Ret = 0; 00458 HGLOBAL hMem; 00459 SINT i; 00460 MEMPTR lpTable; 00461 SFLOAT IlluminantWP[3]; 00462 SFLOAT MediaWP[3]; 00463 MEMPTR lpLineStart; 00464 // Check if we can generate the CRD 00465 if (!GetCPElementType (cp, Index, (LPCSIG) & Tag) || 00466 (Tag != icSigCurveType) || 00467 !GetCPConnSpace (cp, (LPCSIG) & PCS) || 00468 !GetCPElementSize (cp, Index, (LPSINT) & MemSize) || 00469 !MemAlloc (MemSize, (HGLOBAL FAR *)&hMem, (LPMEMPTR) & Buff) || 00470 !GetCPElement (cp, Index, Buff, MemSize)) 00471 { 00472 if (NULL != Buff) 00473 { 00474 MemFree (hMem); 00475 } 00476 return (0); 00477 } 00478 nCount = ui32toSINT (((lpcpCurveType) Buff)->curve.count); 00479 00480 // Estimate the memory size required to hold CRD 00481 // SRGB98 00482 Ret = nCount * 6 * REVCURVE_RATIO + // Number of INT elements 00483 2048; // + other PS stuff 00484 if (lpMem == NULL) // This is a size request 00485 { 00486 MemFree (hMem); 00487 return (Ret); 00488 } 00489 if (!MemAlloc (nCount * 2 * (REVCURVE_RATIO + 1), 00490 (HGLOBAL FAR *) &hRevCurve, (LPMEMPTR) & lpRevCurve)) 00491 { 00492 MemFree (hMem); 00493 return (FALSE); 00494 } 00495 lpCurve = lpRevCurve + 2 * REVCURVE_RATIO * nCount; 00496 GetRevCurve (Buff, lpCurve, lpRevCurve); 00497 00498 // GetCPCMMType (cp, (LPCSIG) & Intent); // Get Intent 00499 GetCPWhitePoint (cp, (LPSFLOAT) & IlluminantWP); // .. Illuminant 00500 00501 // Support absolute whitePoint 00502 if (InputIntent == icAbsoluteColorimetric) 00503 { 00504 if (!GetCPMediaWhitePoint (cp, (LPSFLOAT) & MediaWP)) // .. Media WhitePoint 00505 { 00506 MediaWP[0] = IlluminantWP[0]; 00507 MediaWP[1] = IlluminantWP[1]; 00508 MediaWP[2] = IlluminantWP[2]; 00509 } 00510 } 00511 00512 //************* Start writing CRD **************************** 00513 lpMem += WriteNewLineObject (lpMem, BeginDict); // Begin dictionary 00514 lpMem += WriteObject (lpMem, DictType); // Dictionary type 00515 00516 //********** Send Black/White Point. 00517 lpMem += SendCRDBWPoint(lpMem, IlluminantWP); 00518 00519 //********** /TransformPQR 00520 lpMem += SendCRDPQR(lpMem, InputIntent, IlluminantWP); 00521 00522 //********** /MatrixLMN 00523 lpMem += SendCRDLMN(lpMem, InputIntent, IlluminantWP, MediaWP, PCS); 00524 00525 //********** /MatrixABC 00526 if (PCS == icSigXYZData) 00527 { // Switch ABC to BAC, since we want to output B which is converted from Y. 00528 lpMem += WriteNewLineObject (lpMem, MatrixABCTag); 00529 lpMem += WriteObject (lpMem, MatrixABCXYZCRD); 00530 } 00531 else if (PCS == icSigLabData) 00532 { 00533 lpMem += WriteNewLineObject (lpMem, MatrixABCTag); 00534 lpMem += WriteObject (lpMem, MatrixABCLabCRD); 00535 } 00536 //********** /EncodeABC 00537 if (nCount != 0) 00538 { 00539 lpMem += WriteObject (lpMem, NewLine); 00540 lpLineStart = lpMem; 00541 lpMem += WriteObject (lpMem, EncodeABCTag); 00542 lpMem += WriteObject (lpMem, BeginArray); 00543 lpMem += WriteObject (lpMem, BeginFunction); 00544 if (nCount == 1) // Gamma supplied in ui16 format 00545 { 00546 lpTable = (MEMPTR) (((lpcpCurveType) Buff)->curve.data); 00547 lpMem += WriteInt (lpMem, ui16toSINT (lpTable)); 00548 lpMem += WriteObject (lpMem, DecodeA3Rev); 00549 } else 00550 { 00551 if (PCS == icSigLabData) 00552 { 00553 lpMem += WriteObject (lpMem, EncodeABCLab1); 00554 } 00555 lpMem += WriteObject (lpMem, StartClip); 00556 lpMem += WriteObject (lpMem, BeginArray); 00557 for (i = 0; i < nCount * REVCURVE_RATIO; i++) 00558 { 00559 lpMem += WriteInt (lpMem, (SINT) (*((PUSHORT) lpRevCurve))); 00560 lpRevCurve += sizeof (icUInt16Number); 00561 if (((SINT) (lpMem - lpLineStart)) > MAX_LINELENG) 00562 { 00563 lpLineStart = lpMem; 00564 lpMem += WriteObject (lpMem, NewLine); 00565 } 00566 } 00567 lpMem += WriteObject (lpMem, EndArray); 00568 lpLineStart = lpMem; 00569 lpMem += WriteNewLineObject (lpMem, IndexArray); 00570 lpMem += WriteObject (lpMem, Scale16); 00571 lpMem += WriteObject (lpMem, EndClip); 00572 } 00573 lpMem += WriteObject (lpMem, EndFunction); 00574 lpMem += WriteObject (lpMem, DupOp); 00575 lpMem += WriteObject (lpMem, DupOp); 00576 lpMem += WriteObject (lpMem, EndArray); 00577 } 00578 lpMem += WriteObject (lpMem, EndDict); // End dictionary definition 00579 00580 MemFree (hRevCurve); 00581 MemFree (hMem); 00582 return ((SINT) ((unsigned long) (lpMem - lpOldMem))); 00583 }

SINT CreateRevArray CHANDLE  cp,
MEMPTR  lpMem,
MEMPTR  lpBuff,
MEMPTR  lpRevCurve,
CSIG  CPTag,
BOOL  AllowBinary
[static]
 

Definition at line 618 of file jul98/dll32/getcrd.c.

References AllowBinary, BeginArray, DefOp, EndArray, GetRevCurve(), icUInt16Number, InputArray, lpcpCurveType, MAX_LINELENG, MEMPTR, NewLine, PUSHORT, REVCURVE_RATIO, SINT, Slash, ui32toSINT, WriteHNAToken(), WriteInt, WriteIntStringU2S_L(), WriteNewLineObject(), and WriteObject.

Referenced by CreateMatrixCRD().

00620 { 00621 SINT i, nCount; 00622 SINT MemSize = 0; 00623 MEMPTR lpOldMem, lpLineStart; 00624 MEMPTR lpCurve; 00625 00626 lpOldMem = lpMem; 00627 00628 lpLineStart = lpMem; 00629 nCount = ui32toSINT (((lpcpCurveType) lpBuff)->curve.count); 00630 if (nCount > 1) 00631 { 00632 lpMem += WriteNewLineObject (lpMem, Slash); 00633 lpMem += WriteObject (lpMem, InputArray); 00634 lpMem += WriteInt (lpMem, (SINT) CPTag); 00635 00636 lpCurve = lpRevCurve + 2 * REVCURVE_RATIO * nCount; 00637 GetRevCurve (lpBuff, lpCurve, lpRevCurve); 00638 00639 if (!AllowBinary) // Output ASCII DATA 00640 { 00641 lpMem += WriteObject (lpMem, BeginArray); 00642 for (i = 0; i < nCount * REVCURVE_RATIO; i++) 00643 { 00644 lpMem += WriteInt (lpMem, (SINT) (*((PUSHORT) lpRevCurve))); 00645 lpRevCurve += sizeof (icUInt16Number); 00646 if (((SINT) (lpMem - lpLineStart)) > MAX_LINELENG) 00647 { 00648 lpLineStart = lpMem; 00649 lpMem += WriteObject (lpMem, NewLine); 00650 } 00651 } 00652 lpMem += WriteObject (lpMem, EndArray); 00653 } else 00654 { // Output BINARY DATA 00655 lpMem += WriteHNAToken (lpMem, 149, nCount); 00656 lpMem += WriteIntStringU2S_L (lpMem, lpRevCurve, nCount); 00657 } 00658 } 00659 lpMem += WriteObject (lpMem, DefOp); 00660 return ((SINT) (lpMem - lpOldMem)); 00661 }

BOOL DoesTRCAndColorantTagExist CHANDLE  cp  ) 
 

Definition at line 602 of file jul98/dll32/getcrd.c.

References DoesCPTagExist(), FALSE, icSigBlueColorantTag, icSigBlueTRCTag, icSigGreenColorantTag, icSigGreenTRCTag, icSigRedColorantTag, icSigRedTRCTag, and TRUE.

00603 { 00604 if (DoesCPTagExist (cp, icSigRedColorantTag) && 00605 DoesCPTagExist (cp, icSigRedTRCTag ) && 00606 DoesCPTagExist (cp, icSigGreenColorantTag) && 00607 DoesCPTagExist (cp, icSigGreenTRCTag ) && 00608 DoesCPTagExist (cp, icSigBlueColorantTag) && 00609 DoesCPTagExist (cp, icSigBlueTRCTag )) 00610 { 00611 return TRUE; 00612 } 00613 00614 return FALSE; 00615 }

BOOL EXTERN GetPS2ColorRenderingDictionary CHANDLE  cp,
DWORD  Intent,
MEMPTR  lpMem,
LPDWORD  lpcbSize,
BOOL  AllowBinary
 

Definition at line 867 of file jul98/dll32/getcrd.c.

References AllowBinary, Convert2Ascii(), CreateLutCRD(), CreateMatrixCRD(), CreateMonoCRD(), CSIG, DoesCPTagExist(), DoesTRCAndColorantTagExist(), DWORD, FALSE, GetCPElementData(), GetCPElementDataSize(), GetCPTagIndex(), icAbsoluteColorimetric, icPerceptual, icRelativeColorimetric, icSaturation, icSigBToA0Tag, icSigBToA1Tag, icSigBToA2Tag, icSigGrayTRCTag, icSigPs2CRD0Tag, icSigPs2CRD1Tag, icSigPs2CRD2Tag, icSigPs2CRD3Tag, Index, Intent, LPSINT, NULL, SINT, and Size.

00873 { 00874 SINT Index; 00875 SINT Ret, Size; 00876 CSIG icSigPs2CRDx, icSigBToAx; 00877 00878 if (!cp) 00879 return FALSE; 00880 00881 if ((lpMem == NULL) || (*lpcbSize == 0)) 00882 { 00883 lpMem = NULL; 00884 *lpcbSize = 0; 00885 } 00886 Ret = 0; 00887 Size = (SINT) * lpcbSize; 00888 00889 switch (Intent) 00890 { 00891 case icPerceptual: 00892 icSigPs2CRDx = icSigPs2CRD0Tag; 00893 icSigBToAx = icSigBToA0Tag; 00894 break; 00895 00896 case icRelativeColorimetric: 00897 icSigPs2CRDx = icSigPs2CRD1Tag; 00898 icSigBToAx = icSigBToA1Tag; 00899 break; 00900 00901 case icSaturation: 00902 icSigPs2CRDx = icSigPs2CRD2Tag; 00903 icSigBToAx = icSigBToA2Tag; 00904 break; 00905 00906 case icAbsoluteColorimetric: 00907 icSigPs2CRDx = icSigPs2CRD3Tag; 00908 icSigBToAx = icSigBToA1Tag; 00909 break; 00910 00911 default: 00912 *lpcbSize = (DWORD) Ret; 00913 return (Ret > 0); 00914 } 00915 00916 if ( 00917 (DoesCPTagExist (cp, icSigPs2CRDx) && 00918 GetCPTagIndex (cp, icSigPs2CRDx, (LPSINT) & Index) && 00919 GetCPElementDataSize (cp, Index, (LPSINT) & Ret) && 00920 ((Size == 0) || 00921 GetCPElementData (cp, Index, lpMem, Size)) && 00922 (Ret = Convert2Ascii (cp, Index, lpMem, Size, Ret, AllowBinary)) 00923 ) || 00924 (DoesCPTagExist (cp, icSigBToAx) && 00925 GetCPTagIndex (cp, icSigBToAx, (LPSINT) & Index) && 00926 (Ret = CreateLutCRD (cp, Index, lpMem, Intent, AllowBinary)) 00927 ) || 00928 // SRGB98 Support Windows 98 sRGB icc profile. 00929 // Create CRD from TRC and Colorant Tags. 00930 (DoesTRCAndColorantTagExist (cp) && 00931 (Ret = CreateMatrixCRD (cp, lpMem, Intent, AllowBinary)) 00932 ) || 00933 (DoesCPTagExist (cp, icSigGrayTRCTag) && 00934 GetCPTagIndex (cp, icSigGrayTRCTag, (LPSINT) & Index) && 00935 (Ret = CreateMonoCRD (cp, Index, lpMem, Intent)) 00936 ) 00937 ) 00938 { 00939 } 00940 00941 *lpcbSize = (DWORD) Ret; 00942 return (Ret > 0); 00943 }

BOOL GetRevCurve MEMPTR  lpBuff,
MEMPTR  lpCurve,
MEMPTR  lpRevCurve
 

Definition at line 368 of file jul98/dll32/getcrd.c.

References icUInt16Number, lpcpCurveType, MEMPTR, PUSHORT, REVCURVE_RATIO, SFLOAT, SINT, TRUE, ui16toSINT, ui32toSINT, and USHORT.

00369 { 00370 SINT i, j, nCount; 00371 MEMPTR lpTable; 00372 PUSHORT lpInput, lpOutput; 00373 SFLOAT fTemp; 00374 SINT iBegin, iEnd, iTemp; 00375 nCount = ui32toSINT (((lpcpCurveType) lpBuff)->curve.count); 00376 lpTable = (MEMPTR) (((lpcpCurveType) lpBuff)->curve.data); 00377 lpOutput = (PUSHORT) lpRevCurve; 00378 lpInput = (PUSHORT) lpCurve; 00379 00380 for (i = 0; i < nCount; i++) 00381 { 00382 lpInput[i] = (USHORT) (ui16toSINT (lpTable)); 00383 lpTable += sizeof (icUInt16Number); 00384 } 00385 00386 j = nCount * REVCURVE_RATIO; 00387 for (i = 0; i < j; i++) 00388 { 00389 fTemp = (SFLOAT) i *65535 / (j - 1); 00390 lpOutput[i] = (fTemp < 65535) ? (USHORT) fTemp : (USHORT) 65535; 00391 } 00392 00393 for (i = 0; i < j; i++) 00394 { 00395 iBegin = 0; 00396 iEnd = nCount - 1; 00397 for (;;) 00398 { 00399 if ((iEnd - iBegin) <= 1) 00400 break; 00401 iTemp = (iEnd + iBegin) / 2; 00402 if (lpOutput[i] < lpInput[iTemp]) 00403 iEnd = iTemp; 00404 else 00405 iBegin = iTemp; 00406 } 00407 if (lpOutput[i] <= lpInput[iBegin]) 00408 fTemp = (SFLOAT) iBegin; 00409 else if (lpOutput[i] >= lpInput[iEnd]) 00410 fTemp = (SFLOAT) iEnd; 00411 else 00412 { 00413 fTemp = ((SFLOAT) (lpInput[iEnd] - lpOutput[i])) / 00414 (lpOutput[i] - lpInput[iBegin]); 00415 fTemp = (iBegin * fTemp + iEnd) / (fTemp + 1); 00416 } 00417 fTemp = (fTemp / (nCount - 1)) * 65535; 00418 lpOutput[i] = (fTemp < 65535) ? (USHORT) fTemp : (USHORT) 65535; 00419 } 00420 00421 return TRUE; 00422 }

BOOL GetTRCElementSize CHANDLE  cp,
CSIG  icSigXTRCTag,
LPSINT  pIndex,
LPSINT  pTRCSize
 

Definition at line 587 of file jul98/dll32/getcrd.c.

References CSIG, FALSE, GetCPElementSize(), GetCPElementType(), GetCPTagIndex(), icSigCurveType, LPCSIG, LPSINT, and TRUE.

00588 { 00589 CSIG Tag; 00590 00591 if (!GetCPTagIndex (cp, icSigXTRCTag, (LPSINT) pIndex) || 00592 !GetCPElementType (cp, *pIndex, (LPCSIG) & Tag) || 00593 !(Tag == icSigCurveType) || 00594 !GetCPElementSize (cp, *pIndex, (LPSINT) pTRCSize)) 00595 { 00596 return FALSE; 00597 } 00598 return TRUE; 00599 }

SINT SendRevArray CHANDLE  cp,
MEMPTR  lpMem,
MEMPTR  lpBuff,
CSIG  CPTag,
BOOL  AllowBinary
[static]
 

Definition at line 664 of file jul98/dll32/getcrd.c.

References AllowBinary, BeginFunction, DecodeA3Rev, EndClip, EndFunction, IndexArray, IndexArray16b, InputArray, lpcpCurveType, MEMPTR, Scale16, SINT, StartClip, ui16toSINT, ui32toSINT, WriteInt, and WriteObject.

Referenced by CreateMatrixCRD().

00666 { 00667 SINT nCount; 00668 MEMPTR lpOldMem; 00669 MEMPTR lpTable; 00670 00671 lpOldMem = lpMem; 00672 lpMem += WriteObject (lpMem, BeginFunction); 00673 nCount = ui32toSINT (((lpcpCurveType) lpBuff)->curve.count); 00674 if (nCount != 0) 00675 { 00676 if (nCount == 1) // Gamma supplied in ui16 format 00677 { 00678 lpTable = (MEMPTR) (((lpcpCurveType) lpBuff)->curve.data); 00679 lpMem += WriteInt (lpMem, ui16toSINT (lpTable)); 00680 lpMem += WriteObject (lpMem, DecodeA3Rev); 00681 } else 00682 { 00683 lpMem += WriteObject (lpMem, StartClip); 00684 lpMem += WriteObject (lpMem, InputArray); 00685 lpMem += WriteInt (lpMem, (SINT) CPTag); 00686 00687 if (!AllowBinary) // Output ASCII CS 00688 { 00689 lpMem += WriteObject (lpMem, IndexArray); 00690 } else 00691 { // Output BINARY CS 00692 lpMem += WriteObject (lpMem, IndexArray16b); 00693 } 00694 lpMem += WriteObject (lpMem, Scale16); 00695 lpMem += WriteObject (lpMem, EndClip); 00696 } 00697 } 00698 lpMem += WriteObject (lpMem, EndFunction); 00699 return ((SINT) (lpMem - lpOldMem)); 00700 }


Variable Documentation

char ICMSEG BeginArray[] = "["
 

Definition at line 7 of file jul98/dll32/getcrd.c.

char ICMSEG BeginDict[] = "<<"
 

Definition at line 11 of file jul98/dll32/getcrd.c.

char ICMSEG BeginFunction[] = "{"
 

Definition at line 9 of file jul98/dll32/getcrd.c.

char ICMSEG BeginOp[] = "begin "
 

Definition at line 51 of file jul98/dll32/getcrd.c.

char ICMSEG BeginString[] = "<"
 

Definition at line 5 of file jul98/dll32/getcrd.c.

char ICMSEG BlackPoint[] = "[0 0 0]"
 

Definition at line 13 of file jul98/dll32/getcrd.c.

char ICMSEG BlackPointTag[] = "/BlackPoint "
 

Definition at line 17 of file jul98/dll32/getcrd.c.

char ICMSEG CieBasedABCBegin[] = "%** CieBasedABC CSA Begin "
 

Definition at line 65 of file jul98/dll32/getcrd.c.

char ICMSEG CieBasedABCEnd[] = "%** CieBasedABC CSA End "
 

Definition at line 69 of file jul98/dll32/getcrd.c.

char ICMSEG CIEBasedABCTag[] = "/CIEBasedABC "
 

Definition at line 31 of file jul98/dll32/getcrd.c.

char ICMSEG CieBasedABegin[] = "%** CieBasedA CSA Begin "
 

Definition at line 66 of file jul98/dll32/getcrd.c.

char ICMSEG CieBasedAEnd[] = "%** CieBasedA CSA End "
 

Definition at line 70 of file jul98/dll32/getcrd.c.

char ICMSEG CIEBasedATag[] = "/CIEBasedA "
 

Definition at line 30 of file jul98/dll32/getcrd.c.

char ICMSEG CieBasedDEFBegin[] = "%** CieBasedDEF CSA Begin "
 

Definition at line 64 of file jul98/dll32/getcrd.c.

char ICMSEG CieBasedDEFEnd[] = "%** CieBasedDEF CSA End "
 

Definition at line 68 of file jul98/dll32/getcrd.c.

char ICMSEG CieBasedDEFGBegin[] = "%** CieBasedDEFG CSA Begin "
 

Definition at line 63 of file jul98/dll32/getcrd.c.

char ICMSEG CieBasedDEFGEnd[] = "%** CieBasedDEFG CSA End "
 

Definition at line 67 of file jul98/dll32/getcrd.c.

char ICMSEG CIEBasedDEFGTag[] = "/CIEBasedDEFG "
 

Definition at line 32 of file jul98/dll32/getcrd.c.

char ICMSEG CIEBasedDEFTag[] = "/CIEBasedDEF "
 

Definition at line 33 of file jul98/dll32/getcrd.c.

char ICMSEG Clip01[] = "dup 1.0 ge{pop 1.0}{dup 0.0 lt{pop 0.0}if}ifelse "
 

Definition at line 78 of file jul98/dll32/getcrd.c.

char ICMSEG CRDBegin[] = "%** CRD Begin "
 

Definition at line 61 of file jul98/dll32/getcrd.c.

char ICMSEG CRDEnd[] = "%** CRD End "
 

Definition at line 62 of file jul98/dll32/getcrd.c.

char ICMSEG CurrentGlobalOp[] = "currentglobal "
 

Definition at line 48 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeA3[] = "256 div exp "
 

Definition at line 79 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeA3Rev[] = "256 div 1.0 exch div exp "
 

Definition at line 80 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeABCArray[] = "DecodeABC_"
 

Definition at line 81 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeABCLab1[] = "[{16 add 116 div} bind {500 div} bind {200 div} bind]"
 

Definition at line 118 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeABCTag[] = "/DecodeABC "
 

Definition at line 35 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeALab[] = " 50 mul 16 add 116 div "
 

Definition at line 119 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeATag[] = "/DecodeA "
 

Definition at line 34 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeDEFGTag[] = "/DecodeDEFG "
 

Definition at line 41 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeDEFTag[] = "/DecodeDEF "
 

Definition at line 42 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeLMNLab[]
 

Initial value:

\ "dup 0.206897 ge{dup dup mul mul}{0.137931 sub 0.128419 mul} ifelse "

Definition at line 120 of file jul98/dll32/getcrd.c.

char ICMSEG DecodeLMNTag[] = "/DecodeLMN "
 

Definition at line 36 of file jul98/dll32/getcrd.c.

char ICMSEG DefOp[] = "def "
 

Definition at line 50 of file jul98/dll32/getcrd.c.

char ICMSEG DeviceCMYKTag[] = "/DeviceCMYK "
 

Definition at line 38 of file jul98/dll32/getcrd.c.

char ICMSEG DeviceGrayTag[] = "/DeviceGray "
 

Definition at line 39 of file jul98/dll32/getcrd.c.

char ICMSEG DeviceRGBTag[] = "/DeviceRGB "
 

Definition at line 37 of file jul98/dll32/getcrd.c.

char ICMSEG DictType[] = "/ColorRenderingType 1 "
 

Definition at line 14 of file jul98/dll32/getcrd.c.

char ICMSEG DivOp[] = "div "
 

Definition at line 56 of file jul98/dll32/getcrd.c.

char ICMSEG DupOp[] = "dup "
 

Definition at line 45 of file jul98/dll32/getcrd.c.

char ICMSEG EncodeABCLab1[] = "16 sub 100 div "
 

Definition at line 129 of file jul98/dll32/getcrd.c.

char ICMSEG EncodeABCLab2[] = "128 add 255 div "
 

Definition at line 130 of file jul98/dll32/getcrd.c.

char ICMSEG EncodeABCTag[] = "/EncodeABC "
 

Definition at line 25 of file jul98/dll32/getcrd.c.

char ICMSEG EncodeLMNLab[]
 

Initial value:

"\ dup 0.008856 le{7.787 mul 0.13793 add}{0.3333 exp}ifelse "

Definition at line 124 of file jul98/dll32/getcrd.c.

char ICMSEG EncodeLMNTag[] = "/EncodeLMN "
 

Definition at line 28 of file jul98/dll32/getcrd.c.

char ICMSEG EndArray[] = "]"
 

Definition at line 8 of file jul98/dll32/getcrd.c.

char ICMSEG EndClip[] = "}if}if "
 

Definition at line 110 of file jul98/dll32/getcrd.c.

char ICMSEG EndDict[] = ">>"
 

Definition at line 12 of file jul98/dll32/getcrd.c.

char ICMSEG EndFunction[] = "}bind "
 

Definition at line 10 of file jul98/dll32/getcrd.c.

char ICMSEG EndOp[] = "end "
 

Definition at line 52 of file jul98/dll32/getcrd.c.

char ICMSEG EndString[] = ">"
 

Definition at line 6 of file jul98/dll32/getcrd.c.

char ICMSEG FalseOp[] = "false "
 

Definition at line 54 of file jul98/dll32/getcrd.c.

char ICMSEG GlobalDictOp[] = "globaldict "
 

Definition at line 47 of file jul98/dll32/getcrd.c.

char ICMSEG Identity[] = "[1 0 0 0 1 0 0 0 1]"
 

Definition at line 73 of file jul98/dll32/getcrd.c.

char ICMSEG IndexArray[]
 

Initial value:

\ " dup length 1 sub 3 -1 roll mul dup dup floor cvi \ exch ceiling cvi 3 index exch get 4 -1 roll 3 -1 roll get \ dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add "

Definition at line 97 of file jul98/dll32/getcrd.c.

char ICMSEG IndexArray16b[]
 

Initial value:

\ " dup length 1 sub 3 -1 roll mul dup dup floor cvi \ exch ceiling cvi 3 index exch get 32768 add 4 -1 roll 3 -1 roll get 32768 add \ dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add "

Definition at line 92 of file jul98/dll32/getcrd.c.

char ICMSEG InputArray[] = "Inp_"
 

Definition at line 82 of file jul98/dll32/getcrd.c.

char ICMSEG MatrixABCLab[] = "[1 1 1 1 0 0 0 0 -1]"
 

Definition at line 117 of file jul98/dll32/getcrd.c.

char ICMSEG MatrixABCLabCRD[] = "[0 500 0 116 -500 200 0 0 -200]"
 

Definition at line 127 of file jul98/dll32/getcrd.c.

char ICMSEG MatrixABCTag[] = "/MatrixABC "
 

Definition at line 24 of file jul98/dll32/getcrd.c.

char ICMSEG MatrixABCXYZCRD[] = "[0 1 0 1 0 0 0 0 1]"
 

Definition at line 128 of file jul98/dll32/getcrd.c.

char ICMSEG MatrixATag[] = "/MatrixA "
 

Definition at line 23 of file jul98/dll32/getcrd.c.

char ICMSEG MatrixLMNTag[] = "/MatrixLMN "
 

Definition at line 27 of file jul98/dll32/getcrd.c.

char ICMSEG MatrixPQR[] = "[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]"
 

Definition at line 133 of file jul98/dll32/getcrd.c.

char ICMSEG MatrixPQRTag[] = "/MatrixPQR "
 

Definition at line 20 of file jul98/dll32/getcrd.c.

char ICMSEG MulOp[] = "mul "
 

Definition at line 55 of file jul98/dll32/getcrd.c.

char ICMSEG NewLine[] = "\n"
 

Definition at line 58 of file jul98/dll32/getcrd.c.

char ICMSEG NotSupportDEFG_S[] = "SupportDEFG? not { "
 

Definition at line 106 of file jul98/dll32/getcrd.c.

char ICMSEG NullOp[] = ""
 

Definition at line 44 of file jul98/dll32/getcrd.c.

char ICMSEG OutputArray[] = "Out_"
 

Definition at line 83 of file jul98/dll32/getcrd.c.

char ICMSEG PreViewInArray[] = "IPV_"
 

Definition at line 84 of file jul98/dll32/getcrd.c.

char ICMSEG PreViewOutArray[] = "OPV_"
 

Definition at line 85 of file jul98/dll32/getcrd.c.

char ICMSEG RangeABC[] = "[ 0 1 0 1 0 1 ] "
 

Definition at line 71 of file jul98/dll32/getcrd.c.

char ICMSEG RangeABC_Lab[] = "[0 100 -128 127 -128 127]"
 

Definition at line 74 of file jul98/dll32/getcrd.c.

char ICMSEG RangeABCTag[] = "/RangeABC "
 

Definition at line 22 of file jul98/dll32/getcrd.c.

char ICMSEG RangeLMN[] = "[ 0 2 0 2 0 2 ] "
 

Definition at line 72 of file jul98/dll32/getcrd.c.

char ICMSEG RangeLMNLab[] = "[0 1 0 1 0 1]"
 

Definition at line 123 of file jul98/dll32/getcrd.c.

char ICMSEG RangeLMNTag[] = "/RangeLMN "
 

Definition at line 26 of file jul98/dll32/getcrd.c.

char ICMSEG RangePQR[] = "[ -0.07 2.2 -0.02 1.4 -0.2 4.8 ]"
 

Definition at line 132 of file jul98/dll32/getcrd.c.

char ICMSEG RangePQRTag[] = "/RangePQR "
 

Definition at line 18 of file jul98/dll32/getcrd.c.

char ICMSEG RenderTableTag[] = "/RenderTable "
 

Definition at line 29 of file jul98/dll32/getcrd.c.

char ICMSEG Scale16[] = "65535 div "
 

Definition at line 113 of file jul98/dll32/getcrd.c.

char ICMSEG Scale16XYZ[] = "32768 div "
 

Definition at line 114 of file jul98/dll32/getcrd.c.

char ICMSEG Scale8[] = "255 div "
 

Definition at line 112 of file jul98/dll32/getcrd.c.

char ICMSEG SetGlobalOp[] = "setglobal "
 

Definition at line 49 of file jul98/dll32/getcrd.c.

char ICMSEG Slash[] = "/"
 

Definition at line 59 of file jul98/dll32/getcrd.c.

char ICMSEG Space[] = " "
 

Definition at line 60 of file jul98/dll32/getcrd.c.

char ICMSEG StartClip[] = "dup 1.0 le{dup 0.0 ge{"
 

Definition at line 109 of file jul98/dll32/getcrd.c.

char ICMSEG SupportDEFG_E[] = "}if "
 

Definition at line 107 of file jul98/dll32/getcrd.c.

char ICMSEG SupportDEFG_S[] = "SupportDEFG? { "
 

Definition at line 105 of file jul98/dll32/getcrd.c.

char ICMSEG TableTag[] = "/Table "
 

Definition at line 40 of file jul98/dll32/getcrd.c.

char ICMSEG TestingDEFG[]
 

Initial value:

\ "/SupportDEFG? {/CIEBasedDEFG /ColorSpaceFamily resourcestatus { pop pop true}{false} ifelse} def"

Definition at line 102 of file jul98/dll32/getcrd.c.

char ICMSEG TFunction8[] = "exch 255 mul round cvi get 255 div "
 

Definition at line 115 of file jul98/dll32/getcrd.c.

char ICMSEG TFunction8XYZ[] = "exch 255 mul round cvi get 128 div "
 

Definition at line 116 of file jul98/dll32/getcrd.c.

char* TransformPQR[3]
 

Initial value:

{ "exch pop exch 3 get mul exch pop exch 3 get div ", "exch pop exch 4 get mul exch pop exch 4 get div ", "exch pop exch 5 get mul exch pop exch 5 get div " }

Definition at line 135 of file jul98/dll32/getcrd.c.

char ICMSEG TransformPQRTag[] = "/TransformPQR "
 

Definition at line 19 of file jul98/dll32/getcrd.c.

char ICMSEG TrueOp[] = "true "
 

Definition at line 53 of file jul98/dll32/getcrd.c.

char ICMSEG UserDictOp[] = "userdict "
 

Definition at line 46 of file jul98/dll32/getcrd.c.

char ICMSEG WhitePointTag[] = "/WhitePoint "
 

Definition at line 16 of file jul98/dll32/getcrd.c.


Generated on Sat May 15 19:43:52 2004 for test by doxygen 1.3.7