• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# IByteSource类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中IByteSource的典型用法代码示例。如果您正苦于以下问题:C# IByteSource类的具体用法?C# IByteSource怎么用?C# IByteSource使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



IByteSource类属于命名空间,在下文中一共展示了IByteSource类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: OnBeginSequenceItem

 public void OnBeginSequenceItem(IByteSource source, uint length)
 {
     if (_currentSequenceTag.Peek() == DicomTag.DirectoryRecordSequence && _directoryRecordSequence != null)
     {
         _lookup.Add((uint)source.Position - 8, _directoryRecordSequence.LastOrDefault());
     }
 }
开发者ID:GMZ,项目名称:fo-dicom,代码行数:7,代码来源:DicomDirectoryReaderObserver.cs


示例2: OnBeginSequence

		public void OnBeginSequence(IByteSource source, DicomTag tag, uint length) {
			DicomSequence sq = new DicomSequence(tag);
			_sequences.Push(sq);

			DicomDataset ds = _datasets.Peek();
			ds.Add(sq);
		}
开发者ID:dremerdt,项目名称:fo-dicom,代码行数:7,代码来源:DicomDatasetReaderObserver.cs


示例3: OnBeginSequence

 public void OnBeginSequence(IByteSource source, DicomTag tag, uint length)
 {
     _currentSequenceTag.Push(tag);
     if (tag == DicomTag.DirectoryRecordSequence) {
         _directoryRecordSequence = _dataset.Get<DicomSequence>(tag);
     }
 }
开发者ID:anqin888,项目名称:fo-dicom,代码行数:7,代码来源:DicomDirectoryReaderObserver.cs


示例4: OnBeginSequenceItem

		public void OnBeginSequenceItem(IByteSource source, uint length) {
			DicomSequence sq = _sequences.Peek();

			DicomDataset item = new DicomDataset();
			sq.Items.Add(item);

			_datasets.Push(item);
		}
开发者ID:Spapath,项目名称:fo-dicom,代码行数:8,代码来源:DicomDatasetReaderObserver.cs


示例5: BeginRead

		public IAsyncResult BeginRead(IByteSource source, IDicomReaderObserver fileMetaInfo, IDicomReaderObserver dataset, AsyncCallback callback, object state) {
			_result = DicomReaderResult.Processing;
			_source = source;
			_fmiObserver = fileMetaInfo;
			_dataObserver = dataset;
			_async = new EventAsyncResult(callback, state);
			ParsePreamble(source, null); // ThreadPool?
			return _async;
		}
开发者ID:ZeryZhang,项目名称:fo-dicom,代码行数:9,代码来源:DicomFileReader.cs


示例6: BeginRead

		public IAsyncResult BeginRead(IByteSource source, IDicomReaderObserver observer, DicomTag stop, AsyncCallback callback, object state) {
			_stop = stop;
			_observer = observer;
			_result = DicomReaderResult.Processing;
			_exception = null;
			_async = new EventAsyncResult(callback, state);
			ThreadPool.QueueUserWorkItem(ParseProc, source);
			return _async;
		}
开发者ID:peerct,项目名称:fo-dicom,代码行数:9,代码来源:DicomReader.cs


示例7: BeginRead

 public static IAsyncResult BeginRead(
     this DicomFileReader @this,
     IByteSource source,
     IDicomReaderObserver fileMetaInfo,
     IDicomReaderObserver dataset,
     AsyncCallback callback,
     object state)
 {
     return AsyncFactory.ToBegin(@this.ReadAsync(source, fileMetaInfo, dataset), callback, state);
 }
开发者ID:aerik,项目名称:fo-dicom,代码行数:10,代码来源:DicomFileReaderExtensions.cs


示例8: BeginRead

 public static IAsyncResult BeginRead(
     this DicomReader @this,
     IByteSource source,
     IDicomReaderObserver observer,
     Func<ParseState, bool> stop,
     AsyncCallback callback,
     object state)
 {
     return AsyncFactory.ToBegin(@this.ReadAsync(source, observer, stop), callback, state);
 }
开发者ID:aerik,项目名称:fo-dicom,代码行数:10,代码来源:DicomReaderExtensions.cs


