1 /* 2 For general Scribus (>=1.3.2) copyright and licensing information please refer 3 to the COPYING file provided with the program. Following this notice may exist 4 a copyright and/or license notice that predates the release of Scribus 1.3.2 5 for which a new license (GPL+exception) is in place. 6 */ 7 8 #ifndef SCE308TABLES_H 9 #define SCE308TABLES_H 10 11 #include <QMap> 12 #include <QVector> 13 14 #include "sccolormgmtstructs.h" 15 16 class ScE308Table 17 { 18 public: ~ScE308Table()19 virtual ~ScE308Table() {} 20 21 // Illuminant and observer for which this table is to be used 22 virtual eIlluminant illuminant() const = 0; 23 virtual eObserver observer() const = 0; 24 25 virtual int wavelengthStart() const = 0; 26 virtual int wavelengthIncrement() const = 0; 27 28 // Wavelengths represented in the data set 29 QVector<int> wavelengths() const; 30 wX(int waveLen)31 double wX(int waveLen) const { return m_wx.value(waveLen, 0.0); } wY(int waveLen)32 double wY(int waveLen) const { return m_wy.value(waveLen, 0.0); } wZ(int waveLen)33 double wZ(int waveLen) const { return m_wz.value(waveLen, 0.0); } 34 weightsX()35 const QMap<int, double>& weightsX() const { return m_wx; } weightsY()36 const QMap<int, double>& weightsY() const { return m_wy; } weightsZ()37 const QMap<int, double>& weightsZ() const { return m_wz; } 38 39 protected: 40 // Weights for computing CIEXYZ X coordinate 41 QMap<int, double> m_wx; 42 43 // Weights for computing CIEXYZ Y coordinate 44 QMap<int, double> m_wy; 45 46 // Weights for computing CIEXYZ Z coordinate 47 QMap<int, double> m_wz; 48 }; 49 50 class ScE308Table5_D50_2deg : public ScE308Table 51 { 52 public: 53 ScE308Table5_D50_2deg(); 54 illuminant()55 virtual eIlluminant illuminant() const { return Illuminant_D50; } observer()56 virtual eObserver observer() const { return Observer_2deg; } 57 wavelengthStart()58 virtual int wavelengthStart() const { return 360; } wavelengthIncrement()59 virtual int wavelengthIncrement() const { return 10; } 60 }; 61 62 class ScE308Table5_D50_10deg : public ScE308Table 63 { 64 public: 65 ScE308Table5_D50_10deg(); 66 illuminant()67 virtual eIlluminant illuminant() const { return Illuminant_D50; } observer()68 virtual eObserver observer() const { return Observer_10deg; } 69 wavelengthStart()70 virtual int wavelengthStart() const { return 360; } wavelengthIncrement()71 virtual int wavelengthIncrement() const { return 10; } 72 }; 73 74 class ScE308Table6_D50_2deg : public ScE308Table 75 { 76 public: 77 ScE308Table6_D50_2deg(); 78 illuminant()79 virtual eIlluminant illuminant() const { return Illuminant_D50; } observer()80 virtual eObserver observer() const { return Observer_2deg; } 81 wavelengthStart()82 virtual int wavelengthStart() const { return 360; } wavelengthIncrement()83 virtual int wavelengthIncrement() const { return 10; } 84 }; 85 86 class ScE308Table6_D50_10deg : public ScE308Table 87 { 88 public: 89 ScE308Table6_D50_10deg(); 90 illuminant()91 virtual eIlluminant illuminant() const { return Illuminant_D50; } observer()92 virtual eObserver observer() const { return Observer_10deg; } 93 wavelengthStart()94 virtual int wavelengthStart() const { return 360; } wavelengthIncrement()95 virtual int wavelengthIncrement() const { return 10; } 96 }; 97 98 #endif 99