本文整理汇总了C#中IByteSource.HasReachedMilestone方法的典型用法代码示例。如果您正苦于以下问题:C# IByteSource.HasReachedMilestone方法的具体用法?C# IByteSource.HasReachedMilestone怎么用?C# IByteSource.HasReachedMilestone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IByteSource
的用法示例。
在下文中一共展示了IByteSource.HasReachedMilestone方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: 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();
}
}
}
示例2: ParseDataset
private void ParseDataset(IByteSource source, object state) {
try {
_result = DicomReaderResult.Processing;
while (!source.IsEOF && !source.HasReachedMilestone() && _result == DicomReaderResult.Processing) {
if (_state == ParseState.Tag) {
source.Mark();
if (!source.Require(4, ParseDataset, state)) {
_result = DicomReaderResult.Suspended;
return;
}
ushort group = source.GetUInt16();
ushort element = source.GetUInt16();
DicomPrivateCreator creator = null;
if (group.IsOdd() && element > 0x00ff) {
string pvt = null;
uint card = (uint)(group << 16) + (uint)(element >> 8);
if (_private.TryGetValue(card, out pvt))
creator = Dictionary.GetPrivateCreator(pvt);
}
_tag = new DicomTag(group, element, creator);
if (_stop != null && _tag.CompareTo(_stop) >= 0) {
_result = DicomReaderResult.Stopped;
return;
}
_state = ParseState.VR;
}
while (_state == ParseState.VR) {
if (_tag == DicomTag.Item || _tag == DicomTag.ItemDelimitationItem || _tag == DicomTag.SequenceDelimitationItem) {
_vr = DicomVR.NONE;
_state = ParseState.Length;
break;
}
if (IsExplicitVR) {
if (!source.Require(2, ParseDataset, state)) {
_result = DicomReaderResult.Suspended;
return;
}
byte[] bytes = source.GetBytes(2);
string vr = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
try {
_vr = DicomVR.Parse(vr);
} catch {
// unable to parse VR
_vr = DicomVR.UN;
}
} else {
DicomDictionaryEntry entry = Dictionary[_tag];
if (entry != null) {
if (entry == DicomDictionary.UnknownTag)
_vr = DicomVR.UN;
else if (entry.ValueRepresentations.Contains(DicomVR.OB) && entry.ValueRepresentations.Contains(DicomVR.OW))
_vr = DicomVR.OW; // ???
else
_vr = entry.ValueRepresentations.FirstOrDefault();
}
}
if (_vr == null)
_vr = DicomVR.UN;
_state = ParseState.Length;
if (_vr == DicomVR.UN) {
if (_tag.Element == 0x0000) {
// Group Length to UL
_vr = DicomVR.UL;
break;
} else if (IsExplicitVR) {
break;
}
}
if (_tag.IsPrivate) {
if (_tag.Element != 0x0000 && _tag.Element <= 0x00ff && _vr == DicomVR.UN)
_vr = DicomVR.LO; // force private creator to LO
}
}
while (_state == ParseState.Length) {
if (_tag == DicomTag.Item || _tag == DicomTag.ItemDelimitationItem || _tag == DicomTag.SequenceDelimitationItem) {
if (!source.Require(4, ParseDataset, state)) {
_result = DicomReaderResult.Suspended;
return;
}
_length = source.GetUInt32();
_state = ParseState.Value;
break;
}
//.........这里部分代码省略.........
示例3: ParseItemSequenceTag
private bool ParseItemSequenceTag(IByteSource source)
{
if (this.parseStage == ParseStage.Tag)
{
source.Mark();
if (!source.Require(8))
{
this.result = DicomReaderResult.Suspended;
return false;
}
var group = source.GetUInt16();
var element = source.GetUInt16();
this._tag = new DicomTag(@group, element);
if (this._tag != DicomTag.Item && this._tag != DicomTag.SequenceDelimitationItem)
{
// assume invalid sequence
source.Rewind();
if (!this._implicit)
{
source.PopMilestone();
}
this.observer.OnEndSequence();
if (this.badPrivateSequence)
{
this.isExplicitVR = !this.isExplicitVR;
this.badPrivateSequence = false;
}
return false;
}
this.length = source.GetUInt32();
if (this._tag == DicomTag.SequenceDelimitationItem)
{
// #64, in case explicit length has been specified despite occurrence of Sequence Delimitation Item
if (source.HasReachedMilestone() && source.MilestonesCount > this.sequenceDepth)
{
this.ResetState();
return true;
}
// end of sequence
this.observer.OnEndSequence();
if (this.badPrivateSequence)
{
this.isExplicitVR = !this.isExplicitVR;
this.badPrivateSequence = false;
}
this.ResetState();
return false;
}
this.parseStage = ParseStage.Value;
}
return true;
}
示例4: ParseItemSequencePostProcess
private void ParseItemSequencePostProcess(IByteSource source)
{
// end of explicit length sequence
if (source.HasReachedMilestone())
{
source.PopMilestone();
}
this.observer.OnEndSequence();
if (this.badPrivateSequence)
{
this.isExplicitVR = !this.isExplicitVR;
this.badPrivateSequence = false;
}
}
示例5: ParseItemSequenceAsync
private async Task ParseItemSequenceAsync(IByteSource source)
{
this.result = DicomReaderResult.Processing;
while (!source.IsEOF && !source.HasReachedMilestone())
{
if (!this.ParseItemSequenceTag(source)) return;
if (!await this.ParseItemSequenceValueAsync(source).ConfigureAwait(false)) return;
}
this.ParseItemSequencePostProcess(source);
}
示例6: ParseItemSequence
private void ParseItemSequence(IByteSource source)
{
this.result = DicomReaderResult.Processing;
while (!source.IsEOF && !source.HasReachedMilestone())
{
if (!this.ParseItemSequenceTag(source)) return;
if (!this.ParseItemSequenceValue(source)) return;
}
this.ParseItemSequencePostProcess(source);
}
示例7: ParseDatasetAsync
private async Task ParseDatasetAsync(IByteSource source)
{
this.result = DicomReaderResult.Processing;
while (!source.IsEOF && !source.HasReachedMilestone() && this.result == DicomReaderResult.Processing)
{
if (!this.ParseTag(source)) return;
if (!this.ParseVR(source)) return;
if (!this.ParseLength(source)) return;
if (!await this.ParseValueAsync(source).ConfigureAwait(false)) return;
}
if (source.HasReachedMilestone())
{
// end of explicit length sequence item
source.PopMilestone();
return;
}
if (this.result != DicomReaderResult.Processing) return;
// end of processing
this.result = DicomReaderResult.Success;
}
示例8: ParseDataset
private void ParseDataset(IByteSource source)
{
this.result = DicomReaderResult.Processing;
while (!source.IsEOF && !source.HasReachedMilestone() && this.result == DicomReaderResult.Processing)
{
if (!this.ParseTag(source)) return;
if (!this.ParseVR(source)) return;
if (!this.ParseLength(source)) return;
if (!this.ParseValue(source)) return;
}
if (source.HasReachedMilestone())
{
// end of explicit length sequence item
source.PopMilestone();
return;
}
if (this.result != DicomReaderResult.Processing) return;
// end of processing
this.result = DicomReaderResult.Success;
}
示例9: ParseDataset
private void ParseDataset(IByteSource source)
{
if (this.isDeflated)
{
#if NET35
throw new NotSupportedException("Deflated datasets not supported in Unity.");
#else
source = this.Decompress(source);
#endif
}
this.result = DicomReaderResult.Processing;
while (!source.IsEOF && !source.HasReachedMilestone() && this.result == DicomReaderResult.Processing)
{
if (!this.ParseTag(source)) return;
if (!this.ParseVR(source)) return;
if (!this.ParseLength(source)) return;
if (!this.ParseValue(source)) return;
}
if (source.HasReachedMilestone())
{
// end of explicit length sequence item
source.PopMilestone();
return;
}
if (this.result != DicomReaderResult.Processing) return;
// end of processing
this.result = DicomReaderResult.Success;
}