示例9: OnBeginFragmentSequence

        public void OnBeginFragmentSequence(IByteSource source, DicomTag tag, DicomVR vr)
        {
            if (vr == DicomVR.OB)
                _fragment = new DicomOtherByteFragment(tag);
            else if (vr == DicomVR.OW)
                _fragment = new DicomOtherWordFragment(tag);
            else
                throw new DicomDataException("Unexpected VR found for DICOM fragment sequence: {0}", vr.Code);

            DicomDataset ds = _datasets.Peek();
            ds.Add(_fragment);
        }
开发者ID:jwake,项目名称:fo-dicom,代码行数:12,代码来源:DicomDatasetReaderObserver.cs


示例10: OnBeginFragmentSequence

 public void OnBeginFragmentSequence(IByteSource source, DicomTag tag, DicomVR vr)
 {
     _log.Log(
         _level,
         "{marker:x8}: {padding}{tag} {vrCode} {tagDictionaryEntryName}",
         source.Marker,
         _pad,
         tag,
         vr.Code,
         tag.DictionaryEntry.Name);
     IncreaseDepth();
 }
开发者ID:aerik,项目名称:fo-dicom,代码行数:12,代码来源:DicomParserLogger.cs


示例11: OnBeginSequence

 public void OnBeginSequence(IByteSource source, DicomTag tag, uint length)
 {
     _log.Log(
         _level,
         "{marker:x8}: {padding}{tag} SQ {length}",
         source.Marker,
         _pad,
         tag,
         tag.DictionaryEntry.Name,
         length);
     IncreaseDepth();
 }
开发者ID:aerik,项目名称:fo-dicom,代码行数:12,代码来源:DicomParserLogger.cs


示例12: OnElement

 public void OnElement(IByteSource source, DicomTag tag, DicomVR vr, IByteBuffer data)
 {
     _log.Log(
         _level,
         "{marker:x8}: {padding}{tag} {vrCode} {tagDictionaryEntryName} [{size}]",
         source.Marker,
         _pad,
         tag,
         vr.Code,
         tag.DictionaryEntry.Name,
         data.Size);
 }
开发者ID:aerik,项目名称:fo-dicom,代码行数:12,代码来源:DicomParserLogger.cs


示例13: Read

 /// <summary>
 /// Read DICOM file object.
 /// </summary>
 /// <param name="source">Byte source to read.</param>
 /// <param name="fileMetaInfo">Reader observer for file meta information.</param>
 /// <param name="dataset">Reader observer for dataset.</param>
 /// <param name="stop">Stop criterion in dataset.</param>
 /// <returns>Reader result.</returns>
 public DicomReaderResult Read(
     IByteSource source,
     IDicomReaderObserver fileMetaInfo,
     IDicomReaderObserver dataset,
     Func<ParseState, bool> stop = null)
 {
     var parse = Parse(source, fileMetaInfo, dataset, stop);
     lock (this.locker)
     {
         this.fileFormat = parse.Item2;
         this.syntax = parse.Item3;
     }
     return parse.Item1;
 }
开发者ID:gustavosaita,项目名称:fo-dicom,代码行数:22,代码来源:DicomFileReader.cs


