/// <summary> Construct the lut from the curve data</summary> /// <oaram> curve the data </oaram> /// <oaram> dwNumInput the lut size </oaram> public LookUpTableFPInterp(ICCCurveType curve, int dwNumInput) : base(curve, dwNumInput) { int dwLowIndex, dwHighIndex; // Indices of interpolation points double dfLowIndex, dfHighIndex; // FP indices of interpolation points double dfTargetIndex; // Target index into interpolation table double dfRatio; // Ratio of LUT input points to curve values double dfLow, dfHigh; // Interpolation values dfRatio = (double)(curve.nEntries - 1) / (double)(dwNumInput - 1); for (int i = 0; i < dwNumInput; i++) { dfTargetIndex = (double)i * dfRatio; dfLowIndex = System.Math.Floor(dfTargetIndex); //UPGRADE_WARNING: Data types in Visual C# might be different. Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'" dwLowIndex = (int)dfLowIndex; dfHighIndex = System.Math.Ceiling(dfTargetIndex); //UPGRADE_WARNING: Data types in Visual C# might be different. Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'" dwHighIndex = (int)dfHighIndex; if (dwLowIndex == dwHighIndex) { //UPGRADE_WARNING: Data types in Visual C# might be different. Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'" lut[i] = (float)ICCCurveType.CurveToDouble(curve.entry(dwLowIndex)); } else { dfLow = ICCCurveType.CurveToDouble(curve.entry(dwLowIndex)); dfHigh = ICCCurveType.CurveToDouble(curve.entry(dwHighIndex)); //UPGRADE_WARNING: Data types in Visual C# might be different. Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'" lut[i] = (float)(dfLow + (dfHigh - dfLow) * (dfTargetIndex - dfLowIndex)); } } }
/// <summary> Construct the lut from the curve data</summary> /// <oaram> curve the data </oaram> /// <oaram> dwNumInput the lut size </oaram> /// <oaram> dwMaxOutput the lut max value </oaram> public LookUpTable32Interp(ICCCurveType curve, int dwNumInput, int dwMaxOutput):base(curve, dwNumInput, dwMaxOutput) { int dwLowIndex, dwHighIndex; // Indices of interpolation points double dfLowIndex, dfHighIndex; // FP indices of interpolation points double dfTargetIndex; // Target index into interpolation table double dfRatio; // Ratio of LUT input points to curve values double dfLow, dfHigh; // Interpolation values double dfOut; // Output LUT value dfRatio = (double) (curve.count - 1) / (double) (dwNumInput - 1); for (int i = 0; i < dwNumInput; i++) { dfTargetIndex = (double) i * dfRatio; dfLowIndex = System.Math.Floor(dfTargetIndex); //UPGRADE_WARNING: Data types in Visual C# might be different. Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'" dwLowIndex = (int) dfLowIndex; dfHighIndex = System.Math.Ceiling(dfTargetIndex); //UPGRADE_WARNING: Data types in Visual C# might be different. Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'" dwHighIndex = (int) dfHighIndex; if (dwLowIndex == dwHighIndex) dfOut = ICCCurveType.CurveToDouble(curve.entry(dwLowIndex)); else { dfLow = ICCCurveType.CurveToDouble(curve.entry(dwLowIndex)); dfHigh = ICCCurveType.CurveToDouble(curve.entry(dwHighIndex)); dfOut = dfLow + (dfHigh - dfLow) * (dfTargetIndex - dfLowIndex); } //UPGRADE_WARNING: Data types in Visual C# might be different. Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'" lut[i] = (int) System.Math.Floor(dfOut * dwMaxOutput + 0.5); } }
/* Construct the lut * @param curve data * @param dwNumInput size of lut * @param dwMaxOutput max value of lut */ public LookUpTable16Gamma(ICCCurveType curve, int dwNumInput, int dwMaxOutput):base(curve, dwNumInput, dwMaxOutput) { double dfE = ICCCurveType.CurveGammaToDouble(curve.entry(0)); // Gamma exponent for inverse transformation for (int i = 0; i < dwNumInput; i++) { //UPGRADE_WARNING: Data types in Visual C# might be different. Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'" lut[i] = (short) System.Math.Floor(System.Math.Pow((double) i / (dwNumInput - 1), dfE) * dwMaxOutput + 0.5); } }
/* Construct the lut * @param curve data * @param dwNumInput size of lut * @param dwMaxOutput max value of lut */ public LookUpTable16Gamma(ICCCurveType curve, int dwNumInput, int dwMaxOutput) : base(curve, dwNumInput, dwMaxOutput) { double dfE = ICCCurveType.CurveGammaToDouble(curve.entry(0)); // Gamma exponent for inverse transformation for (int i = 0; i < dwNumInput; i++) { //UPGRADE_WARNING: Data types in Visual C# might be different. Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'" lut[i] = (short)System.Math.Floor(System.Math.Pow((double)i / (dwNumInput - 1), dfE) * dwMaxOutput + 0.5); } }