ACF $AcfVersion:0$
Public Member Functions | Protected Member Functions | List of all members
icmm::ITristimulusSpecification Class Referenceabstract

Interface for tristimulus-based color specifications. More...

#include <ITristimulusSpecification.h>

Inheritance diagram for icmm::ITristimulusSpecification:
icmm::IColorSpecification iser::IObject iser::ISerializable istd::IChangeable istd::IPolymorphic icmm::CTristimulusSpecification

Public Member Functions

virtual std::shared_ptr< IIlluminantGetIlluminant () const =0
 Gets the illuminant (light source) used by this specification.
 
virtual ObserverType GetObserverType () const =0
 Gets the standard observer type used for color calculations.
 
virtual AstmTableType GetMethod () const =0
 Gets the ASTM table type used for spectral calculations.
 
virtual std::shared_ptr< ISpectralColorSpecificationGetBaseSpecification () const =0
 Gets the base spectral specification, if one exists.
 
- Public Member Functions inherited from icmm::IColorSpecification
 I_DECLARE_ENUM (SpecType, Tristimulus, Spectral)
 
- Public Member Functions inherited from iser::IObject
virtual QByteArray GetFactoryId () const
 
- Public Member Functions inherited from iser::ISerializable
virtual bool Serialize (IArchive &archive)=0
 Load or store state of this object as a archive stream.
 
virtual quint32 GetMinimalVersion (int versionId) const
 Get minimal needed version to correct storing of this data.
 
- Public Member Functions inherited from istd::IChangeable
virtual int GetSupportedOperations () const
 Get set of flags for supported operations.
 
virtual bool CopyFrom (const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS)
 Copy this object from another one.
 
virtual bool IsEqual (const IChangeable &object) const
 Compare this object with another object.
 
virtual istd::TUniqueInterfacePtr< istd::IChangeableCloneMe (CompatibilityMode mode=CM_WITHOUT_REFS) const
 Make a copy of this object.
 
virtual bool ResetData (CompatibilityMode mode=CM_WITHOUT_REFS)
 Reset data to its default state.
 
virtual void BeginChanges (const ChangeSet &changeSet)
 Starts the change transaction.
 
virtual void EndChanges (const ChangeSet &changeSet)
 Ends the change transaction.
 
virtual void BeginChangeGroup (const ChangeSet &changeSet)
 Starts group of changes.
 
virtual void EndChangeGroup (const ChangeSet &changeSet)
 Ends group of changes.
 
- Public Member Functions inherited from istd::IPolymorphic
virtual ~IPolymorphic ()
 

Protected Member Functions

virtual SpecType GetSpecificationType () const final
 Gets the logical type of the specification.
 
- Protected Member Functions inherited from istd::IChangeable
virtual void OnBeginChanges ()
 Callback function for begin change event.
 
virtual void OnEndChanges (const ChangeSet &changeSet)
 Callback function for end change event.
 

Additional Inherited Members

- Public Types inherited from icmm::IColorSpecification
enum  SpecType { Tristimulus , Spectral }
 
typedef std::shared_ptr< const IColorSpecificationConstColorSpecPtr
 
typedef std::shared_ptr< IColorSpecificationColorSpecPtr
 
- Public Types inherited from istd::IChangeable
enum  ChangeFlags {
  CF_ACF_INTERNAL = 0 , CF_ALL_DATA , CF_ANY , CF_DESTROYING ,
  CF_DELEGATED , CF_NO_UNDO
}
 Data model change notification flags. More...
 
enum  SupportedOperations {
  SO_NONE = 0 , SO_OBSERVE = 1 << 0 , SO_COPY = 1 << 1 , SO_CLONE = 1 << 2 ,
  SO_COMPARE = 1 << 3 , SO_RESET = 1 << 4
}
 Flags for supported operations. More...
 
enum  CompatibilityMode { CM_STRICT , CM_WITHOUT_REFS , CM_WITH_REFS , CM_CONVERT }
 Control how relationship betweeen objects are interpreted. More...
 
