本文整理汇总了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;未经允许,请勿转载。 |
请发表评论