示例14: OnElement

		public void OnElement(IByteSource source, DicomTag tag, DicomVR vr, IByteBuffer data) {
			DicomElement element;
			switch (vr.Code) {
				case "AE": element = new DicomApplicationEntity(tag, data); break;
				case "AS": element = new DicomAgeString(tag, data); break;
				case "AT": element = new DicomAttributeTag(tag, data); break;
				case "CS": element = new DicomCodeString(tag, data); break;
				case "DA": element = new DicomDate(tag, data); break;
				case "DS": element = new DicomDecimalString(tag, data); break;
				case "DT": element = new DicomDateTime(tag, data); break;
				case "FD": element = new DicomFloatingPointDouble(tag, data); break;
				case "FL": element = new DicomFloatingPointSingle(tag, data); break;
				case "IS": element = new DicomIntegerString(tag, data); break;
				case "LO": element = new DicomLongString(tag, _encodings.Peek(), data); break;
				case "LT": element = new DicomLongText(tag, _encodings.Peek(), data); break;
				case "OB": element = new DicomOtherByte(tag, data); break;
				case "OD": element = new DicomOtherDouble(tag, data); break;
				case "OF": element = new DicomOtherFloat(tag, data); break;
				case "OW": element = new DicomOtherWord(tag, data); break;
				case "PN": element = new DicomPersonName(tag, _encodings.Peek(), data); break;
				case "SH": element = new DicomShortString(tag, _encodings.Peek(), data); break;
				case "SL": element = new DicomSignedLong(tag, data); break;
				case "SS": element = new DicomSignedShort(tag, data); break;
				case "ST": element = new DicomShortText(tag, _encodings.Peek(), data); break;
				case "TM": element = new DicomTime(tag, data); break;
				case "UC": element = new DicomUnlimitedCharacters(tag, _encodings.Peek(), data); break;
				case "UI": element = new DicomUniqueIdentifier(tag, data); break;
				case "UL": element = new DicomUnsignedLong(tag, data); break;
				case "UN": element = new DicomUnknown(tag, data); break;
				case "UR": element = new DicomUniversalResource(tag, _encodings.Peek(), data); break;
				case "US": element = new DicomUnsignedShort(tag, data); break;
				case "UT": element = new DicomUnlimitedText(tag, _encodings.Peek(), data); break;
				default:
					throw new DicomDataException("Unhandled VR in DICOM parser observer: {0}", vr.Code);
			}

			if (element.Tag == DicomTag.SpecificCharacterSet) {
				Encoding encoding = _encodings.Peek();
				if (element.Count > 0)
					encoding = DicomEncoding.GetEncoding(element.Get<string>(0));
				_encodings.Pop();
				_encodings.Push(encoding);
			}

			DicomDataset ds = _datasets.Peek();
			ds.Add(element);
		}
开发者ID:dremerdt,项目名称:fo-dicom,代码行数:47,代码来源:DicomDatasetReaderObserver.cs


示例15: Read

		public DicomReaderResult Read(IByteSource source, IDicomReaderObserver observer, DicomTag stop = null) {
			return EndRead(BeginRead(source, observer, stop, null, null));
		}
开发者ID:peerct,项目名称:fo-dicom,代码行数:3,代码来源:DicomReader.cs


示例16: IsPrivateSequenceBad

		private bool IsPrivateSequenceBad(IByteSource source) {
			source.Mark();

			try {
				var group = source.GetUInt16();
				var element = source.GetUInt16();
				var tag = new DicomTag(group, element);
				var length = source.GetUInt32();

				group = source.GetUInt16();
				element = source.GetUInt16();
				tag = new DicomTag(group, element);

				byte[] bytes = source.GetBytes(2);
				string vr = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
				try {
					DicomVR.Parse(vr);
					return !_explicit;
				} catch {
					// unable to parse VR
					if (_explicit)
						return true;
				}
			} finally {
				source.Rewind();
			}

			return false;
		}
开发者ID:peerct,项目名称:fo-dicom,代码行数:29,代码来源:DicomReader.cs


示例17: ParseFragmentSequence

		private void ParseFragmentSequence(IByteSource source, object state) {
			try {
				_result = DicomReaderResult.Processing;

				while (!source.IsEOF) {
					if (_state == ParseState.Tag) {
						source.Mark();

						if (!source.Require(8, ParseFragmentSequence, state)) {
							_result = DicomReaderResult.Suspended;
							return;
						}

						ushort group = source.GetUInt16();
						ushort element = source.GetUInt16();

						DicomTag tag = new DicomTag(group, element);

						if (tag != DicomTag.Item && tag != DicomTag.SequenceDelimitationItem)
							throw new DicomReaderException("Unexpected tag in DICOM fragment sequence: {0}", tag);

						_length = source.GetUInt32();

						if (tag == DicomTag.SequenceDelimitationItem) {
							// end of fragment
							_observer.OnEndFragmentSequence();
							_fragmentItem = 0;
							ResetState();
							ParseDataset(source, PopState());
							return;
						}

						_fragmentItem++;
						_state = ParseState.Value;
					}

					if (_state == ParseState.Value) {
						if (!source.Require(_length, ParseFragmentSequence, state)) {
							_result = DicomReaderResult.Suspended;
							return;
						}

						IByteBuffer buffer = source.GetBuffer(_length);
						if (_fragmentItem == 1)
							buffer = EndianByteBuffer.Create(buffer, source.Endian, 4);
						else
							buffer = EndianByteBuffer.Create(buffer, source.Endian, _vr.UnitSize);
						_observer.OnFragmentSequenceItem(source, buffer);

						_state = ParseState.Tag;
					}
				}
			} catch (Exception e) {
				_exception = e;
				_result = DicomReaderResult.Error;
			} finally {
				if (_result != DicomReaderResult.Processing && _result != DicomReaderResult.Suspended) {
					_async.Set();
				}
			}
		}
