143{
144 newIcc = NULL;
145
148
151
154 }
155
156 if (!pMediaWhitePt)
157 pMediaWhitePt = pWhitePt;
158
159 if (!pMediaWhitePt || pMediaWhitePt->
GetNumValues() < 2) {
161 }
162
164 pIcc->m_Header = *pHeader;
165
166 struct tm* newtime;
167 time_t long_time;
168
169 time(&long_time);
170 newtime = gmtime(&long_time);
171
172 pIcc->m_Header.date.year = newtime->tm_year + 1900;
173 pIcc->m_Header.date.month = newtime->tm_mon + 1;
174 pIcc->m_Header.date.day = newtime->tm_mday;
175 pIcc->m_Header.date.hours = newtime->tm_hour;
176 pIcc->m_Header.date.minutes = newtime->tm_min;
177 pIcc->m_Header.date.seconds = newtime->tm_sec;
178
179 float XYZWhite[3];
181
184 pIcc->m_Header.illuminant.X =
icDtoF(XYZWhite[0]);
185 pIcc->m_Header.illuminant.Y =
icDtoF(XYZWhite[1]);
186 pIcc->m_Header.illuminant.Z =
icDtoF(XYZWhite[2]);
187
188
190 float XYZMedia[3];
193 delete pIcc;
195 }
196
197 (*pXYZ)[0].X =
icDtoF(XYZMedia[0]);
198 (*pXYZ)[0].Y =
icDtoF(XYZMedia[1]);
199 (*pXYZ)[0].Z =
icDtoF(XYZMedia[2]);
201
202
204 if (!pMpeTag) {
205 delete pIcc;
207 }
208
210
214 bool bHaveLumMtx = false;
215 if (pLumMtx) {
217 delete pMpeTag;
218 delete pIcc;
220 }
222 if (!pMtx) {
223 delete pMpeTag;
224 delete pIcc;
226 }
229
233 delete pLumMtx;
234 bHaveLumMtx = true;
235 }
236
238 if (pSegCurve && pSegCurve->
GetCurve()) {
241 if (!pCurves) {
242 delete pMpeTag;
243 delete pIcc;
245 }
251 }
253 if (!pMtx) {
254 delete pMpeTag;
255 delete pIcc;
257 }
258
261 delete pMtx;
262 delete pMpeTag;
263 delete pIcc;
265 }
267
269 if (!pxy || pxy->
GetSize()<2) {
270 delete pMpeTag;
271 delete pIcc;
273 }
274 mtx[0]=(*pxy)[0] * XYZMedia[0];
275 mtx[3]=(*pxy)[1] * XYZMedia[1];
276 mtx[6]=(1.0f - (*pxy)[0] - (*pxy)[1]) * XYZMedia[2];
277
279 if (!pxy || pxy->
GetSize()<2) {
280 delete pMpeTag;
281 delete pIcc;
283 }
284 mtx[1]=(*pxy)[0] * XYZMedia[0];
285 mtx[4]=(*pxy)[1] * XYZMedia[1];
286 mtx[7]=(1.0f - (*pxy)[0] - (*pxy)[1]) * XYZMedia[2];
287
289 if (!pxy || pxy->
GetSize()<2) {
290 delete pMpeTag;
291 delete pIcc;
293 }
294 mtx[2]=(*pxy)[0] * XYZMedia[0];
295 mtx[5]=(*pxy)[1] * XYZMedia[1];
296 mtx[8]=(1.0f - (*pxy)[0] - (*pxy)[1]) * XYZMedia[2];
297
300
302
304 delete pMtx2;
305 delete pIcc;
307 }
308
309
311 if (!pMpeTag) {
312 delete pMtx2;
313 delete pIcc;
315 }
316
318
320
322 if (pSegCurve && pSegCurve->
GetCurve()) {
325 if (!pCurves || !pCurves->
SetSize(3)) {
326 delete pMpeTag;
327 delete pIcc;
329 }
334 }
335
336 if (bHaveLumMtx) {
338 delete pMpeTag;
339 delete pIcc;
341 }
342
344 if (!pMtx) {
345 delete pMpeTag;
346 delete pIcc;
348 }
350 }
352
353
357
358
360 if (!pCond) {
361 delete pIcc;
363 }
364
368
372
375 if (pSurround && pSurround->
GetSize()>=2) {
381 }
382 else {
386 }
387
389
392 if (!pCstmConvert) {
393 delete pIcc;
395 }
399
401
402 if (SWr>0.2) {
406 }
407 else if (SWr>0.0) {
411 }
412 else {
416 }
417
419 if (!pCstmConvert2) {
420 delete pCstmConvert;
421 delete pIcc;
423 }
424 *pCstmConvert2 = *pCstmConvert;
425
426
428 if (!pStdConvert) {
429 delete pCstmConvert;
430 delete pCstmConvert2;
431 delete pIcc;
433 }
435 if (!pStdConvert2) {
436 delete pCstmConvert;
437 delete pCstmConvert2;
438 delete pStdConvert;
439 delete pIcc;
441 }
442
445 if (!pMpeTag) {
446 delete pCstmConvert;
447 delete pStdConvert;
448 delete pCstmConvert2;
449 delete pStdConvert2;
450 delete pIcc;
452 }
454
456 if (!pCam) {
457 delete pCstmConvert;
458 delete pStdConvert;
459 delete pCstmConvert2;
460 delete pStdConvert2;
461 delete pIcc;
463 }
464 pCam->
SetCAM(pCstmConvert);
466
468 if (!pCam) {
469 delete pStdConvert;
470 delete pCstmConvert2;
471 delete pStdConvert2;
472 delete pIcc;
474 }
475 pCam->
SetCAM(pStdConvert);
478
480 if (!pMpeTag) {
481 delete pCstmConvert2;
482 delete pStdConvert2;
483 delete pIcc;
485 }
487
489 if (!pCam) {
490 delete pCstmConvert2;
491 delete pStdConvert2;
492 delete pIcc;
494 }
495 pCam->
SetCAM(pStdConvert2);
497
499 if (!pCam) {
500 delete pCstmConvert2;
501 delete pIcc;
503 }
504 pCam->
SetCAM(pCstmConvert2);
507 }
508
509#if 1 && defined(_DEBUG)
511#endif
512
513 newIcc = pIcc;
515}
@ icSigDisplayClass
Definition icProfileHeader.h:953
@ icSigCeptViewingSurroundMbr
Definition icProfileHeader.h:749
@ icSigCeptLumaChromaMatrixMbr
Definition icProfileHeader.h:742
@ icSigCeptWhitePointLuminanceMbr
Definition icProfileHeader.h:743
@ icSigCeptMediumWhitePointChromaticityMbr
Definition icProfileHeader.h:756
@ icSigCeptRedPrimaryXYZMbr
Definition icProfileHeader.h:739
@ icSigCeptInverseTransferFunctionMbr
Definition icProfileHeader.h:741
@ icSigCeptTransferFunctionMbr
Definition icProfileHeader.h:740
@ icSigCeptAmbientWhitePointChromaticityMbr
Definition icProfileHeader.h:752
@ icSigCeptGreenPrimaryXYZMbr
Definition icProfileHeader.h:738
@ icSigCeptWhitePointChromaticityMbr
Definition icProfileHeader.h:744
@ icSigCeptBluePrimaryXYZMbr
Definition icProfileHeader.h:737
@ icSigCeptAmbientWhitePointLuminanceMbr
Definition icProfileHeader.h:751
#define icSigXYZPcsData
Definition icProfileHeader.h:940
@ icSigCurveSetElemType
Definition icProfileHeader.h:643
@ icSigXYZToJabElemType
Definition icProfileHeader.h:651
@ icSigJabToXYZElemType
Definition icProfileHeader.h:652
@ icSigMatrixElemType
Definition icProfileHeader.h:644
icFloat32Number Z
Definition icProfileHeader.h:1443
@ icSigSegmentedCurveType
Definition icProfileHeader.h:558
@ icSigMultiProcessElementType
Definition icProfileHeader.h:550
@ icSigSpectralViewingConditionsType
Definition icProfileHeader.h:561
@ icSigFloat32ArrayType
Definition icProfileHeader.h:541
@ icSigColorEncodingParamsSruct
Definition icProfileHeader.h:601
icFloat32Number Y
Definition icProfileHeader.h:1442
@ icSigSpectralViewingConditionsTag
Definition icProfileHeader.h:470
@ icSigAToB3Tag
Definition icProfileHeader.h:345
@ icSigCustomToStandardPccTag
Definition icProfileHeader.h:394
@ icSigMediaWhitePointTag
Definition icProfileHeader.h:439
@ icSigBToA3Tag
Definition icProfileHeader.h:377
@ icSigStandardToCustomPccTag
Definition icProfileHeader.h:471
icFloat32Number X
Definition icProfileHeader.h:1441
class ICCPROFLIB_API CIccProfile
Definition IccPcc.h:80
bool SaveIccProfile(const icChar *szFilename, CIccProfile *pIcc, icProfileIDSaveMethod nWriteId)
Definition IccProfile.cpp:3681
float icFloatNumber
Definition IccDefs.h:101
static void icYxy2XYZVector(icFloatNumber *XYZ, icFloatNumber Y, icFloatNumber *xy, icUInt8Number idxOffset=1)
Definition IccEncoding.cpp:135
ICCPROFLIB_API icFloatNumber icD50XYZ[3]
Definition IccUtil.cpp:782
ICCPROFLIB_API icS15Fixed16Number icDtoF(icFloatNumber num)
Definition IccUtil.cpp:545
ICCPROFLIB_API bool icMatrixInvert3x3(icFloatNumber *matrix)
Definition IccUtil.cpp:391
@ icEncConvertBadParams
Definition IccEncoding.h:79
@ icEncConvertOk
Definition IccEncoding.h:75
@ icEncConvertMemoryError
Definition IccEncoding.h:80
CIccTag * FindElemOfType(icSignature sig, icTagTypeSignature sigType)
Definition IccTagComposite.cpp:698
icFloatNumber GetElemNumberValue(icSignature sig, icFloatNumber defaultValue=0)
Definition IccTagComposite.cpp:726
virtual icStructSignature GetTagStructType() const
Definition IccTagComposite.h:168
void SetParameter_Nc(icFloatNumber Nc)
Definition IccCAM.cpp:402
void SetParameter_La(icFloatNumber La)
Definition IccCAM.cpp:375
void SetParameter_F(icFloatNumber F)
Definition IccCAM.cpp:411
void SetParameter_C(icFloatNumber c)
Definition IccCAM.cpp:393
void SetParameter_Yb(icFloatNumber YB)
Definition IccCAM.cpp:384
void SetParameter_WhitePoint(icFloatNumber *whitePoint)
Definition IccCAM.cpp:364
Definition IccMpeBasic.h:249
virtual CIccCurveSetCurve * NewCopy() const
Definition IccMpeBasic.h:254
Definition IccMpeBasic.h:425
bool SetSize(int nNewSize)
Definition IccMpeBasic.cpp:3112
bool SetCurve(int nIndex, icCurveSetCurvePtr newCurve)
Definition IccMpeBasic.cpp:3168
Definition IccMpeBasic.h:600
icFloatNumber * GetMatrix() const
Definition IccMpeBasic.h:618
bool SetSize(icUInt16Number nInputChannels, icUInt16Number nOutputChannels, bool bUseConstants=true)
Definition IccMpeBasic.cpp:4974
virtual CIccMultiProcessElement * NewCopy() const
Definition IccMpeBasic.h:605
Definition IccMpeBasic.h:756
void SetCAM(CIccCamConverter *pCAM)
Definition IccMpeBasic.cpp:6244
static CIccTag * Create(icTagTypeSignature sig)
Definition IccTagBasic.cpp:143
Definition IccTagBasic.h:668
bool SetSize(icUInt32Number nSize, bool bZeroNew=true)
Definition IccTagBasic.cpp:3699
Definition IccTagBasic.h:1058
virtual bool GetValues(icFloatNumber *DstVector, icUInt32Number nStart=0, icUInt32Number nVectorSize=1) const
Definition IccTagBasic.cpp:6528
virtual icUInt32Number GetNumValues() const
Definition IccTagBasic.h:1085
icUInt32Number GetSize() const
Returns the size of the data array.
Definition IccTagBasic.h:1079
Definition IccTagBasic.h:1692
icFloatXYZNumber m_surroundXYZ
Definition IccTagBasic.h:1724
icFloatXYZNumber m_illuminantXYZ
Definition IccTagBasic.h:1723
bool setIlluminant(icIlluminant illumId, const icSpectralRange &illumRange, const icFloatNumber *illum, icFloatNumber illumCCT=0.0f)
Definition IccTagBasic.cpp:11420
Definition IccTagLut.h:221
CIccSegmentedCurve * GetCurve()
Definition IccTagLut.h:239
static CIccMultiProcessElement * Create(icElemTypeSignature sig)
Definition IccTagMPE.cpp:131
Definition IccTagMPE.h:358
virtual void Attach(CIccMultiProcessElement *pElement)
Definition IccTagMPE.cpp:922
void SetChannels(icUInt16Number nInputChannels, icUInt16Number nOutputChannels)
Definition IccTagMPE.h:396