/// <summary> /// Set the z-distance of a certain plane. /// </summary> /// <param name="num">Numerator of z-distance.</param> /// <param name="den">Denominator of z-distance.</param> /// <param name="planeNum">Zero-based index of the plane.</param> public void setZdistance(uint num, uint den, int planeNum) { if (planeNum < 0 || planeNum >= numPlane) { return; } zDistance[planeNum] = new TiffInfo(StkInfoCollection.UIC2Tag, "ZDistance", num, den); }
/// <summary> /// Set the wavelength of a certain plane. /// </summary> /// <param name="num">Numerator of wavelength.</param> /// <param name="den">Denominator of wavelength.</param> /// <param name="planeNum">Zero-based index of the plane.</param> public void setWavelength(uint num, uint den, int planeNum) { if (planeNum < 0 || planeNum >= numPlane) { return; } wavelength[planeNum] = new TiffInfo(StkInfoCollection.UIC3Tag, "Wavelength", num, den); }
/// <summary> /// Set the midification time of the given plane. /// </summary> /// <param name="julian">Julian Date</param> /// <param name="millisecond">Milliseconds</param> /// <param name="planeNum">Zero-based index of the plane.</param> public void setModifiedDatetime(uint julian, uint millisecond, int planeNum) { if (planeNum < 0 || planeNum >= numPlane) { return; } modifiedTime[planeNum] = new TiffInfo(StkInfoCollection.UIC2Tag, "Modified time", julian, millisecond); }
/// <summary> /// Set the creation time of the given plane. /// </summary> /// <param name="julian">Julian Date</param> /// <param name="millisecond">Milliseconds</param> /// <param name="planeNum">Zero-based index of the plane.</param> public void setCreationDatetime(uint julian, uint millisecond, int planeNum) { if (planeNum < 0 || planeNum >= numPlane) { return; } creationTime[planeNum] = new TiffInfo(StkInfoCollection.UIC2Tag, "Creation time", julian, millisecond); }
/// <summary> /// Set the unit of calibration. /// </summary> /// <param name="unit">A string representing the unit.</param> public void setCalibrationUnit(string unit) { UIC1.Remove(StkInfoCollection.CalibrationUnits); var c = new TiffInfo(StkInfoCollection.UIC1Tag, "Calibration Unit", unit); var l = new List <TiffInfo>(); l.Add(c); UIC1.Add(StkInfoCollection.CalibrationUnits, l); }
/// <summary> /// Set the modification time of the given plane. /// </summary> /// <param name="dt">Local DateTime.</param> /// <param name="planeNum">Zero-based index of the plane.</param> public void setModifiedDatetime(DateTime dt, int planeNum) { if (planeNum < 0 || planeNum >= numPlane) { return; } long julian, millisecond; JulianDatetime.getSTKdatetime(dt, out julian, out millisecond); modifiedTime[planeNum] = new TiffInfo(StkInfoCollection.UIC2Tag, "Modified time", Convert.ToUInt32(julian), Convert.ToUInt32(millisecond)); }
/// <summary> /// Set UIC4 data for a specific plane /// </summary> /// <param name="key">UIC4 key</param> /// <param name="info">Tiffinfo</param> /// <param name="planeNum">Zero-indexed plane number</param> public void setUIC4Data(ushort key, TiffInfo info, int planeNum) { if (planeNum < 0 || planeNum >= numPlane) { return; } try { UIC4[key][planeNum] = info; } catch { } }
/// <summary> /// Set calibration in Y-direction. /// </summary> /// <param name="numerator">Numerator of the calibration value.</param> /// <param name="denominator">Denominator of the calibration value.</param> public void setYCalibration(uint numerator, uint denominator) { UIC1.Remove(StkInfoCollection.SpatialCalibration); var c = new TiffInfo(StkInfoCollection.UIC1Tag, "Calibration On/Off", (uint)1); var l = new List <TiffInfo>(); l.Add(c); UIC1.Add(StkInfoCollection.SpatialCalibration, l); UIC1.Remove(StkInfoCollection.YCalibration); c = new TiffInfo(StkInfoCollection.UIC1Tag, "Y Calibration", numerator, denominator); l = new List <TiffInfo>(); l.Add(c); UIC1.Add(StkInfoCollection.YCalibration, l); }
/// <summary> /// Forcely add absolute Z info to UIC4 /// </summary> /// <param name="num">Array of the numerators of Z position.</param> /// <param name="denom">Array of the denominators of Z position.</param> /// <returns>True if successful.</returns> public bool setAbsoluteZUIC4(uint[] num, uint[] denom) { if (num.Length != numPlane || denom.Length != numPlane) { throw new Exception("Array lenght mismatch."); } TiffInfo[] z = new TiffInfo[numPlane]; TiffInfo[] v = new TiffInfo[numPlane]; uint[] valid = new uint[numPlane]; for (int i = 0; i < numPlane; i++) { valid[i] = 1; z[i] = new TiffInfo(UIC4Tag, "Absolute Z", num[i], denom[i]); v[i] = new TiffInfo(UIC4Tag, "Absolute Z Validity", valid[i]); } forceAddUIC4Data(AbsoluteZ, z); forceAddUIC4Data(AbsoluteZValid, v); return(true); }
/// <summary> /// Forcely add absolute Z info to UIC1 /// </summary> /// <param name="num">Array of the numerators of Z position.</param> /// <param name="denom">Array of the denominators of Z position.</param> /// <returns>True if successful.</returns> public void setAbsoluteZUIC1(uint[] num, uint[] denom) { if (num.Length != numPlane || denom.Length != numPlane) { throw new Exception("Array lenght mismatch."); } TiffInfo z = new TiffInfo(UIC1Tag, "Absolute Z", num, denom); forceAddUIC1Data(AbsoluteZ, new TiffInfo[1] { z }); uint[] valid = new uint[numPlane]; for (int i = 0; i < numPlane; i++) { valid[i] = 1; } TiffInfo v = new TiffInfo(UIC1Tag, "Absolute Z Validity", valid); forceAddUIC1Data(AbsoluteZValid, new TiffInfo[1] { v }); }
internal override TiffInfoCollection toInfoCollection() { StkInfoCollection infoC = new StkInfoCollection(Convert.ToUInt32(numPlane), base.toInfoCollection()); TiffDirData uic2test = search(StkInfoCollection.UIC2Tag); if (uic2test == null || UIC2data == null) { return(infoC); } uint[] uicContent = (uint[])UIC2data.getContent(); if (uicContent.Length < 6 * numPlane) { return(infoC); } for (int i = 0; i < numPlane; i++) { infoC.setZdistance(uicContent[6 * i], uicContent[6 * i + 1], i); infoC.setCreationDatetime(uicContent[6 * i + 2], uicContent[6 * i + 3], i); infoC.setModifiedDatetime(uicContent[6 * i + 4], uicContent[6 * i + 5], i); } TiffDirData uic3test = search(StkInfoCollection.UIC3Tag); if (uic3test != null && UIC3data != null) { uicContent = (uint[])UIC3data.getContent(); if (uicContent.Length < 2 * numPlane) { return(infoC); } for (int i = 0; i < numPlane; i++) { infoC.setWavelength(uicContent[2 * i], uicContent[2 * i + 1], i); } } TiffDirData uic4test = search(StkInfoCollection.UIC4Tag); if (uic4test != null && UIC4data != null && UIC4data.Count > 0) { foreach (KeyValuePair <ushort, TiffData[]> pair in UIC4data) { if (pair.Value.Length != numPlane) { continue; } TiffInfo[] temp = new TiffInfo[numPlane]; for (int j = 0; j < numPlane; j++) { temp[j] = new TiffInfo(StkInfoCollection.UIC4Tag, "UIC4", (pair.Value)[j]); } infoC.forceAddUIC4Data(pair.Key, temp); } } TiffDirData uic1test = search(StkInfoCollection.UIC1Tag); if (uic1test != null && UIC1data != null && UIC1data.Count > 0) { foreach (KeyValuePair <uint, TiffData[]> pair in UIC1data) { TiffInfo[] uic1info = new TiffInfo[pair.Value.Length]; for (int i = 0; i < pair.Value.Length; i++) { uic1info[i] = new TiffInfo(StkInfoCollection.UIC1Tag, "UIC1", pair.Value[i]); } infoC.forceAddUIC1Data(pair.Key, uic1info); } } return(infoC); }