Hoyt's FORK of DemoIccMAX 2.1.17.hoyt
Documentation for Hoyt's FORK of DemoIccMAX
Loading...
Searching...
No Matches
IccTagLut.h
Go to the documentation of this file.
1/** @file
2 File: IccTagLut.h
3
4 Contains: Header for implementation of the Multi-Dimensional
5 Lut tag classes classes
6
7 Version: V1
8
9 Copyright: � see ICC Software License
10*/
11
12/*
13 * The ICC Software License, Version 0.2
14 *
15 *
16 * Copyright (c) 2005 The International Color Consortium. All rights
17 * reserved.
18 *
19 * Redistribution and use in source and binary forms, with or without
20 * modification, are permitted provided that the following conditions
21 * are met:
22 *
23 * 1. Redistributions of source code must retain the above copyright
24 * notice, this list of conditions and the following disclaimer.
25 *
26 * 2. Redistributions in binary form must reproduce the above copyright
27 * notice, this list of conditions and the following disclaimer in
28 * the documentation and/or other materials provided with the
29 * distribution.
30 *
31 * 3. In the absence of prior written permission, the names "ICC" and "The
32 * International Color Consortium" must not be used to imply that the
33 * ICC organization endorses or promotes products derived from this
34 * software.
35 *
36 *
37 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40 * DISCLAIMED. IN NO EVENT SHALL THE INTERNATIONAL COLOR CONSORTIUM OR
41 * ITS CONTRIBUTING MEMBERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48 * SUCH DAMAGE.
49 * ====================================================================
50 *
51 * This software consists of voluntary contributions made by many
52 * individuals on behalf of the The International Color Consortium.
53 *
54 *
55 * Membership in the ICC is encouraged when this software is used for
56 * commercial purposes.
57 *
58 *
59 * For more information on The International Color Consortium, please
60 * see <http://www.color.org/>.
61 *
62 *
63 */
64
65//////////////////////////////////////////////////////////////////////
66// HISTORY:
67//
68// -Initial implementation by Max Derhak 5-15-2003
69//
70// -Moved LUT tags to separate file 4-30-2005
71//
72//////////////////////////////////////////////////////////////////////
73
74#if !defined(_ICCTAGLUT_H)
75#define _ICCTAGLUT_H
76
77#ifdef USEREFICCMAXNAMESPACE
78namespace refIccMAX {
79#endif
80
81#include "IccTagBasic.h"
82
83/**
84****************************************************************************
85* Class: CIccCurve
86*
87* Purpose: The base curve class
88*****************************************************************************
89*/
91{
92public:
94 virtual CIccTag *NewCopy() const { return new CIccCurve; }
95 virtual ~CIccCurve() {}
96
97 virtual void DumpLut(std::string &sDescription, const icChar *szName,
98 icColorSpaceSignature csSig, int nIndex, int nVerboseness) {}
99
100 virtual void Begin() {}
101 virtual icFloatNumber Apply(icFloatNumber v) const { return v; }
102
103 icFloatNumber Find(icFloatNumber v) { return Find(v, 0, Apply(0), 1.0, Apply(1.0)); }
104 virtual bool IsIdentity() {return false;}
105
106protected:
110
111};
113
119
120/**
121****************************************************************************
122* Class: CIccTagCurve
123*
124* Purpose: The curveType tag
125*****************************************************************************
126*/
128{
129public:
130 CIccTagCurve(int nSize=0);
131 CIccTagCurve(const CIccTagCurve &ITCurve);
132 CIccTagCurve &operator=(const CIccTagCurve &CurveTag);
133 virtual CIccTag *NewCopy() const { return new CIccTagCurve(*this);}
134 virtual ~CIccTagCurve();
135
136 virtual icTagTypeSignature GetType() const { return icSigCurveType; }
137 virtual const icChar *GetClassName() const { return "CIccTagCurve"; }
138
139 virtual void Describe(std::string &sDescription, int nVerboseness);
140 virtual void DumpLut(std::string &sDescription, const icChar *szName,
141 icColorSpaceSignature csSig, int nIndex, int nVerboseness);
142
143 virtual bool Read(icUInt32Number size, CIccIO *pIO);
144 virtual bool Write(CIccIO *pIO);
145
146 icFloatNumber &operator[](icUInt32Number index) {return m_Curve[index];}
147 icFloatNumber *GetData(icUInt32Number index) {return &m_Curve[index];}
148 icUInt32Number GetSize() const { return m_nSize; }
149 bool SetSize(icUInt32Number nSize, icTagCurveSizeInit nSizeOpt=icInitZero);
150 bool SetGamma(icFloatNumber gamma);
151
152 virtual void Begin() {m_nMaxIndex = (icUInt16Number)m_nSize - 1;}
153 virtual icFloatNumber Apply(icFloatNumber v) const;
154 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
155 virtual bool IsIdentity();
156
157protected:
161};
162
163/**
164****************************************************************************
165* Class: CIccTagParametricCurve
166*
167* Purpose: The parametric curve type tag
168*****************************************************************************
169*/
171{
172public:
175 CIccTagParametricCurve &operator=(const CIccTagParametricCurve &ParamCurveTag);
176 virtual CIccTag *NewCopy() const { return new CIccTagParametricCurve(*this);}
177 virtual ~CIccTagParametricCurve();
178
180 virtual const icChar *GetClassName() const { return "CIccTagParametricCurve"; }
181
182 virtual void Describe(std::string &sDescription, int nVerboseness);
183 virtual void DumpLut(std::string &sDescription, const icChar *szName,
184 icColorSpaceSignature csSig, int nIndex, int nVerboseness);
185
186 virtual bool Read(icUInt32Number size, CIccIO *pIO);
187 virtual bool Write(CIccIO *pIO);
188
189
190 bool SetFunctionType(icUInt16Number nFunctionType); //# parameters set by
191 icUInt16Number GetFunctionType() const {return m_nFunctionType; }
192
193 icUInt16Number GetNumParam() const { return m_nNumParam; }
194 icFloatNumber *GetParams() const { return m_dParam; }
195 icFloatNumber Param(int index) const { return m_dParam[index]; }
196 icFloatNumber& operator[](int index) { return m_dParam[index]; }
197
198 virtual icFloatNumber Apply(icFloatNumber v) const;
199 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
200 virtual bool IsIdentity();
201
203protected:
206
207 //internal representation is icFloatNumber / external is icS15Fixed16Number
209};
210
212
213/**
214****************************************************************************
215* Class: CIccTagSegmentedCurve
216*
217* Purpose: The Segmented curveType tag
218*****************************************************************************
219*/
221{
222public:
225 CIccTagSegmentedCurve &operator=(const CIccTagSegmentedCurve &CurveTag);
226 virtual CIccTag *NewCopy() const { return new CIccTagSegmentedCurve(*this);}
227 virtual ~CIccTagSegmentedCurve();
228
230 virtual const icChar *GetClassName() const { return "CIccTagSegmentedCurve"; }
231
232 virtual void Describe(std::string &sDescription, int nVerboseness);
233 virtual void DumpLut(std::string &sDescription, const icChar *szName,
234 icColorSpaceSignature csSig, int nIndex, int nVerboseness);
235
236 virtual bool Read(icUInt32Number size, CIccIO *pIO);
237 virtual bool Write(CIccIO *pIO);
238
239 CIccSegmentedCurve *GetCurve() { return m_pCurve; }
240 void SetCurve(CIccSegmentedCurve *pCurve);
241
242 virtual void Begin();
243 virtual icFloatNumber Apply(icFloatNumber v) const;
244 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
245 virtual bool IsIdentity();
246
247protected:
249};
250
251
252/**
253****************************************************************************
254* Class: CIccMatrix
255*
256* Purpose: The base matrix class
257*****************************************************************************
258*/
260{
261public:
262 CIccMatrix(bool bUseConstants=true);
263 CIccMatrix(const CIccMatrix &MatrixClass);
264 CIccMatrix &operator=(const CIccMatrix &MatrixClass);
265 virtual ~CIccMatrix() {}
266
267 void DumpLut(std::string &sDescription, const icChar *szName, int nVerboseness);
268
269 icFloatNumber m_e[12]; //e = element
271
272 virtual void Apply(icFloatNumber *Pixel) const;
273 icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
274 virtual bool IsIdentity();
275};
276
277/**
278****************************************************************************
279* Interface Class: IIccCLUTExec
280*
281* Purpose: Interface class that is useful to populate CLUTs
282*****************************************************************************
283*/
285{
286public:
287 virtual ~IIccCLUTExec() {}
288
289 virtual void PixelOp(icFloatNumber* pGridAdr, icFloatNumber* pData)=0;
290};
291
293
294/**
295****************************************************************************
296* Class: CIccApplyCLUT
297*
298* Purpose: Apply storage for CLUT ND interpolation
299*****************************************************************************
300*/
302{
303 friend class CIccCLUT;
304public:
306 virtual ~CIccApplyCLUT();
307
308 bool Init(icUInt8Number nSrcChannels, icUInt32Number nNodes);
309
310protected:
312 // Temporary ND Interp Variables
313 icFloatNumber* m_g, * m_s, * m_df;
315};
316
317
318/**
319****************************************************************************
320* Class: CIccCLUT
321*
322* Purpose: The base multidimensional color look-up table (CLUT) class
323*****************************************************************************
324*/
326{
327public:
328 CIccCLUT(icUInt8Number nInputChannels, icUInt16Number nOutputChannels, icUInt8Number nPrecision=2);
329 CIccCLUT(const CIccCLUT &ICLUT);
330 CIccCLUT &operator=(const CIccCLUT &CLUTClass);
331 virtual ~CIccCLUT();
332
333 bool Init(icUInt8Number nGridPoints, icUInt32Number nMaxSize = 0, icUInt8Number nBytesPerPoint = 4);
334 bool Init(const icUInt8Number *pGridPoints, icUInt32Number nMaxSize=0, icUInt8Number nBytesPerPoint=4);
335
336 bool ReadData(icUInt32Number size, CIccIO *pIO, icUInt8Number nPrecision);
337 bool WriteData(CIccIO *pIO, icUInt8Number nPrecision);
338
339 bool Read(icUInt32Number size, CIccIO *pIO);
340 bool Write(CIccIO *pIO);
341
342 void DumpLut(std::string &sDescription, const icChar *szName,
344 int nVerboseness, bool bUseLegacy=false);
345
346 icFloatNumber& operator[](int index) { return m_pData[index]; }
347 icFloatNumber* GetData(int index) { return &m_pData[index]; }
348 icUInt32Number NumPoints() const { return m_nNumPoints; }
349 icUInt8Number GridPoints() const { return m_GridPoints[0]; }
350 icUInt8Number GridPoint(int index) const { return m_GridPoints[index]; }
351 const icUInt8Number* GridPointArray() const {return &m_GridPoints[0]; }
352 icUInt32Number MaxGridPoint(int index) const { return m_MaxGridPoint[index]; }
353
354 icUInt32Number GetDimSize(icUInt8Number nIndex) const { return m_DimSize[nIndex]; }
355
356 icUInt8Number GetInputDim() const { return m_nInput; }
357 icUInt16Number GetOutputChannels() const { return m_nOutput; }
358
359 icUInt32Number GetNumOffset() const { return m_nNodes; }
360 icUInt32Number GetOffset(int index) const { return m_nOffset ? m_nOffset[index] : 0; }
361
362
363 void Begin();
364
365 CIccApplyCLUT* GetNewApply();
366
367 void Interp1d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const;
368 void Interp2d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const;
369 void Interp3dTetra(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const;
370 void Interp3d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const;
371 void Interp4d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const;
372 void Interp5d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const;
373 void Interp6d(icFloatNumber *destPixel, const icFloatNumber *srcPixel) const;
374 void InterpND(icFloatNumber *destPixel, const icFloatNumber *srcPixel, CIccApplyCLUT *pApply) const;
375
376 void Iterate(IIccCLUTExec* pExec);
377 icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL) const;
378
379 void SetClipFunc(icCLUTCLIPFUNC ClipFunc) { UnitClip = ClipFunc; }
380
381 icUInt8Number GetPrecision() { return m_nPrecision; }
382 void SetPrecision(icUInt8Number nPrecision) { m_nPrecision = nPrecision; }
383
384protected:
385 void Iterate(std::string &sDescription, icUInt8Number nIndex, icUInt32Number nPos, bool bUseLegacy=false);
386 void SubIterate(IIccCLUTExec* pExec, icUInt8Number nIndex, icUInt32Number nPos);
387
389
390 icUInt8Number m_nReserved2[3];
391
393 icUInt16Number m_nOutput; //16 bit to support MPE CLUT elements
395
396 icUInt8Number m_GridPoints[16];
398
399 icUInt32Number m_DimSize[16];
401
402 //Iteration temporary variables
403 icUInt8Number m_GridAdr[16];
404 icFloatNumber m_fGridAdr[16];
407
408 //Tetrahedral interpolation variables
409 icUInt8Number m_MaxGridPoint[16];
410 icUInt32Number n000, n001, n010, n011, n100, n101, n110, n111, n1000, n10000, n100000;
411
412 //ND Interpolation
415};
416
417
418
419/**
420****************************************************************************
421* Class: CIccMBB
422*
423* Purpose: The Multi-dimensional Black Box (MBB) base class for lut8, lut16,
424* lutA2B and lutB2A tag types
425*****************************************************************************
426*/
428{
429 friend class ICCPROFLIB_API CIccXform3DLut;
430 friend class ICCPROFLIB_API CIccXform4DLut;
431 friend class ICCPROFLIB_API CIccXformNDLut;
432public:
433 CIccMBB();
434 CIccMBB(const CIccMBB &IMBB);
435 CIccMBB &operator=(const CIccMBB &IMBB);
436 virtual CIccTag* NewCopy() const {return new CIccMBB(*this);}
437 virtual ~CIccMBB();
438
439 virtual bool IsMBBType() { return true;}
440
441 virtual icUInt8Number GetPrecision() { return 2; }
442 virtual bool IsInputMatrix() { return m_bInputMatrix; } //Is matrix on input side of CLUT?
443 virtual bool UseLegacyPCS() const { return false; } //Treat Lab Encoding differently?
444
445 bool IsInputB() { return IsInputMatrix(); }
446 bool SwapMBCurves() { return m_bUseMCurvesAsBCurves; }
447
448 void Cleanup();
449 void Init(icUInt8Number nInputChannels, icUInt8Number nOutputChannels);
450
451 icUInt8Number InputChannels() const { return m_nInput; }
452 icUInt8Number OutputChannels() const { return m_nOutput; }
453
454 virtual void Describe(std::string &sDescription, int nVerboseness);
455
456 virtual void SetColorSpaces(icColorSpaceSignature csInput, icColorSpaceSignature csOutput);
457 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL);
458 icColorSpaceSignature GetCsInput() { return m_csInput; }
459 icColorSpaceSignature GetCsOutput() { return m_csOutput; }
460
461 LPIccCurve* NewCurvesA();
462 CIccCLUT* NewCLUT(icUInt8Number nGridPoints, icUInt8Number nPrecision=2);
463 CIccCLUT* NewCLUT(icUInt8Number *pGridPoints, icUInt8Number nPrecision=2);
464 CIccMatrix* NewMatrix();
465 LPIccCurve* NewCurvesM();
466 LPIccCurve* NewCurvesB();
467
468 CIccMatrix *GetMatrix() const {return m_Matrix; }
469 CIccCLUT *GetCLUT() const {return m_CLUT;}
470 LPIccCurve *GetCurvesA() const {return m_CurvesA;}
471 LPIccCurve *GetCurvesB() const {return m_CurvesB;}
472 LPIccCurve *GetCurvesM() const {return m_CurvesM;}
473
474 CIccCLUT *SetCLUT(CIccCLUT *clut);
475
476protected:
479
482
485
491
492};
493
494/**
495****************************************************************************
496* Class: CIccTagLutAtoB
497*
498* Purpose: The LutA2B tag type
499*****************************************************************************
500*/
502{
503public:
505 CIccTagLutAtoB(const CIccTagLutAtoB &ITLA2B);
506 CIccTagLutAtoB &operator=(const CIccTagLutAtoB &ITLA2B);
507 virtual CIccTag* NewCopy() const { return new CIccTagLutAtoB(*this); }
508 virtual ~CIccTagLutAtoB();
509
510 virtual icTagTypeSignature GetType() const { return icSigLutAtoBType; }
511
512 bool Read(icUInt32Number size, CIccIO *pIO);
513 bool Write(CIccIO *pIO);
514 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL);
515
516protected:
518};
519
520/**
521****************************************************************************
522* Class: CIccTagLutBtoA
523*
524* Purpose: The LutB2A tag type
525*****************************************************************************
526*/
528{
529public:
531 CIccTagLutBtoA(const CIccTagLutBtoA &ITLB2A);
532 CIccTagLutBtoA &operator=(const CIccTagLutBtoA &ITLB2A);
533 virtual CIccTag* NewCopy() const { return new CIccTagLutBtoA(*this); }
534
535 virtual icTagTypeSignature GetType() const { return icSigLutBtoAType; }
536 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL);
537};
538
539
540/**
541****************************************************************************
542* Class: CIccTagLut8
543*
544* Purpose: The Lut8 tag type
545*****************************************************************************
546*/
548{
549public:
550 CIccTagLut8();
551 CIccTagLut8(const CIccTagLut8 &ITL);
552 CIccTagLut8 &operator=(const CIccTagLut8 &ITL);
553 virtual CIccTag* NewCopy() const {return new CIccTagLut8(*this);}
554 virtual ~CIccTagLut8();
555
556 virtual icTagTypeSignature GetType() const { return icSigLut8Type; }
557 virtual icUInt8Number GetPrecision() { return 1; }
558
559 bool Read(icUInt32Number size, CIccIO *pIO);
560 bool Write(CIccIO *pIO);
561
562 virtual void SetColorSpaces(icColorSpaceSignature csInput, icColorSpaceSignature csOutput);
563 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL);
564
565protected:
567 icS15Fixed16Number m_XYZMatrix[9];
568};
569
570/**
571****************************************************************************
572* Class: CIccTagLut16
573*
574* Purpose: The Lut16 tag type
575*****************************************************************************
576*/
578{
579public:
580 CIccTagLut16();
581 CIccTagLut16(const CIccTagLut16 &ITL);
582 CIccTagLut16 &operator=(const CIccTagLut16 &ITL);
583 virtual CIccTag* NewCopy() const {return new CIccTagLut16(*this);}
584 virtual ~CIccTagLut16();
585
586 virtual icTagTypeSignature GetType() const { return icSigLut16Type; }
587 virtual bool UseLegacyPCS() const { return true; } //Treat Lab Encoding differently?
588
589 bool Read(icUInt32Number size, CIccIO *pIO);
590 bool Write(CIccIO *pIO);
591
592 virtual void SetColorSpaces(icColorSpaceSignature csInput, icColorSpaceSignature csOutput);
593 virtual icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile=NULL);
594
595protected:
597 icS15Fixed16Number m_XYZMatrix[9];
598};
599
600typedef struct {
601 icUInt32Number m_VertexNumbers[3];
603
604/**
605****************************************************************************
606* Class: CIccTagGamutBoundaryDesc
607*
608* Purpose: The Gamut Boundary Description tag type
609*****************************************************************************
610*/
612{
613public:
615 CIccTagGamutBoundaryDesc(icUInt8Number nInputChannels,icInt32Number numberOfVertices, icInt32Number numberOfTriangles, icUInt8Number nOutputChannels = 0);
616 CIccTagGamutBoundaryDesc(const CIccTagGamutBoundaryDesc &InGamutBoundaryTag);
617 CIccTagGamutBoundaryDesc &operator=(const CIccTagGamutBoundaryDesc& InGamutBoundaryTag);
618 virtual CIccTag* NewCopy() const {return new CIccTagGamutBoundaryDesc(*this);}
619 virtual ~CIccTagGamutBoundaryDesc();
620
622 virtual const icChar *GetClassName() const { return "icSigTagGamutBoundaryDesc"; }
623
624 virtual bool Read(icUInt32Number size, CIccIO *pIO);
625 virtual bool Write(CIccIO *pIO);
626 virtual void Describe(std::string &sDescription, int nVerboseness);
627
628 bool setVertex(icInt32Number vertexNumber,icFloatNumber* pcsCoords,icFloatNumber* deviceCoords = NULL);
629 icFloatNumber* getVertexPCSCoord(icInt32Number vertexNumber);
630 icFloatNumber* getVertexDeviceCoord(icInt32Number vertexNumber);
631
632 bool setTriangle(icInt32Number triangleNumber,icGamutBoundaryTriangle& triangle);
633 bool getTriangle(icInt32Number triangleNumber,icGamutBoundaryTriangle& triangle);
634
635 icValidateStatus Validate(std::string sigPath, std::string &sReport, const CIccProfile* pProfile/*=NULL*/) const;
636
638 {
639 return m_NumberOfVertices;
640 }
641
643 {
644 return m_NumberOfTriangles;
645 }
646
648 {
649 return m_nPCSChannels;
650 }
651
653 {
654 return m_nDeviceChannels;
655 }
656
657protected:
665};
666
667
668
669#ifdef USEREFICCMAXNAMESPACE
670} //namespace refIccMAX
671#endif
672
673#endif // !defined(_ICCTAG_H)
float icFloatNumber
All floating point operations/variables in IccProfLib use the icFloatNumber data type.
Definition IccDefs.h:100
char icChar
Definition IccDefs.h:109
icValidateStatus
Definition IccDefs.h:118
#define ICCPROFLIB_API
File: IccTagBasic.h.
const icChar * szName
CIccCurve * LPIccCurve
Definition IccTagLut.h:112
icFloatNumber(* icCLUTCLIPFUNC)(icFloatNumber v)
Definition IccTagLut.h:292
icTagCurveSizeInit
Definition IccTagLut.h:114
@ icInitZero
Definition IccTagLut.h:116
@ icInitIdentity
Definition IccTagLut.h:117
@ icInitNone
Definition IccTagLut.h:115
icTagTypeSignature
unsigned int icUInt32Number
Class: CIccApplyCLUT.
Definition IccTagLut.h:302
icFloatNumber * m_df
Definition IccTagLut.h:313
icUInt16Number m_nSrcSamples
Definition IccTagLut.h:311
icUInt32Number * m_ig
Definition IccTagLut.h:314
Class: CIccCLUT.
Definition IccTagLut.h:326
icCLUTCLIPFUNC UnitClip
Definition IccTagLut.h:388
icUInt8Number GetInputDim() const
Definition IccTagLut.h:356
icUInt16Number GetOutputChannels() const
Definition IccTagLut.h:357
void SetClipFunc(icCLUTCLIPFUNC ClipFunc)
Definition IccTagLut.h:379
icUInt32Number GetDimSize(icUInt8Number nIndex) const
Definition IccTagLut.h:354
icUInt32Number GetOffset(int index) const
Definition IccTagLut.h:360
icUInt8Number m_nInput
Definition IccTagLut.h:392
icUInt32Number m_nNodes
Definition IccTagLut.h:414
icUInt8Number m_nPrecision
Definition IccTagLut.h:394
icFloatNumber & operator[](int index)
Definition IccTagLut.h:346
icChar * m_pOutText
Definition IccTagLut.h:405
icUInt32Number NumPoints() const
Definition IccTagLut.h:348
icUInt16Number m_nOutput
Definition IccTagLut.h:393
icUInt8Number GridPoint(int index) const
Definition IccTagLut.h:350
void SetPrecision(icUInt8Number nPrecision)
Definition IccTagLut.h:382
icFloatNumber * GetData(int index)
Definition IccTagLut.h:347
icUInt32Number GetNumOffset() const
Definition IccTagLut.h:359
icUInt32Number n000
Definition IccTagLut.h:410
icUInt32Number m_nNumPoints
Definition IccTagLut.h:397
const icUInt8Number * GridPointArray() const
Definition IccTagLut.h:351
icUInt32Number * m_nOffset
Definition IccTagLut.h:413
icUInt8Number GridPoints() const
Definition IccTagLut.h:349
icUInt32Number MaxGridPoint(int index) const
Definition IccTagLut.h:352
icColorSpaceSignature m_csInput
Definition IccTagLut.h:406
icUInt8Number GetPrecision()
Definition IccTagLut.h:381
icFloatNumber * m_pData
Definition IccTagLut.h:400
Class: CIccCurve.
Definition IccTagLut.h:91
virtual ~CIccCurve()
Definition IccTagLut.h:95
virtual icFloatNumber Apply(icFloatNumber v) const
Definition IccTagLut.h:101
virtual void DumpLut(std::string &sDescription, const icChar *szName, icColorSpaceSignature csSig, int nIndex, int nVerboseness)
Definition IccTagLut.h:97
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Definition IccTagLut.h:94
virtual void Begin()
Definition IccTagLut.h:100
icFloatNumber Find(icFloatNumber v)
Definition IccTagLut.h:103
virtual bool IsIdentity()
Definition IccTagLut.h:104
Type: Class.
Definition IccIO.h:97
Class: CIccMBB.
Definition IccTagLut.h:428
bool m_bInputMatrix
Definition IccTagLut.h:477
bool IsInputB()
Definition IccTagLut.h:445
LPIccCurve * m_CurvesB
Definition IccTagLut.h:490
LPIccCurve * GetCurvesM() const
Definition IccTagLut.h:472
virtual bool IsInputMatrix()
Definition IccTagLut.h:442
icUInt8Number InputChannels() const
Definition IccTagLut.h:451
CIccCLUT * m_CLUT
Definition IccTagLut.h:487
LPIccCurve * m_CurvesM
Definition IccTagLut.h:489
icUInt8Number OutputChannels() const
Definition IccTagLut.h:452
virtual icUInt8Number GetPrecision()
Definition IccTagLut.h:441
LPIccCurve * GetCurvesB() const
Definition IccTagLut.h:471
bool SwapMBCurves()
Definition IccTagLut.h:446
icUInt8Number m_nOutput
Definition IccTagLut.h:481
icColorSpaceSignature GetCsOutput()
Definition IccTagLut.h:459
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Definition IccTagLut.h:436
LPIccCurve * m_CurvesA
Definition IccTagLut.h:486
virtual bool UseLegacyPCS() const
Definition IccTagLut.h:443
icUInt8Number m_nInput
Definition IccTagLut.h:480
icColorSpaceSignature m_csOutput
Definition IccTagLut.h:484
icColorSpaceSignature GetCsInput()
Definition IccTagLut.h:458
bool m_bUseMCurvesAsBCurves
Definition IccTagLut.h:478
CIccCLUT * GetCLUT() const
Definition IccTagLut.h:469
CIccMatrix * GetMatrix() const
Definition IccTagLut.h:468
LPIccCurve * GetCurvesA() const
Definition IccTagLut.h:470
icColorSpaceSignature m_csInput
Definition IccTagLut.h:483
virtual bool IsMBBType()
Definition IccTagLut.h:439
CIccMatrix * m_Matrix
Definition IccTagLut.h:488
Class: CIccMatrix.
Definition IccTagLut.h:260
virtual ~CIccMatrix()
Definition IccTagLut.h:265
bool m_bUseConstants
Definition IccTagLut.h:270
Class: CIccSegmentedCurve.
Class: CIccTagCurve.
Definition IccTagLut.h:128
icUInt32Number m_nSize
Definition IccTagLut.h:159
icUInt16Number m_nMaxIndex
Definition IccTagLut.h:160
icFloatNumber & operator[](icUInt32Number index)
Definition IccTagLut.h:146
virtual const icChar * GetClassName() const
Definition IccTagLut.h:137
icFloatNumber * m_Curve
Definition IccTagLut.h:158
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Definition IccTagLut.h:133
virtual icTagTypeSignature GetType() const
Function: GetType()
Definition IccTagLut.h:136
icUInt32Number GetSize() const
Definition IccTagLut.h:148
virtual void Begin()
Definition IccTagLut.h:152
icFloatNumber * GetData(icUInt32Number index)
Definition IccTagLut.h:147
Class: CIccTagGamutBoundaryDesc.
Definition IccTagLut.h:612
icInt32Number getNumberOfTriangles()
Definition IccTagLut.h:642
icGamutBoundaryTriangle * m_Triangles
Definition IccTagLut.h:664
icInt32Number m_NumberOfTriangles
Definition IccTagLut.h:659
icInt16Number m_nPCSChannels
Definition IccTagLut.h:660
icFloatNumber * m_DeviceValues
Definition IccTagLut.h:663
icFloatNumber * m_PCSValues
Definition IccTagLut.h:662
icInt16Number m_nDeviceChannels
Definition IccTagLut.h:661
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Definition IccTagLut.h:618
virtual const icChar * GetClassName() const
Definition IccTagLut.h:622
icInt32Number m_NumberOfVertices
Definition IccTagLut.h:658
icInt32Number getNumberOfVertices()
Definition IccTagLut.h:637
virtual icTagTypeSignature GetType() const
Function: GetType()
Definition IccTagLut.h:621
icInt16Number getNumDeviceChannels()
Definition IccTagLut.h:652
icInt16Number getNumPCSChannels()
Definition IccTagLut.h:647
Class: CIccTag.
Class: CIccTagLut16.
Definition IccTagLut.h:578
icUInt8Number m_nReservedByte
Definition IccTagLut.h:596
virtual bool UseLegacyPCS() const
Definition IccTagLut.h:587
virtual icTagTypeSignature GetType() const
Function: GetType()
Definition IccTagLut.h:586
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Definition IccTagLut.h:583
Class: CIccTagLut8.
Definition IccTagLut.h:548
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Definition IccTagLut.h:553
virtual icTagTypeSignature GetType() const
Function: GetType()
Definition IccTagLut.h:556
icUInt8Number m_nReservedByte
Definition IccTagLut.h:566
virtual icUInt8Number GetPrecision()
Definition IccTagLut.h:557
Class: CIccTagLutAtoB.
Definition IccTagLut.h:502
virtual icTagTypeSignature GetType() const
Function: GetType()
Definition IccTagLut.h:510
icUInt16Number m_nReservedWord
Definition IccTagLut.h:517
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Definition IccTagLut.h:507
Class: CIccTagLutBtoA.
Definition IccTagLut.h:528
virtual icTagTypeSignature GetType() const
Function: GetType()
Definition IccTagLut.h:535
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Definition IccTagLut.h:533
Class: CIccTagParametricCurve.
Definition IccTagLut.h:171
icUInt16Number m_nFunctionType
Definition IccTagLut.h:204
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Definition IccTagLut.h:176
icFloatNumber * m_dParam
Definition IccTagLut.h:208
virtual const icChar * GetClassName() const
Definition IccTagLut.h:180
virtual icTagTypeSignature GetType() const
Function: GetType()
Definition IccTagLut.h:179
icUInt16Number m_nReserved2
Definition IccTagLut.h:202
icFloatNumber * GetParams() const
Definition IccTagLut.h:194
icUInt16Number m_nNumParam
Definition IccTagLut.h:205
icUInt16Number GetFunctionType() const
Definition IccTagLut.h:191
icFloatNumber Param(int index) const
Definition IccTagLut.h:195
icFloatNumber & operator[](int index)
Definition IccTagLut.h:196
icUInt16Number GetNumParam() const
Definition IccTagLut.h:193
Class: CIccTagSegmentedCurve.
Definition IccTagLut.h:221
virtual icTagTypeSignature GetType() const
Function: GetType()
Definition IccTagLut.h:229
virtual const icChar * GetClassName() const
Definition IccTagLut.h:230
virtual CIccTag * NewCopy() const
Function: NewCopy(sDescription) Each derived tag will implement it's own NewCopy() function.
Definition IccTagLut.h:226
CIccSegmentedCurve * GetCurve()
Definition IccTagLut.h:239
CIccSegmentedCurve * m_pCurve
Definition IccTagLut.h:248
Interface Class: IIccCLUTExec.
Definition IccTagLut.h:285
virtual void PixelOp(icFloatNumber *pGridAdr, icFloatNumber *pData)=0
virtual ~IIccCLUTExec()
Definition IccTagLut.h:287
unsigned char icUInt8Number
Number definitions.
unsigned short icUInt16Number
long icInt32Number
short icInt16Number
icColorSpaceSignature
Color Space Signatures.
@ icSigSegmentedCurveType
@ icSigParametricCurveType
@ icSigLut8Type
@ icSigLutBtoAType
@ icSigCurveType
@ icSigLut16Type
@ icSigLutAtoBType
@ icSigGamutBoundaryDescType
icInt32Number icS15Fixed16Number
Fixed numbers.
static icFloatNumber UnitClip(icFloatNumber v)