74#pragma warning( disable: 4786)
82#ifdef USEREFICCMAXNAMESPACE
96 int nTotal = nRows * nCols;
97 int nMin = nRows<nCols ? nRows : nCols;
105 for (i=0; i<nMin; i++) {
107 row[nCols-1-i] = 1.0;
158 for (j=0; j<m_nRows; j++) {
160 for (i=0; i<m_nCols; i++) {
162 pDst[j] += row[i] * pSrc[i];
182 for (j=0; j<m_nRows; j++) {
183 for (i=0; i<m_nCols; i++) {
207 if (m_nRows != mCols)
213 for (j=0; j<mRows; j++) {
215 for (i=0; i<m_nCols; i++) {
220 for (k=0; k<m_nRows; k++) {
221 *to += row[k] * (*from);
241 for (j=0; j<m_nRows; j++) {
243 for (i=0; i<m_nCols; i++) {
260 for (j=0; j<m_nRows; j++) {
262 for (i=0; i<m_nCols; i++) {
278 if (m_nRows==3 && m_nCols==3) {
303 for (i=0; i<m_nCols; i++) {
322 if (m_nCols!=m_nRows)
326 for (j=0; j<m_nRows; j++) {
327 for (i=0; i<m_nCols; i++) {
355 if (m_nRows != dstRange.
steps || m_nCols != srcRange.
steps)
371 for (d=0; d<dstRange.
steps; d++) {
377 else if (w>=srcEnd) {
378 r[srcRange.
steps-1] = 1.0;
382 icFloatNumber p2 = (w - (srcStart + p * srcScale)) / srcScale;
387 else if (p2>0.99999) {
413 srcRange.
end != dstRange.
end) {
423#ifdef USEREFICCMAXNAMESPACE
float icFloatNumber
All floating point operations/variables in IccProfLib use the icFloatNumber data type.
#define ICCMTXSTEPDUMPFMT
bool icMatrixInvert3x3(icFloatNumber *M)
Name: icMatrixInvert3x3.
icFloatNumber icF16toF(icFloat16Number num)
icFloatNumber * entry(icUInt16Number nRow, icUInt16Number nCol=0)
icFloatNumber RowSum(icUInt16Number nRow) const
Name: CIccMatrixMath::RowSum.
void VectorScale(const icFloatNumber *vec)
Name: CIccMatrixMath::VectorScale.
virtual bool isIdentityMtx() const
Name: CIccMatrixMath::isIdentityMtx.
CIccMatrixMath(icUInt16Number nRows, icUInt16Number nCols, bool bInitIdentity=false)
Name: CIccMatrixMath::CIccMatrixMath.
CIccMatrixMath * Mult(const CIccMatrixMath *matrix) const
Name: CIccMatrixMath::Mult.
static CIccMatrixMath * rangeMap(const icSpectralRange &from, const icSpectralRange &to)
Name: CIccMatrixMath::rangeMap.
virtual void dumpMtx(std::string &str) const
Name: CIccMatrixMath::dump.
virtual ~CIccMatrixMath()
Name: CIccMatrixMath::~CIccMatrixMath.
virtual void VectorMult(icFloatNumber *pDst, const icFloatNumber *pSrc) const
Name: CIccMatrixMath::VectorMult.
void Scale(icFloatNumber v)
Name: CIccMatrixMath::Scale.
bool SetRange(const icSpectralRange &from, const icSpectralRange &to)
Name: CIccMatrixMath::SetRange.
bool Invert()
Name: CIccMatrixMath::Invert.