// Methods
 public PrintItem(ISelectPresentationsInformation selectPresentation, CultureInfo cultureInfo)
 {
     _rectangle         = selectPresentation.DisplayRectangle;
     _mode              = selectPresentation.PresentationMode;
     _presentationImage = selectPresentation.Image;
     _exportOption      = DicomPrintSession.GetPresentationMode(_mode);
     _cultureInfo       = cultureInfo;
 }
Example #2
0
        private static SizeF GetPresentationImageSizeF(ISelectPresentationsInformation selectPresentation, int size)
        {
            //1英寸等于25.4毫米
            float num = 25.4f / ((float)size);
            IPresentationImage image1 = selectPresentation.Image;
            Frame frame = ((IImageSopProvider)image1).Frame;

            switch (selectPresentation.PresentationMode)
            {
            case PresentationMode.Wysiwyg:
            {
                Rectangle rectangle  = selectPresentation.DisplayRectangle;
                int       width      = rectangle.Width;
                Rectangle rectangle2 = selectPresentation.DisplayRectangle;
                int       height     = rectangle2.Height;
                return(new SizeF(width * num, height * num));
            }

            case PresentationMode.CompleteImage:
            {
                int columns = frame.Columns;
                return(new SizeF(columns * num, frame.Rows * num));
            }

            case PresentationMode.TrueSize:
            {
                int num1 = frame.Columns;
                NormalizedPixelSpacing normalizedPixelSpacing = frame.NormalizedPixelSpacing;
                int rows = frame.Rows;
                NormalizedPixelSpacing spacing2     = frame.NormalizedPixelSpacing;
                double             row              = spacing2.Row;
                SizeF              ef               = new SizeF((float)(num1 * normalizedPixelSpacing.Column), (float)(rows * row));
                IPresentationImage image2           = selectPresentation.Image;
                ISpatialTransform  spatialTransform = ((ISpatialTransformProvider)image2).SpatialTransform;
                if (((spatialTransform.RotationXY / 90) % 2) == 1)
                {
                    float single1 = ef.Height;
                    ef = new SizeF(single1, ef.Width);
                }
                return(ef);
            }
            }
            return(SizeF.Empty);
        }
        internal static PrintScu.FilmSession GetFilmSession(SelectPresentationsInformationsCollection selects, DicomPrinter.Configuration config)
        {
            FilmBoxConfig fileBoxConfig = new FilmBoxConfig
            {
                config = config
            };

            List <PrintScu.IPrintItem> printItems = new List <PrintScu.IPrintItem>();

            using (IEnumerator <ISelectPresentationsInformation> enumerator = selects.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    ISelectPresentationsInformation presentationsInformation = enumerator.Current;
                    IImageSopProvider imageSopProvider = (IImageSopProvider)presentationsInformation.Image;
                    if (imageSopProvider != null)
                    {
                        printItems.Add(new DicomPrintItem(imageSopProvider.ImageSop));
                    }
                }
            }

            PrintScu.FilmSession session = new PrintScu.FilmSession(printItems, new PrintScu.CreateFilmBoxDelegate(fileBoxConfig.GetFilmBox));
            if (fileBoxConfig.config.Session.FilmDestination != FilmDestination.None)
            {
                session.FilmDestination = fileBoxConfig.config.Session.FilmDestination;
            }

            if (fileBoxConfig.config.Session.PrintPriority != PrintPriority.None)
            {
                session.PrintPriority = fileBoxConfig.config.Session.PrintPriority;
            }

            if (fileBoxConfig.config.Session.MediumType != MediumType.None)
            {
                session.MediumType = fileBoxConfig.config.Session.MediumType;
            }
            session.NumberOfCopies = fileBoxConfig.config.Session.NumberOfCopies;

            return(session);
        }
 public static bool IsHaveModalityPixelSpacing(DicomPrinter.Configuration config, IEnumerable <ISelectPresentationsInformation> collection, out string OutMessage)
 {
     OutMessage = null;
     if (config.PresentationMode == PresentationMode.TrueSize)
     {
         using (IEnumerator <ISelectPresentationsInformation> enumerator = collection.GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 ISelectPresentationsInformation selectinfo = enumerator.Current;
                 IPresentationImage     image1  = selectinfo.Image;
                 NormalizedPixelSpacing spacing = ((IImageSopProvider)image1).Frame.NormalizedPixelSpacing;
                 if ((spacing == null) || spacing.IsNull)
                 {
                     OutMessage = "NormalizedPixelSpacing为空";
                     return(false);
                 }
             }
         }
     }
     return(true);
 }
        internal static AuditedInstances GetAuditedInstances(IEnumerable <ISelectPresentationsInformation> collection)
        {
            AuditedInstances instances = new AuditedInstances();
            IEnumerator <ISelectPresentationsInformation> enumerator1 = collection.GetEnumerator();

            using (IEnumerator <ISelectPresentationsInformation> enumerator = enumerator1)
            {
                while (enumerator.MoveNext())
                {
                    ISelectPresentationsInformation selectitem = enumerator.Current;
                    IPresentationImage image    = selectitem.Image;
                    IImageSopProvider  provider = image as IImageSopProvider;
                    if (provider != null)
                    {
                        ImageSop   imageSop         = provider.ImageSop;
                        PersonName patientsName     = imageSop.PatientsName;
                        string     studyInstanceUid = imageSop.StudyInstanceUid;
                        instances.AddInstance(imageSop.PatientId, patientsName.ToString(), studyInstanceUid);
                    }
                }
            }
            return(instances);
        }
