예제 #1
0
 // Methods
 public Film(string id, string format, FilmSize size, FilmOrientation orientation)
 {
     this._id          = id;
     this._format      = format;
     this._size        = size;
     this._orientation = orientation;
 }
 public List<Film> GetFilms()
 {
     if (this._films == null)
     {
         this._films = new List<Film>();
         string filename = string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "Film.xml");
         XmlDocument document = new XmlDocument();
         document.Load(filename);
         foreach (XmlElement element in document.SelectNodes("films/film"))
         {
             if (Convert.ToBoolean(element.GetAttribute("enabled")))
             {
                 string attribute = element.GetAttribute("id");
                 string format = element.GetAttribute("format");
                // FilmSize size = (FilmSize)Enum.Parse(typeof(FilmSize), element.GetAttribute("size"));
                 FilmSize size = FilmSize.FromDicomString(element.GetAttribute("size"));
                  //FilmSize size = FilmSize.Dimension_14in_x_17in;
                 FilmOrientation orientation = (FilmOrientation)Enum.Parse(typeof(FilmOrientation), element.GetAttribute("orientation"));
                 Film item = new Film(attribute, format, size, orientation);
                 this._films.Add(item);
             }
         }
     }
     return this._films;
 }
예제 #3
0
 public void Add(FilmOrientation filmOrientation)
 {
     if (filmOrientation != FilmOrientation.None)
     {
         this.FilmOrientationList.Add(filmOrientation);
     }
 }
        public void Layout(FilmSize filmSize, FilmOrientation filmOrientation)
        {
            float w = 1;
            float h = 1;

            if (filmSize != null)
            {
                if (filmOrientation == FilmOrientation.Landscape) //horizontal film position
                {
                    h = filmSize.GetWidth(FilmSize.FilmSizeUnit.Inch);
                    w = filmSize.GetHeight(FilmSize.FilmSizeUnit.Inch);
                }
                else
                {
                    w = filmSize.GetWidth(FilmSize.FilmSizeUnit.Inch);
                    h = filmSize.GetHeight(FilmSize.FilmSizeUnit.Inch);
                }
            }

            RootImageBox                     = new PrintViewImageBox();
            RootImageBox.ImageViewer         = this;
            RootImageBox.NormalizedRectangle = new RectangleF(0, 0, w, h);
            SetTileGrid(ImageDisplayFormat.Standard_1x1);
            //RootImageBox.DisplaySet = new DisplaySet();
        }
        internal PrintImageViewerControl(PrintImageViewerComponent component)
        {
            _component = component;
            InitializeComponent();

            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            _component.Closing                += new EventHandler(OnComponentClosing);
            _component.Drawing                += new EventHandler(OnPhysicalWorkspaceDrawing);
            _component.LayoutCompleted        += new EventHandler(OnLayoutCompleted);
            _component.ScreenRectangleChanged += new EventHandler(OnScreenRectangleChanged);
            _delayedEventPublisher             = new DelayedEventPublisher(OnRecalculateImageBoxes, 50);

            #region ��ӡ������
            printComponent = _component.DicomPrintComponent as DicomPrintComponent;
            if (printComponent != null)
            {
                FilmSize        fileSize        = printComponent.DicomPrinterConfigurationEditorComponent.FilmSize.ToFilmSize();
                FilmOrientation filmOrientation = printComponent.DicomPrinterConfigurationEditorComponent.FilmOrientation;
                _component.Layout(fileSize, filmOrientation);

                this.Load += Loaded;
            }

            #endregion

            #region �˵��͹�����

            this.ToolbarModel     = _component.ToolbarModel;
            this.ContextMenuModel = component.ContextMenuModel;

            #endregion

            FilmCount.DataBindings.Add("Text", _component, "FilmCount", true, DataSourceUpdateMode.OnPropertyChanged);
            ImageCount.DataBindings.Add("Text", _component, "ImageCount", true, DataSourceUpdateMode.OnPropertyChanged);
        }
        private void ImageBoxSizeChanged()
        {
            FilmSize fileSize =
                printComponent.DicomPrinterConfigurationEditorComponent.FilmSize.ToFilmSize();
            FilmOrientation filmOrientation =
                printComponent.DicomPrinterConfigurationEditorComponent.FilmOrientation;

            _component.ImageBoxSizeChanged(fileSize, filmOrientation);
        }
