/// <summary>
        /// Runs the actual exporter
        /// </summary>
        /// <param name="settings">Export settings</param>
        private void RunExport(ImageExportSettings settings)
        {
            ICollection <Sector> sectors = General.Map.Map.SelectedSectorsCount == 0 ? General.Map.Map.Sectors : General.Map.Map.GetSelectedSectors(true);

            ImageExporter exporter = new ImageExporter(sectors, settings, AddProgress, ShowPhase, CheckCancelExport);

            try
            {
                exporter.Export();
            }
            catch (ArgumentException)             // Happens if there's not enough consecutive memory to create the file
            {
                StopExport(ImageExportResult.OutOfMemory);
                return;
            }
            catch (ImageExportCanceledException)
            {
                StopExport(ImageExportResult.Canceled);
                return;
            }
            catch (ImageExportImageTooBigException)
            {
                StopExport(ImageExportResult.ImageTooBig);
                return;
            }

            StopExport(ImageExportResult.OK);
        }
        private void ExportToImage()
        {
            // Convert geometry selection to sectors
            General.Map.Map.ConvertSelection(SelectionType.Sectors);

            // Get sectors
            ICollection <Sector> sectors = General.Map.Map.SelectedSectorsCount == 0 ? General.Map.Map.Sectors : General.Map.Map.GetSelectedSectors(true);

            if (sectors.Count == 0)
            {
                General.Interface.DisplayStatus(StatusType.Warning, "Image export failed. Map has no sectors!");
                return;
            }

            ImageExportSettingsForm form = new ImageExportSettingsForm();

            if (form.ShowDialog() == DialogResult.OK)
            {
                ImageExportSettings settings = new ImageExportSettings(Path.GetDirectoryName(form.FilePath), Path.GetFileNameWithoutExtension(form.FilePath), Path.GetExtension(form.FilePath), form.Floor, form.Fullbright, form.Brightmap, form.Tiles, form.GetPixelFormat(), form.GetImageFormat());
                ImageExporter       exporter = new ImageExporter(sectors, settings);

                string text = "The following images will be created:\n\n" + string.Join("\n", exporter.GetImageNames());

                DialogResult result = MessageBox.Show(text, "Export to image", MessageBoxButtons.OKCancel);

                if (result == DialogResult.OK)
                {
                    try
                    {
                        exporter.Export();

                        MessageBox.Show("Export successful.", "Export to image", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch (ArgumentException e)                     // Happens if there's not enough consecutive memory to create the file
                    {
                        MessageBox.Show("Exporting failed. There's likely not enough consecutive free memory to create the image. Try a lower color depth or file format", "Export failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
示例#3
0
        private MapInfo CreateMapInfoFromControls()
        {
            MapInfo mapInfo     = new MapInfo();
            var     selectedMap = map.SelectedValue as MapInfo;

            if (selectedMap != null)
            {
                mapInfo.ID = selectedMap.ID;
            }
            mapInfo.Date = date.Value.ToUniversalTime();
            var selectedCategory = category.SelectedItem as Category;

            if (selectedCategory != null)
            {
                mapInfo.CategoryID = selectedCategory.ID;
            }
            mapInfo.Name                  = name.Text;
            mapInfo.MapName               = mapName.Text;
            mapInfo.Organiser             = organiser.Text;
            mapInfo.Country               = country.Text;
            mapInfo.Discipline            = type.Text;
            mapInfo.RelayLeg              = relayLeg.Text;
            mapInfo.ResultListUrl         = resultListUrl.Text;
            mapInfo.Comment               = comment.Text;
            mapInfo.MapImageFileExtension = imageFormat.Text;

            IMapImageFileExporterDialog selector = null;

            switch (imageFormat.Text)
            {
            case "jpg":
                selector = new JpegPropertySelector
                {
                    SizeCalculator = document.CalculateImageForExportSize
                };
                break;

            case "png":
            default:
                selector = new PngPropertySelector
                {
                    SizeCalculator = document.CalculateImageForExportSize
                };
                break;
                //case "tiff":
                //  selector = new TiffPropertySelector
                //  {
                //    SizeCalculator = document.CalculateImageForExportSize
                //  };

                //  break;
            }

            if (selector.ShowPropertyDialog() == DialogResult.OK)
            {
                Application.DoEvents();

                // map image
                using (var ms = new MemoryStream())
                {
                    var imageExporterProperties = new ImageExporterProperties()
                    {
                        EncodingInfo                  = selector.EncodingInfo,
                        RouteDrawingMode              = Document.RouteDrawingMode.Extended,
                        ColorCodingAttribute          = colorCodingAttribute,
                        SecondaryColorCodingAttribute = secondaryColorCodingAttribute,
                        PercentualSize                = selector.PercentualImageSize,
                        ColorRangeProperties          = colorRangeProperties
                    };
                    var imageExporter = new ImageExporter(document, document.Sessions, ms)
                    {
                        Properties = imageExporterProperties
                    };
                    imageExporter.Export();
                    mapInfo.MapImageData = ms.ToArray();
                }

                // blank map image
                using (var ms = new MemoryStream())
                {
                    var imageExporterProperties = new ImageExporterProperties()
                    {
                        EncodingInfo     = selector.EncodingInfo,
                        RouteDrawingMode = Document.RouteDrawingMode.None,
                        PercentualSize   = selector.PercentualImageSize
                    };
                    var blankImageExporter = new ImageExporter(document, document.Sessions, ms)
                    {
                        Properties = imageExporterProperties
                    };
                    blankImageExporter.Export();
                    mapInfo.BlankMapImageData = ms.ToArray();
                }
                return(mapInfo);
            }
            return(null);
        }