public static DifferencePredictor getDifferencingPredictor(TiffInfoCollection info) { try { ushort[] temp = info.getOneInfoData(TiffInfoCollection.DifferencingPredictor) as ushort[]; return((DifferencePredictor)(temp[0])); } catch { return(DifferencePredictor.None); } }
public static ushort getCompressionTag(TiffInfoCollection info) { try { ushort[] temp = info.getOneInfoData(TiffInfoCollection.Compression) as ushort[]; return(temp[0]); } catch { return(1); } }
protected void createInstance(uint numPlane, TiffInfoCollection tifInfo) { allInfo = tifInfo.InfoCollection; this.numPlane = Convert.ToInt32(numPlane); StkInfoCollection stkInfo = null; if (tifInfo is StkInfoCollection) { stkInfo = tifInfo as StkInfoCollection; } if (stkInfo != null && stkInfo.NumberOfPlanes == numPlane) { for (uint i = 0; i < this.numPlane; i++) { zDistance.Add(stkInfo.ZDistance[i].Clone() as TiffInfo); creationTime.Add(stkInfo.CreationTime[i].Clone() as TiffInfo); modifiedTime.Add(stkInfo.ModifiedTime[i].Clone() as TiffInfo); wavelength.Add(stkInfo.Wavelength[i].Clone() as TiffInfo); } UIC1 = stkInfo.UIC1DataDeepCopy; UIC4 = stkInfo.UIC4DataDeepCopy; uint[] num, denom; if (!UIC4.ContainsKey(AbsoluteZ)) { num = new uint[numPlane]; denom = new uint[numPlane]; for (int i = 0; i < numPlane; i++) { denom[i] = 1; } setAbsoluteZUIC4(num, denom); setAbsoluteZUIC1(num, denom); } else { try { getAbsoluteZUIC4(out num, out denom); setAbsoluteZUIC1(num, denom); } catch { num = new uint[numPlane]; denom = new uint[numPlane]; for (int i = 0; i < numPlane; i++) { denom[i] = 1; } setAbsoluteZUIC4(num, denom); setAbsoluteZUIC1(num, denom); } } } else { createUICtagInfo(); } }
public static void setHorizontalDifferencing(TiffInfoCollection info, bool isHorizontalDifference) { if (isHorizontalDifference) { info.forceAdd(new TiffInfo(TiffInfoCollection.DifferencingPredictor, "Predictor", (ushort)2)); } else { info.forceAdd(new TiffInfo(TiffInfoCollection.DifferencingPredictor, "Predictor", (ushort)1)); } }
public StkInfoCollection(TiffInfoCollection tifInfo) : base() { if (tifInfo is StkInfoCollection) { var stkInfo = tifInfo as StkInfoCollection; createInstance((uint)stkInfo.NumberOfPlanes, stkInfo); } else { allInfo = tifInfo.InfoCollection; createUICtagInfo(); } }
internal override void setFromInfoCollection(TiffInfoCollection info) { base.setFromInfoCollection(info); StkInfoCollection allInfo = info as StkInfoCollection; if (allInfo == null) { return; } List <TiffDirData> dirTemp = new List <TiffDirData>(); numPlane = allInfo.NumberOfPlanes; uint[] uic2 = new uint[6 * numPlane]; if (allInfo.validUIC2tag()) { for (int i = 0; i < Math.Min(numPlane, allInfo.ZDistance.Length); i++) { if (allInfo.ZDistance[i] != null) { Array content = allInfo.ZDistance[i].Data.getContent(); if (content == null || content.Length <= 0) { continue; } uint[] temp = (uint[])content; uic2[6 * i] = temp[0]; uic2[6 * i + 1] = temp[1]; } else { uic2[6 * i] = 0; uic2[6 * i + 1] = 0; } } for (int i = 0; i < Math.Min(numPlane, allInfo.CreationTime.Length); i++) { if (allInfo.CreationTime[i] != null) { Array content = allInfo.CreationTime[i].Data.getContent(); if (content == null || content.Length <= 0) { continue; } uint[] temp = (uint[])content; uic2[6 * i + 2] = temp[0]; uic2[6 * i + 3] = temp[1]; } else { uic2[6 * i + 2] = 0; uic2[6 * i + 3] = 0; } } for (int i = 0; i < Math.Min(numPlane, allInfo.ModifiedTime.Length); i++) { if (allInfo.ModifiedTime[i] != null) { Array content = allInfo.ModifiedTime[i].Data.getContent(); if (content == null || content.Length <= 0) { continue; } uint[] temp = (uint[])(content); uic2[6 * i + 4] = temp[0]; uic2[6 * i + 5] = temp[1]; } else { uic2[6 * i + 4] = 0; uic2[6 * i + 5] = 0; } } } UIC2data = new TiffData(TiffData.TIFFdataType.Rational); UIC2data.setContent(uic2); TiffDirData ddTemp = new TiffDirData(); ddTemp.Tag = StkInfoCollection.UIC2Tag; ddTemp.Data = new TiffData(TiffData.TIFFdataType.Rational, numPlane); dirTemp.Add(ddTemp); if (allInfo.validUIC3tag()) { uint[] uic3 = new uint[2 * numPlane]; for (int i = 0; i < numPlane; i++) { if (allInfo.Wavelength[i] != null) { uint[] temp = (uint[])(allInfo.Wavelength[i].Data.getContent()); uic3[2 * i] = temp[0]; uic3[2 * i + 1] = temp[1]; } else { uic3[2 * i] = 0; uic3[2 * i + 1] = 0; } } UIC3data = new TiffData(TiffData.TIFFdataType.Rational); UIC3data.setContent(uic3); ddTemp = new TiffDirData(); ddTemp.Tag = StkInfoCollection.UIC3Tag; ddTemp.Data = new TiffData(TiffData.TIFFdataType.Rational, numPlane); dirTemp.Add(ddTemp); } UIC4data = new SortedList <ushort, TiffData[]>(); if (allInfo.validUIC4tag()) { ddTemp = new TiffDirData(); ddTemp.Tag = StkInfoCollection.UIC4Tag; ddTemp.Data = new TiffData(TiffData.TIFFdataType.Byte, numPlane); dirTemp.Add(ddTemp); foreach (KeyValuePair <ushort, List <TiffInfo> > pair in allInfo.UIC4DataDeepCopy) { if (pair.Value.Count != numPlane) { continue; } TiffData[] temp = new TiffData[numPlane]; for (int j = 0; j < numPlane; j++) { temp[j] = (pair.Value)[j].Data; } UIC4data.Add(pair.Key, temp); } } UIC1data = new SortedList <uint, TiffData[]>(); if (allInfo.validUIC1tag()) { ddTemp = new TiffDirData(); ddTemp.Tag = StkInfoCollection.UIC1Tag; SortedList <uint, List <TiffInfo> > uic1Copy = allInfo.UIC1DataDeepCopy; ddTemp.Data = new TiffData(TiffData.TIFFdataType.Byte, uic1Copy.Count); dirTemp.Add(ddTemp); foreach (KeyValuePair <uint, List <TiffInfo> > pair in uic1Copy) { TiffData[] temp = new TiffData[pair.Value.Count]; for (int i = 0; i < pair.Value.Count; i++) { temp[i] = pair.Value[i].Data; } UIC1data.Add(pair.Key, temp); } } TiffDirData[] newDir = new TiffDirData[dirArray.Length + dirTemp.Count]; for (int i = 0; i < dirArray.Length; i++) { newDir[i] = dirArray[i]; } for (int i = dirArray.Length; i < newDir.Length; i++) { newDir[i] = dirTemp[i - dirArray.Length]; } dirArray = newDir; Array.Sort(dirArray); }
public StkInfoCollection(uint numPlane, TiffInfoCollection tifInfo) : base() { createInstance(numPlane, tifInfo); }