开发者ID:peerct,项目名称:fo-dicom,代码行数:61,代码来源:DicomReader.cs


示例18: ParseItemSequence

		private void ParseItemSequence(IByteSource source, object state) {
			try {
				_result = DicomReaderResult.Processing;

				while (!source.IsEOF && !source.HasReachedMilestone()) {
					if (_state == ParseState.Tag) {
						source.Mark();

						if (!source.Require(8, ParseItemSequence, state)) {
							_result = DicomReaderResult.Suspended;
							return;
						}

						ushort group = source.GetUInt16();
						ushort element = source.GetUInt16();

						_tag = new DicomTag(group, element);

						if (_tag != DicomTag.Item && _tag != DicomTag.SequenceDelimitationItem) {
							// assume invalid sequence
							source.Rewind();
							if (!_implicit)
								source.PopMilestone();
							_observer.OnEndSequence();
							if (_badPrivateSequence) {
								_explicit = !_explicit;
								_badPrivateSequence = false;
							}
							return;
						}

						_length = source.GetUInt32();

						if (_tag == DicomTag.SequenceDelimitationItem) {
							// end of sequence
							_observer.OnEndSequence();
							if (_badPrivateSequence) {
								_explicit = !_explicit;
								_badPrivateSequence = false;
							}
							ResetState();
							return;
						}

						_state = ParseState.Value;
					}

					if (_state == ParseState.Value) {
						if (_length != UndefinedLength) {
							if (!source.Require(_length, ParseItemSequence, state)) {
								_result = DicomReaderResult.Suspended;
								return;
							}

							source.PushMilestone(_length);
						}

						_observer.OnBeginSequenceItem(source, _length);

						ResetState();
						ParseDataset(source, state);
						ResetState();

						_observer.OnEndSequenceItem();
						continue;
					}
				}

				// end of explicit length sequence
				if (source.HasReachedMilestone())
					source.PopMilestone();

				_observer.OnEndSequence();
				if (_badPrivateSequence) {
					_explicit = !_explicit;
					_badPrivateSequence = false;
				}
			} catch (Exception e) {
				_exception = e;
				_result = DicomReaderResult.Error;
			} finally {
				if (_result != DicomReaderResult.Processing && _result != DicomReaderResult.Suspended) {
					_async.Set();
				}
			}
		}
开发者ID:peerct,项目名称:fo-dicom,代码行数:86,代码来源:DicomReader.cs


示例19: IsPrivateSequence

		private bool IsPrivateSequence(IByteSource source) {
			source.Mark();

			try {
				var group = source.GetUInt16();
				var element = source.GetUInt16();
				var tag = new DicomTag(group, element);

				if (tag == DicomTag.Item || tag == DicomTag.SequenceDelimitationItem)
					return true;
			} finally {
				source.Rewind();
			}

			return false;
		}
开发者ID:peerct,项目名称:fo-dicom,代码行数:16,代码来源:DicomReader.cs


示例20: OnFragmentSequenceItem

 public void OnFragmentSequenceItem(IByteSource source, IByteBuffer data)
 {
     _fragment.Add(data);
 }
开发者ID:jwake,项目名称:fo-dicom,代码行数:4,代码来源:DicomDatasetReaderObserver.cs



注:本文中的IByteSource类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# IByteWriter类代码示例发布时间:2022-05-24
下一篇:
C# IByteReader类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap