Hoyt's FORK of DemoIccMAX 2.1.17.hoyt
Documentation for Hoyt's FORK of DemoIccMAX
Loading...
Searching...
No Matches
IccPcc.h
Go to the documentation of this file.
1/** @file
2 File: IccPcc.h
3
4 Contains: Header for implementation of the IIccProfileConnectionConditions interface class.
5
6 Version: V1
7
8 Copyright: (c) see ICC Software License
9*/
10
11/*
12 * The ICC Software License, Version 0.2
13 *
14 *
15 * Copyright (c) 2003-2012 The International Color Consortium. All rights
16 * reserved.
17 *
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions
20 * are met:
21 *
22 * 1. Redistributions of source code must retain the above copyright
23 * notice, this list of conditions and the following disclaimer.
24 *
25 * 2. Redistributions in binary form must reproduce the above copyright
26 * notice, this list of conditions and the following disclaimer in
27 * the documentation and/or other materials provided with the
28 * distribution.
29 *
30 * 3. In the absence of prior written permission, the names "ICC" and "The
31 * International Color Consortium" must not be used to imply that the
32 * ICC organization endorses or promotes products derived from this
33 * software.
34 *
35 *
36 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39 * DISCLAIMED. IN NO EVENT SHALL THE INTERNATIONAL COLOR CONSORTIUM OR
40 * ITS CONTRIBUTING MEMBERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47 * SUCH DAMAGE.
48 * ====================================================================
49 *
50 * This software consists of voluntary contributions made by many
51 * individuals on behalf of the The International Color Consortium.
52 *
53 *
54 * Membership in the ICC is encouraged when this software is used for
55 * commercial purposes.
56 *
57 *
58 * For more information on The International Color Consortium, please
59 * see <http://www.color.org/>.
60 *
61 *
62 */
63
64//////////////////////////////////////////////////////////////////////
65// HISTORY:
66//
67// -Initial implementation by Max Derhak 4-10-2012
68//
69//////////////////////////////////////////////////////////////////////
70
71#if !defined(_ICCPCC_H)
72#define _ICCPCC_H
73
74#include "IccDefs.h"
75
76#ifdef USEREFICCMAXNAMESPACE
77namespace refIccMAX {
78#endif
79
80class ICCPROFLIB_API CIccProfile;
84
85/**
86**************************************************************************
87* Type: Class
88*
89* Purpose:
90* Interface for accessing Connection Conditions
91**************************************************************************
92*/
94{
95public:
97
101
102 bool isEquivalentPcc(IIccProfileConnectionConditions &IPCC);
103 bool isStandardPcc();
104 bool hasIlluminantSPD();
105
106 icFloatNumber getObserverIlluminantScaleFactor();
107 icFloatNumber getObserverWhiteScaleFactor(const icFloatNumber *pWhite, const icSpectralRange &whiteRange);
108
109
110 icFloatNumber *getEmissiveObserver(const icSpectralRange &range, const icFloatNumber *pWhite, icFloatNumber *obsMatrix=NULL); //Caller responsible for freeing results if obsMatrix is NULL
111 CIccMatrixMath *getReflectanceObserver(const icSpectralRange &rangeRef); //Caller responsible for deleting results of returned CIccMatrixMath object
112
113 icIlluminant getPccIlluminant();
114 icFloatNumber getPccCCT();
115 icStandardObserver getPccObserver();
116
117 virtual void getNormIlluminantXYZ(icFloatNumber *pXYZ)=0;
118 virtual void getLumIlluminantXYZ(icFloatNumber *pXYZ)=0;
119 virtual bool getMediaWhiteXYZ(icFloatNumber *pXYZ)=0;
120};
121
122
123/**
124**************************************************************************
125* Type: Class
126*
127* Purpose:
128* Class used for defining combined connection conditions where the
129* viewing conditions are the combined result of information from
130* the profile and external connection conditions based on whether
131* reflectance or emission is used.
132**************************************************************************
133*/
135{
136public:
137 CIccCombinedConnectionConditions(CIccProfile *pProfile, IIccProfileConnectionConditions *pAppliedPCC, bool bReflectance=false);
139
140 virtual const CIccTagSpectralViewingConditions *getPccViewingConditions();
141 virtual CIccTagMultiProcessElement *getCustomToStandardPcc();
142 virtual CIccTagMultiProcessElement *getStandardToCustomPcc();
143
144 virtual void getNormIlluminantXYZ(icFloatNumber *pXYZ);
145 virtual void getLumIlluminantXYZ(icFloatNumber *pXYZLum);
146 virtual bool getMediaWhiteXYZ(icFloatNumber *pXYZ);
147
148protected:
150 icFloatNumber m_illuminantXYZ[3];
151 icFloatNumber m_illuminantXYZLum[3];
152 icFloatNumber m_mediaXYZ[3];
156};
157
158
159#ifdef USEREFICCMAXNAMESPACE
160} //namespace refIccMAX
161#endif
162
163#endif // !defined(_ICCPCC_H)
File: IccDefs.h
float icFloatNumber
All floating point operations/variables in IccProfLib use the icFloatNumber data type.
Definition IccDefs.h:100
#define ICCPROFLIB_API
CIccTagSpectralViewingConditions * m_pViewingConditions
Definition IccPcc.h:149
IIccProfileConnectionConditions * m_pPCC
Definition IccPcc.h:153
Type: Class.
Class: CIccTagMultiProcessElement.
Definition IccTagMPE.h:358
Class: CIccTagSpectralViewingConditions.
virtual CIccTagMultiProcessElement * getStandardToCustomPcc()=0
virtual const CIccTagSpectralViewingConditions * getPccViewingConditions()=0
virtual CIccTagMultiProcessElement * getCustomToStandardPcc()=0
virtual void getLumIlluminantXYZ(icFloatNumber *pXYZ)=0
virtual bool getMediaWhiteXYZ(icFloatNumber *pXYZ)=0
virtual void getNormIlluminantXYZ(icFloatNumber *pXYZ)=0
virtual ~IIccProfileConnectionConditions()
Definition IccPcc.h:96
icIlluminant
Pre-defined illuminants, used in measurement and viewing conditions type.
icStandardObserver
Standard Observer, used in the measurmentType tag.
spectral range