예제 #7
0
 private Point CalculateLocation(FilmOrientation Status, double size)
 {
     if (Status == FilmOrientation.Portrait)
     {
         this._portraitPoint = new Point(Convert.ToInt32(Math.Round((double)((((double)this.panPrewControl.Width) / 2.0) - (size / 2.0)), 0)), 0);
         return(this._portraitPoint);
     }
     this._landscapePoint = new Point(0, Convert.ToInt32(Math.Round((double)((((double)this.panPrewControl.Height) / 2.0) - (size / 2.0)), 0)));
     return(this._landscapePoint);
 }
예제 #8
0
 // Methods
 public PrintJob(int id, PreviewTileCollection images, string format, FilmSize size, FilmOrientation orien, int copies, Printer printer)
 {
     this._id        = id;
     this._images    = images;
     this._format    = format;
     this._filmSize  = size;
     this._filmOrien = orien;
     this._copies    = copies;
     this._printer   = printer;
 }
예제 #9
0
 public FilmBox(PrinterImageDisplayFormat imageDisplayFormat, FilmOrientation filmOrientation, BorderDensity borderDensity, EmptyImageDensity emptyImageDensity, MagnificationType magnificationType, PrinterFilmSize filmSize, AutomaticFilmSizeConfiguration automaticFilmSizeConfiguration, string configurationInformation, RequestedResolution requestedResolution)
 {
     _imageDisplayFormat             = imageDisplayFormat;
     _filmOrientation                = filmOrientation;
     _borderDensity                  = borderDensity;
     _emptyImageDensity              = emptyImageDensity;
     _magnificationType              = magnificationType;
     _filmSize                       = filmSize;
     _automaticFilmSizeConfiguration = automaticFilmSizeConfiguration;
     _configurationInformation       = configurationInformation;
     _requestedResolution            = requestedResolution;
 }
예제 #10
0
 public FilmBox()
 {
     _imageDisplayFormat             = PrinterImageDisplayFormat.Default;
     _filmOrientation                = FilmOrientation.Portrait;
     _borderDensity                  = BorderDensity.None;
     _emptyImageDensity              = EmptyImageDensity.None;
     _magnificationType              = MagnificationType.None;
     _filmSize                       = PrinterFilmSize.Default;
     _automaticFilmSizeConfiguration = new AutomaticFilmSizeConfiguration();
     _configurationInformation       = null;
     _requestedResolution            = RequestedResolution.Standard;
 }
예제 #11
0
        public static string ToStringEx(this FilmOrientation self)
        {
            switch (self)
            {
            case FilmOrientation.Portrait:
                return("PORTRAIT");

            case FilmOrientation.Landscape:
                return("LANDSCAPE");

            default:
                return("PORTRAIT");
            }
        }
예제 #12
0
        private static string ConvertFilmOrientation(FilmOrientation filmOrientation)
        {
            switch (filmOrientation)
            {
            case FilmOrientation.Portrait:
                return(SR.LabelFilmOrientationPortrait);

            case FilmOrientation.Landscape:
                return(SR.LabelFilmOrientationLandscape);

            default:
                return(filmOrientation.ToString());
            }
        }
예제 #13
0
        private void UpdatePrinterControl(FilmOrientation orientation, double filmRatio)
        {
            Size size;
            int  width = Convert.ToInt32((double)(this.panPrewControl.Height * filmRatio));

            if (orientation == FilmOrientation.Portrait)
            {
                size = new Size(width, this.panPrewControl.Height);
            }
            else
            {
                size = new Size(this.panPrewControl.Width, width);
            }
            this.printPreviewControl1.Size     = size;
            this.printPreviewControl1.Location = this.CalculateLocation(orientation, (double)width);
        }
