internal static PolygonalRoiSegGraphic GraphicToISegGraphic(IGraphic graphic)
        {
            if (!GraphicIsUsable(graphic))
            {
                return(null);
            }

            PolygonalRoiSegGraphic segGraphic = null;
            var roiGraphic = graphic as RoiGraphic;

            if (roiGraphic != null)
            {
                if (roiGraphic.Roi is PolygonalRoi)
                {
                    segGraphic = new PolygonalRoiSegGraphic
                    {
                        PolygonalRoiGraphic = roiGraphic,
                        Label = roiGraphic.Name
                    };
                }
            }

            if (segGraphic != null)
            {
                string sopInstanceUid = String.Empty;
                int    frameNumber    = 1;
                int    imageNumber    = 1;

                try
                {
                    if (graphic.ParentPresentationImage is IImageSopProvider)
                    {
                        var imageSopProvider = graphic.ParentPresentationImage as IImageSopProvider;
                        imageNumber    = imageSopProvider.ImageSop.InstanceNumber;
                        sopInstanceUid = imageSopProvider.Sop.SopInstanceUid;
                        frameNumber    = imageSopProvider.Frame.FrameNumber;
                    }
                    else if (!string.IsNullOrEmpty(graphic.ParentPresentationImage.Uid))
                    {
                        sopInstanceUid = graphic.ParentPresentationImage.Uid;
                    }
                }
                catch (Exception)
                {
                }
                segGraphic.ImageSopInstanceUid = sopInstanceUid;
                segGraphic.ImageFrameNumber    = frameNumber;
                segGraphic.ImageNumber         = imageNumber;
            }

            return(segGraphic);
        }
        internal static PolygonalRoiSegGraphic GraphicToISegGraphic(IGraphic graphic)
        {
            if (!GraphicIsUsable(graphic))
                return null;

            PolygonalRoiSegGraphic segGraphic = null;
            var roiGraphic = graphic as RoiGraphic;
            if (roiGraphic != null)
            {
                if (roiGraphic.Roi is PolygonalRoi)
                {
                    segGraphic = new PolygonalRoiSegGraphic
                                     {
                                         PolygonalRoiGraphic = roiGraphic,
                                         Label = roiGraphic.Name
                                     };
                }
            }

            if (segGraphic != null)
            {
                string sopInstanceUid = String.Empty;
                int frameNumber = 1;
                int imageNumber = 1;

                try
                {
                    if (graphic.ParentPresentationImage is IImageSopProvider)
                    {
                        var imageSopProvider = graphic.ParentPresentationImage as IImageSopProvider;
                        imageNumber = imageSopProvider.ImageSop.InstanceNumber;
                        sopInstanceUid = imageSopProvider.Sop.SopInstanceUid;
                        frameNumber = imageSopProvider.Frame.FrameNumber;
                    }
                    else if (!string.IsNullOrEmpty(graphic.ParentPresentationImage.Uid))
                        sopInstanceUid = graphic.ParentPresentationImage.Uid;
                }
                catch (Exception)
                {
                }
                segGraphic.ImageSopInstanceUid = sopInstanceUid;
                segGraphic.ImageFrameNumber = frameNumber;
                segGraphic.ImageNumber = imageNumber;
            }

            return segGraphic;
        }