protected void DeserializeGraphicLayer(GraphicLayerModuleIod module, T image) { GraphicLayerSequenceItem[] layerSequences = module.GraphicLayerSequence; if (layerSequences == null) { return; } SortedDictionary <int, GraphicLayerSequenceItem> orderedSequences = new SortedDictionary <int, GraphicLayerSequenceItem>(); foreach (GraphicLayerSequenceItem sequenceItem in layerSequences) { orderedSequences.Add(sequenceItem.GraphicLayerOrder, sequenceItem); } DicomGraphicsPlane graphic = DicomGraphicsPlane.GetDicomGraphicsPlane(image, true); foreach (GraphicLayerSequenceItem sequenceItem in orderedSequences.Values) { ILayer layer = graphic.Layers[sequenceItem.GraphicLayer]; layer.Description = sequenceItem.GraphicLayerDescription; // we don't support sequenceItem.GraphicLayerRecommendedDisplayCielabValue // we don't support sequenceItem.GraphicLayerRecommendedDisplayGrayscaleValue } }
protected void SerializeGraphicLayer(GraphicLayerModuleIod graphicLayerModule, DicomPresentationImageCollection <T> images) { Dictionary <string, string> layerIndex = new Dictionary <string, string>(); List <GraphicLayerSequenceItem> layerSequences = new List <GraphicLayerSequenceItem>(); int order = 1; foreach (T image in images) { DicomGraphicsPlane psGraphic = DicomGraphicsPlane.GetDicomGraphicsPlane(image, false); if (psGraphic != null) { foreach (ILayer layerGraphic in (IEnumerable <ILayer>)psGraphic.Layers) { // do not serialize the inactive layer, and do not serialize layers more than once if (!string.IsNullOrEmpty(layerGraphic.Id) && !layerIndex.ContainsKey(layerGraphic.Id)) { GraphicLayerSequenceItem layerSequence = new GraphicLayerSequenceItem(); layerSequence.GraphicLayer = layerGraphic.Id.ToUpperInvariant(); layerSequence.GraphicLayerDescription = layerGraphic.Description; layerSequence.GraphicLayerOrder = order++; layerSequence.GraphicLayerRecommendedDisplayCielabValue = null; layerSequence.GraphicLayerRecommendedDisplayGrayscaleValue = null; layerSequences.Add(layerSequence); layerIndex.Add(layerGraphic.Id, null); } } } if (image.OverlayGraphics.Count > 0) { if (!layerIndex.ContainsKey(_annotationsLayerId)) { layerIndex.Add(_annotationsLayerId, null); GraphicLayerSequenceItem layerSequence = new GraphicLayerSequenceItem(); layerSequence.GraphicLayer = _annotationsLayerId; layerSequence.GraphicLayerOrder = order++; layerSequences.Add(layerSequence); break; } } } if (layerSequences.Count > 0) { graphicLayerModule.GraphicLayerSequence = layerSequences.ToArray(); } }