Example #6
0
        private static Bitmap GetPrintImageBitmap(ISelectPresentationsInformation presentationsInformation, Size outputSize, PresentationMode presentationMode)
        {
            presentationsInformation.PresentationMode = presentationMode;
            var currentUiCulture = Thread.CurrentThread.CurrentUICulture;
            var printItem        = new PrintItem(presentationsInformation, currentUiCulture);
            var exportImageItem  = new PrintItem.ExportImageItem
            {
                printItem = printItem
            };

            float scale             = ScaleToFit(printItem.DisplayRectangle.Size, outputSize);
            var   exportImageParams = new ExportImageParams();

            exportImageParams.Dpi              = 96;
            exportImageParams.SizeMode         = SizeMode.ScaleToFit;
            exportImageParams.DisplayRectangle = new Rectangle(0, 0, (int)(outputSize.Width / scale), (int)(outputSize.Height / scale));
            exportImageParams.OutputSize       = outputSize;
            exportImageParams.ExportOption     = ExportOption.Wysiwyg;
            exportImageItem.exportImageParams  = exportImageParams;

            exportImageItem.bitmap = null;
            MemoryManager.Execute(exportImageItem.ExportImage);
            return(exportImageItem.bitmap);
        }
Example #7
0
        public static FilmConfigInformation GetFilmInformation(AutomaticFilmSizeConfiguration config, ISelectPresentationsInformation selectPresentation, int sizef)
        {
            List <FilmConfigInformation> list = new List <FilmConfigInformation>();
            float num  = 0f;
            float num2 = 0f;
            float num3 = 0f;
            float num4 = 0f;

            if (config != null)
            {
                num  = config.LeftMargin;
                num2 = config.RightMargin;
                num3 = config.TopMargin;
                num4 = config.BottomMargin;
                if (config.FilmSizes != null)
                {
                    IEnumerable <FilmConfigInformation> collection = FilmConfigInformation.FilmConfigInformationEnumerable(config.FilmSizes);
                    list.AddRange(collection);
                }
            }
            if (list.Count == 1)
            {
                return(list[0]);
            }
            if (list.Count == 0)
            {
                IEnumerable <FilmConfigInformation> enumerable2 = FilmConfigInformation.FilmConfigInformationEnumerable(Macro.Dicom.Iod.Modules.FilmSize.StandardFilmSizes);
                list.AddRange(enumerable2);
            }
            try
            {
                SizeF ef1 = FilmConfigInformation.GetPresentationImageSizeF(selectPresentation, sizef);
                SizeF a   = ef1 + new SizeF(num + num2, num3 + num4);
                FilmConfigInformation filmInfo = list[0];
                SizeF size = filmInfo.FilmSizeF;
                float num5 = FilmConfigInformation.verificationPresentationImageSizeF(a, size);
                for (int i = 1; i < list.Count; i++)
                {
                    FilmConfigInformation local3 = list[i];
                    float num7 = FilmConfigInformation.verificationPresentationImageSizeF(a, local3.FilmSizeF);
                    if (num7 < num5)
                    {
                        num5     = num7;
                        filmInfo = list[i];
                    }
                }
                return(filmInfo);
            }
            catch (Exception exception)
            {
                string message = exception.Message;
                Platform.Log(Macro.Common.LogLevel.Warn, exception, message, new object[0]);
                return(list[0]);
            }
        }