예제 #14
0
        public static Size FilmBoxSize(FilmSize filmSizeId, int filmDPI, FilmOrientation filmOrientation)
        {
            if (filmSizeId == null)
            {
                return(Size.Empty);
            }

            var physicalWidthInInches  = filmSizeId.GetWidth(FilmSize.FilmSizeUnit.Inch);
            var physicalHeightInInches = filmSizeId.GetHeight(FilmSize.FilmSizeUnit.Inch);

            var width  = (int)Math.Ceiling(physicalWidthInInches * filmDPI);
            var height = (int)Math.Ceiling(physicalHeightInInches * filmDPI);

            return(filmOrientation == FilmOrientation.Landscape
                ? new Size(height, width)
                : new Size(width, height)); // default portrait, even if the value is None
        }
        private void DicomPrintTable_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (DicomPrintTable.SelectedItem != null)
            {
                string key = (string)DicomPrintTable.SelectedItem;
                if (dicomPrintList.ContainsKey(key))
                {
                    printComponent.SelectedItem = new Selection(dicomPrintList[key]);
                }

                FilmSize        fileSize        = printComponent.DicomPrinterConfigurationEditorComponent.FilmSize.ToFilmSize();
                FilmOrientation filmOrientation = printComponent.DicomPrinterConfigurationEditorComponent.FilmOrientation;

                if (_component.RootImageBox != null)
                {
                    _component.ImageBoxSizeChanged(fileSize, filmOrientation);
                }

                if (filmOrientation == FilmOrientation.Landscape)
                {
                    radioHengXiang.Checked = true;
                }
                else if (filmOrientation == FilmOrientation.Portrait)
                {
                    radioZongXiang.Checked = true;
                }


                this.NumberOfCopies.DataBindings.Clear();
                this.NumberOfCopies.DataBindings.Add("Value", printComponent.DicomPrinterConfigurationEditorComponent,
                                                     "NumberOfCopies", true,
                                                     DataSourceUpdateMode.OnPropertyChanged);

                this.FilmSizeComBox.DataBindings.Clear();
                this.FilmSizeComBox.DataSource = printComponent.DicomPrinterConfigurationEditorComponent.FilmSizeChoices;
                this.FilmSizeComBox.DataBindings.Add("SelectedItem",
                                                     printComponent.DicomPrinterConfigurationEditorComponent, "FilmSize",
                                                     true,
                                                     DataSourceUpdateMode.Never);
            }
        }
예제 #16
0
        private void DoImageProcess(object state)
        {
            FilmSize         filmsize         = DicomPrinter.Config.FilmBox.FilmSize.ToFilmSize();
            int              filmDpi          = DicomPrinter.Config.StandardResolutionDPI;
            FilmOrientation  filmOrientation  = DicomPrinter.Config.FilmBox.FilmOrientation;
            PresentationMode presentationMode = DicomPrinter.Config.PresentationMode;
            ColorMode        colorMode        = this.DicomPrinter.Config.ColorMode;

            List <IPresentationImage> presentationImage =
                MergerDicomImageToBitmap.Merger(filmsize,
                                                filmDpi,
                                                filmOrientation,
                                                _selectPresentationsInformations,
                                                presentationMode,
                                                colorMode,
                                                _tileCount);

            _studyInstanceUid = new List <string>();
            foreach (var selectPresentationsInformation in _selectPresentationsInformations)
            {
                IImageSopProvider image = (IImageSopProvider)selectPresentationsInformation.Image;
                if (image != null && !_studyInstanceUid.Contains(image.Sop.StudyInstanceUid))
                {
                    _studyInstanceUid.Add(image.Sop.StudyInstanceUid);
                }
                selectPresentationsInformation.Dispose();
            }
            _selectPresentationsInformations.Clear();

            foreach (var image in presentationImage)
            {
                var       frame  = ((IImageSopProvider)image).Frame;
                Rectangle client = new Rectangle(0, 0, frame.Columns, frame.Rows);
                _selectPresentationsInformations.Add(new SelectPresentionInformation(image, client));
            }

            DicomPrinter.Config.FilmBox.ImageDisplayFormat = new PrinterImageDisplayFormat()
            {
                Value = @"STANDARD\1,1"
            };
        }
        //// Events
        //public event EventHandler ActionChanged
        //{
        //    add
        //    {
        //        this._window.MenuModelUpdated += value;
        //    }
        //    remove
        //    {
        //        this._window.MenuModelUpdated -= value;
        //    }
        //}

        //public event EventHandler MenuModelUpdated
        //{
        //    add
        //    {
        //        this._window.MenuModelUpdated += value;
        //    }
        //    remove
        //    {
        //        this._window.MenuModelUpdated -= value;
        //    }
        //}

        // Methods
        public PrintToolComponent(IDesktopWindow window)
        {
            EventHandler handler = null;
            this._lastFilmOrientation =  FilmOrientation.Portrait;
            this._numberOfCopies = 1M;
            this.printListKey = 1;
            this._window = window;
            this.provider = PrinterProviderFactory.CreateProvider();
            this._printerList = this.provider.GetPrinterCollection();
            this._printerList.ActiveChanged += handler;

            foreach (Printer printer in this._printerList)
            {
                if (printer.Selected)
                {
                    this._selectedPrinter = printer;
                    this._currentPrinter = printer.PrinterName;
                    break;
                }
            }
            this._lastFilmSize =  FilmSize.Dimension_8in_x_10in;
            this._printJobManager = new PrintJobManager(this._window, this);
        }
        public void ImageBoxSizeChanged(FilmSize filmSize, FilmOrientation filmOrientation)
        {
            float w = 1;
            float h = 1;

            if (filmSize != null)
            {
                if (filmOrientation == FilmOrientation.Landscape) //horizontal film position
                {
                    h = filmSize.GetWidth(FilmSize.FilmSizeUnit.Inch);
                    w = filmSize.GetHeight(FilmSize.FilmSizeUnit.Inch);
                }
                else
                {
                    w = filmSize.GetWidth(FilmSize.FilmSizeUnit.Inch);
                    h = filmSize.GetHeight(FilmSize.FilmSizeUnit.Inch);
                }
            }

            RootImageBox.NormalizedRectangle = new RectangleF(0, 0, w, h);
            EventsHelper.Fire(_layoutCompletedEvent, this, EventArgs.Empty);
            this.RootImageBox.Draw();
        }
예제 #19
0
 // Methods
 public OrientationArgs(FilmOrientation key, double filmRatio)
 {
     this._key       = key;
     this._filmRatio = filmRatio;
 }
        private void Loaded(object sender, EventArgs e)
        {
            if (printComponent == null)
            {
                return;
            }

            FilmSize        fileSize        = printComponent.DicomPrinterConfigurationEditorComponent.FilmSize.ToFilmSize();
            FilmOrientation filmOrientation = printComponent.DicomPrinterConfigurationEditorComponent.FilmOrientation;

            if (_component.RootImageBox != null)
            {
                _component.ImageBoxSizeChanged(fileSize, filmOrientation);
            }

            if (filmOrientation == FilmOrientation.Landscape)
            {
                radioHengXiang.Checked = true;
            }
            else if (filmOrientation == FilmOrientation.Portrait)
            {
                radioZongXiang.Checked = true;
            }


            this.NumberOfCopies.DataBindings.Clear();
            this.NumberOfCopies.DataBindings.Add("Value", printComponent.DicomPrinterConfigurationEditorComponent,
                                                 "NumberOfCopies", true,
                                                 DataSourceUpdateMode.OnPropertyChanged);

            this.FilmSizeComBox.DataBindings.Clear();
            this.FilmSizeComBox.DataSource = printComponent.DicomPrinterConfigurationEditorComponent.FilmSizeChoices;
            this.FilmSizeComBox.DataBindings.Add("SelectedItem",
                                                 printComponent.DicomPrinterConfigurationEditorComponent, "FilmSize",
                                                 true,
                                                 DataSourceUpdateMode.Never);

            InitDicomPrintTable();

            ISelection selectedItem = printComponent.SelectedItem;

            if (selectedItem == null || selectedItem.Item == null)
            {
                return;
            }

            var print = (Checkable <DicomPrinter>)selectedItem.Item;

            foreach (object item in DicomPrintTable.Items)
            {
                var name = (string)item;
                if (name == null)
                {
                    continue;
                }

                if (name == print.Item.Name)
                {
                    DicomPrintTable.SelectedItem = item;
                    break;
                }
            }
            printComponent.DicomPrinterConfigurationEditorComponent.ImageDisplayFormat = new PrinterImageDisplayFormat()
            {
                Value = displayFormat.DicomString
            };;
        }
예제 #21
0
        public static List <IPresentationImage> Merger(FilmSize filmSizeId,
                                                       int filmDPI,
                                                       FilmOrientation filmOrientation,
                                                       List <ISelectPresentationsInformation> selects,
                                                       PresentationMode presentationMode,
                                                       ColorMode colorMode,
                                                       int tileCount)
        {
            if (selects.Count == 0)
            {
                return(null);
            }

            List <IPresentationImage> results = new List <IPresentationImage>();

            Size filmSize = CaclFilmAndImageSize.FilmBoxSize(filmSizeId, filmDPI, filmOrientation);

            if (filmSize == Size.Empty)
            {
                return(null);
            }

            Bitmap result = null;

            System.Drawing.Graphics graphics = null;
            string savePath = null;

            foreach (var temp in selects)
            {
                var imageSopProvider = temp.Image as IImageSopProvider;
                if (imageSopProvider == null)
                {
                    continue;
                }

                var localSource = imageSopProvider.ImageSop.DataSource as ILocalSopDataSource;
                if (localSource != null)
                {
                    int index = localSource.Filename.LastIndexOf("\\");
                    savePath = localSource.Filename.Substring(0, index);
                    break;
                }
            }

            for (int i = 0; i < selects.Count; i++)
            {
                var select = selects[i];
                if (i != 0 && i % tileCount == 0) //翻页时进入此处
                {
                    IPresentationImage presentationImage = CreateResultImage(result, colorMode, savePath);
                    graphics.Dispose();
                    results.Add(presentationImage);
                    result.Dispose();
                    result = null;
                }

                if (result == null)
                {
                    result   = new Bitmap(filmSize.Width, filmSize.Height);
                    graphics = System.Drawing.Graphics.FromImage(result);
                }

                Point  location;
                Size   imageBoxSize = CaclFilmAndImageSize.ImageBoxSize(filmSize, out location, select.NormalizedRectangle);
                Bitmap bitmap       = GetPrintImageBitmap(select, imageBoxSize, presentationMode);
                if (bitmap == null)
                {
                    continue;
                }
                System.Drawing.Graphics borderGraphics = System.Drawing.Graphics.FromImage(bitmap);
                Platform.Log(LogLevel.Debug, new Size(bitmap.Width, bitmap.Height));
                borderGraphics.DrawRectangle(new Pen(Color.White, 2), 0, 0, bitmap.Width, bitmap.Height);
                graphics.DrawImageUnscaled(bitmap, location.X, location.Y);
                bitmap.Dispose();
                borderGraphics.Dispose();
            }

            var image = CreateResultImage(result, colorMode, savePath);

            graphics.Dispose();
            results.Add(image);
            result.Dispose();
            return(results);
        }