コード例 #1
0
        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
            }
        }
コード例 #2
0
        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();
            }
        }