typedef QMultiMap< QByteArray, QVariant > ChangeInfoMap
 
- Static Public Member Functions inherited from istd::IChangeable
static const ChangeSetGetNoChanges ()
 Get empty set of changes.
 
static const ChangeSetGetAnyChange ()
 Get anonymous change set.
 
static const ChangeSetGetAllChanges ()
 Get anonymous change set.
 
static const ChangeSetGetDelegatedChanges ()
 Get delegated change set.
 

Detailed Description

Interface for tristimulus-based color specifications.

Purpose

ITristimulusSpecification extends IColorSpecification for color spaces based on tristimulus values (three-component color representation like XYZ or RGB). It provides access to the illuminant (light source), observer type (standard observer), and calculation method used for color conversions.

Tristimulus Values Concept

Tristimulus values are based on the trichromatic theory of human color vision:

Components

Illuminant:**

Usage Examples

// Example 1: Accessing tristimulus specification
void InspectTristimulusSpec(const icmm::ITristimulusSpecification* spec)
{
// Get illuminant
std::shared_ptr<icmm::IIlluminant> illuminant = spec->GetIlluminant();
if (illuminant) {
QString name = illuminant->GetIlluminantName(); // "D65", "D50", etc.
icmm::CVarColor whitePoint = illuminant->GetWhitePoint();
qDebug() << "Illuminant:" << name;
}
// Get observer type
icmm::ObserverType observer = spec->GetObserverType();
// observer == OT_CIE_1931_2_DEGREE or OT_CIE_1964_10_DEGREE
// Get calculation method
icmm::AstmTableType method = spec->GetMethod();
}
// Example 2: Creating sRGB specification
icmm::TristimulusPtr CreateSRgbSpec()
{
// sRGB uses:
// - D65 illuminant
// - 2 degrees standard observer
// - Rec. 709 primaries
// Implementation would create appropriate specification
// icmm::CTristimulusSpecification* spec = new ...
// spec->SetIlluminant(d65);
// spec->SetObserverType(OT_CIE_1931_2_DEGREE);
// return TristimulusPtr(spec);
return nullptr; // Simplified
}
// Example 3: Comparing specifications
bool SpecificationsMatch(const icmm::ITristimulusSpecification* spec1,
{
if (!spec1 || !spec2) return false;
// Compare illuminants
auto illum1 = spec1->GetIlluminant();
auto illum2 = spec2->GetIlluminant();
if (illum1 && illum2) {
if (illum1->GetIlluminantType() != illum2->GetIlluminantType()) {
return false;
}
}
// Compare observer types
if (spec1->GetObserverType() != spec2->GetObserverType()) {
return false;
}
return true;
}
// Example 4: Converting spectral to tristimulus
void ConvertSpectralToXyz(const icmm::ITristimulusSpecification* spec)
{
// Get base spectral specification if available
auto spectralSpec = spec->GetBaseSpecification();
if (spectralSpec) {
// Has underlying spectral data
// Can use for high-accuracy conversions
qDebug() << "Has spectral base - high accuracy";
} else {
// Direct tristimulus specification
qDebug() << "Direct tristimulus - standard accuracy";
}
}
// Example 5: Working with RGB color models
void SetupRgbModel(const icmm::ITristimulusSpecification* spec)
{
// RGB models use tristimulus specifications
icmm::CRgbColorModel rgbModel(*spec);
// The model now uses the specified:
// - Illuminant (white point)
// - Observer (color matching functions)
// - Method (calculation precision)
// Enables accurate color conversions
rgbModel.GetSpecification();
}
// Example 6: Checking specification type
void ProcessColorSpec(const icmm::IColorSpecification* spec)
{
if (spec->GetSpecificationType() ==
{
// Cast to tristimulus specification
const icmm::ITristimulusSpecification* tristimSpec =
dynamic_cast<const icmm::ITristimulusSpecification*>(spec);
if (tristimSpec) {
// Access tristimulus-specific properties
auto illuminant = tristimSpec->GetIlluminant();
auto observer = tristimSpec->GetObserverType();
}
}
}
Concrete RGB color model implementation.
Generic color implementation with variable number of color components.
Definition CVarColor.h:176
Interface for color space specification information.
@ Tristimulus
Tristimulus-based specification (e.g., RGB with primaries and white point).
virtual SpecType GetSpecificationType() const =0
Gets the logical type of the specification.
std::shared_ptr< const IColorSpecification > ConstColorSpecPtr
Interface for tristimulus-based color specifications.
virtual ObserverType GetObserverType() const =0
Gets the standard observer type used for color calculations.
virtual std::shared_ptr< ISpectralColorSpecification > GetBaseSpecification() const =0
Gets the base spectral specification, if one exists.
virtual std::shared_ptr< IIlluminant > GetIlluminant() const =0
Gets the illuminant (light source) used by this specification.
virtual AstmTableType GetMethod() const =0
Gets the ASTM table type used for spectral calculations.
AstmTableType
Definition icmm.h:30
std::shared_ptr< ITristimulusSpecification > TristimulusPtr
ObserverType
Definition icmm.h:78

Standard Configurations

sRGB (web/display standard):**

Best Practices

See also
icmm::IColorSpecification, icmm::IIlluminant, icmm::IWhitePointProvider, icmm::ISpectralColorSpecification, icmm::CTristimulusSpecification

Definition at line 187 of file ITristimulusSpecification.h.

Member Function Documentation

◆ GetBaseSpecification()

virtual std::shared_ptr< ISpectralColorSpecification > icmm::ITristimulusSpecification::GetBaseSpecification ( ) const
pure virtual

Gets the base spectral specification, if one exists.

Some tristimulus specifications are derived from spectral data, which provides higher accuracy for certain conversions. If available, the base spectral specification can be used for improved accuracy.

Returns
Shared pointer to ISpectralColorSpecification, or nullptr if none
See also
ISpectralColorSpecification

Implemented in icmm::CTristimulusSpecification.

◆ GetIlluminant()

virtual std::shared_ptr< IIlluminant > icmm::ITristimulusSpecification::GetIlluminant ( ) const
pure virtual

Gets the illuminant (light source) used by this specification.

The illuminant defines the reference white point and viewing conditions. Common illuminants include D65 (daylight), D50 (print), and A (tungsten).

Returns
Shared pointer to IIlluminant, or nullptr if not set
See also
IIlluminant, IWhitePointProvider

Implemented in icmm::CTristimulusSpecification.

◆ GetMethod()

virtual AstmTableType icmm::ITristimulusSpecification::GetMethod ( ) const
pure virtual

Gets the ASTM table type used for spectral calculations.

The method determines wavelength range and resolution for converting between spectral and tristimulus representations.

Returns
AstmTableType indicating calculation method
See also
AstmTableType

Implemented in icmm::CTristimulusSpecification.

◆ GetObserverType()

virtual ObserverType icmm::ITristimulusSpecification::GetObserverType ( ) const
pure virtual

Gets the standard observer type used for color calculations.

The observer type defines the color matching functions used:

  • OT_CIE_1931_2_DEGREE: Standard 2 degrees observer (small fields)
  • OT_CIE_1964_10_DEGREE: Supplementary 10 degrees observer (large fields)
Returns
ObserverType indicating which standard observer to use
See also
ObserverType

Implemented in icmm::CTristimulusSpecification.

◆ GetSpecificationType()

IColorSpecification::SpecType icmm::ITristimulusSpecification::GetSpecificationType ( ) const
inlinefinalprotectedvirtual

Gets the logical type of the specification.

Returns whether this is a tristimulus-based specification (3 values like RGB) or a spectral-based specification (full wavelength distribution).

Returns
SpecType indicating Tristimulus or Spectral
See also
SpecType

Implements icmm::IColorSpecification.

Definition at line 246 of file ITristimulusSpecification.h.

References icmm::IColorSpecification::Tristimulus.


The documentation for this class was generated from the following file: