public void PdfCreation4()
        {
            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory    = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("controller\\pdf_create4");
            settings.CourseIds       = new Id <Course>[1] {
                CourseId(2)
            };
            settings.ColorModel         = ColorModel.RGB;
            settings.CropLargePrintArea = true;
            settings.FileCreation       = CoursePdfSettings.PdfFileCreation.FilePerCourse;

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = true;

            Directory.CreateDirectory(settings.outputDirectory);

            CreatePdfFiles(TestUtil.GetTestFile("controller\\marymoor4.ppen"), settings, appearance,
                           new string[1] {
                TestUtil.GetTestFile("controller\\pdf_create4\\Course 2.pdf")
            },
                           new string[1] {
                TestUtil.GetTestFile("controller\\pdf_create4\\Course 2_expected.png")
            });
        }
        public void PdfCreation2()
        {
            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory              = settings.fileDirectory = false;
            settings.outputDirectory           = TestUtil.GetTestFile("controller\\pdf_create2");
            settings.CourseIds                 = new Id <Course>[] { CourseId(1), CourseId(2), CourseId(0) };
            settings.ColorModel                = ColorModel.RGB;
            settings.CropLargePrintArea        = false;
            settings.FileCreation              = CoursePdfSettings.PdfFileCreation.FilePerCourse;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();

            appearance.controlCircleSize  = 0.75F; //smaller circles
            appearance.lineWidth          = 3F;    // thin lines
            appearance.numberHeight       = 0.5F;  // small numbers.
            appearance.numberBold         = true;  // bold numbers.
            appearance.numberOutlineWidth = 0.13F;
            appearance.useDefaultPurple   = false;
            appearance.purpleColorBlend   = true;
            appearance.autoLegGapSize     = 0.0F;
            appearance.purpleC            = 0.32F;
            appearance.purpleY            = 1.00F;
            appearance.purpleM            = 0;
            appearance.purpleK            = 0.30F;

            settings.CourseIds = new Id <Course>[] { CourseId(1), CourseId(2), CourseId(0) };

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\marymoor.ppen"), settings, appearance,
                           new string[] { TestUtil.GetTestFile("controller\\pdf_create2\\Course 1.pdf"), TestUtil.GetTestFile("controller\\pdf_create2\\Course 2.pdf"), TestUtil.GetTestFile("controller\\pdf_create2\\All controls.pdf") },
                           new string[] { TestUtil.GetTestFile("controller\\pdf_create2\\test2_course1_page%d_baseline.png"), TestUtil.GetTestFile("controller\\pdf_create2\\test2_course2_page%d_baseline.png"), TestUtil.GetTestFile("controller\\pdf_create2\\test2_allcontrols_page%d_baseline.png") });
        }
        public void PdfCreationPdfBaseMap2()
        {
            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory       = settings.fileDirectory = false;
            settings.outputDirectory    = TestUtil.GetTestFile("pdfcourse\\pdf_create9");
            settings.CourseIds          = new Id <Course>[] { CourseId(0), CourseId(1), CourseId(2), CourseId(3) };
            settings.ColorModel         = ColorModel.CMYK;
            settings.CropLargePrintArea = true;
            settings.FileCreation       = CoursePdfSettings.PdfFileCreation.FilePerCourse;

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("pdfcourse\\St Pauls Week 4.ppen"), settings, appearance,
                           new string[] { TestUtil.GetTestFile("pdfcourse\\pdf_create9\\All Controls.pdf"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create9\\Short.pdf"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create9\\Medium.pdf"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create9\\Long.pdf") },
                           new string[] { TestUtil.GetTestFile("pdfcourse\\pdf_create9\\All Controls_expected.png"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create9\\Short_expected.png"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create9\\Medium_expected.png"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create9\\Long_expected.png") });
        }
        public void PdfCreationBitmapBaseMapRGB()
        {
            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory    = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("controller\\pdf_create8");
            settings.CourseIds       = new Id <Course>[1] {
                CourseId(1)
            };
            settings.ColorModel         = ColorModel.RGB;
            settings.CropLargePrintArea = true;
            settings.FileCreation       = CoursePdfSettings.PdfFileCreation.FilePerCourse;

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\Lincoln Park.ppen"), settings, appearance,
                           new string[1] {
                TestUtil.GetTestFile("controller\\pdf_create8\\Short.pdf")
            },
                           new string[1] {
                TestUtil.GetTestFile("controller\\pdf_create8\\Short_expected.png")
            });
        }
Exemple #5
0
        // Format the given CourseView into a bunch of course objects, and add it to the given course Layout
        public RectangleF FormatCourseToLayout(SymbolDB symbolDB, CourseView courseViewAllVariations, CourseView specificVariation, CourseLayout courseLayout,
                                               Id <CourseControl> ccSelection1, Id <CourseControl> ccSelection2, CourseLayer layerAllVariations, CourseLayer layerSpecificVariation)
        {
            this.eventDB      = courseViewAllVariations.EventDB;
            this.symbolDB     = symbolDB;
            this.courseLayout = courseLayout;
            this.courseLayerAllVariationsAndParts  = layerAllVariations;
            this.courseLayerSpecificVariation      = layerSpecificVariation;
            this.controlViewsAllVariationsAndParts = courseViewAllVariations.ControlViews;
            this.controlViewsSpecificVariation     = specificVariation.ControlViews;
            this.controlPositions = new ControlPosition[controlViewsAllVariationsAndParts.Count];
            this.courseControlIdsSpecificVariation = QueryEvent.EnumCourseControlIds(eventDB, specificVariation.CourseDesignator).ToArray();
            this.courseControlIdSelection1         = ccSelection1;
            this.courseControlIdSelection2         = ccSelection2;
            this.variationMap = QueryEvent.GetVariantCodeMapping(eventDB, courseViewAllVariations.CourseDesignator);

            SizeF totalAbstractSize = AssignControlPositions(0, controlViewsAllVariationsAndParts.Count, 0, 0);

            // Now create objects now that the positions have been created.
            courseObjRatio = 1.0F;
            appearance     = new CourseAppearance();

            for (int index = 0; index < controlViewsAllVariationsAndParts.Count; ++index)
            {
                CreateObjectsForControlView(controlViewsAllVariationsAndParts[index], controlPositions[index]);
            }

            PointF     bottomCenter = LocationFromAbstractPosition(0, 0);
            SizeF      size         = SizeFromAbstractSize(totalAbstractSize);
            RectangleF rect         = new RectangleF(bottomCenter.X - size.Width / 2, bottomCenter.Y - size.Height, size.Width, size.Height);

            rect.Inflate(widthUnit, heightUnit);
            return(rect);
        }
        public void PdfPrintAreasAndPageSizes()
        {
            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory              = settings.fileDirectory = false;
            settings.outputDirectory           = TestUtil.GetTestFile("controller\\pdf_area");
            settings.CourseIds                 = new Id <Course>[] { CourseId(0), CourseId(1), CourseId(2), CourseId(3), CourseId(4) };
            settings.ColorModel                = ColorModel.CMYK;
            settings.CropLargePrintArea        = false;
            settings.FileCreation              = CoursePdfSettings.PdfFileCreation.FilePerCourse;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\Lincoln Park PrintAreas 2.ppen"), settings, appearance,
                           new string[] { TestUtil.GetTestFile("controller\\pdf_area\\All controls.pdf"),
                                          TestUtil.GetTestFile("controller\\pdf_area\\Short.pdf"),
                                          TestUtil.GetTestFile("controller\\pdf_area\\Long.pdf"),
                                          TestUtil.GetTestFile("controller\\pdf_area\\Landscape.pdf"),
                                          TestUtil.GetTestFile("controller\\pdf_area\\LandscapeLetter.pdf") },
                           new string[] { TestUtil.GetTestFile("controller\\pdf_area\\All controls_expected.png"),
                                          TestUtil.GetTestFile("controller\\pdf_area\\Short_expected.png"),
                                          TestUtil.GetTestFile("controller\\pdf_area\\Long_expected.png"),
                                          TestUtil.GetTestFile("controller\\pdf_area\\Landscape_expected.png"),
                                          TestUtil.GetTestFile("controller\\pdf_area\\LandscapeLetter_expected.png") });
        }
Exemple #7
0
        // Get the purple color to use for display, taking into account the user preferences in courseAppearance, the map loaded into the mapDisplay, 
        // and the default purple if none of those provide a color. MapDisplay and courseAppearance can be null, in which case they won't be used.
        public static void GetPurpleColor(MapDisplay mapDisplay, CourseAppearance courseAppearance, out short ocadId, out float cyan, out float magenta, out float yellow, out float black, out bool overprint)
        {
            overprint = (courseAppearance == null) ? true : courseAppearance.purpleColorBlend;

            if (courseAppearance != null && !courseAppearance.useDefaultPurple) {
                // Use the purple from the course display.
                cyan = courseAppearance.purpleC;
                magenta = courseAppearance.purpleM;
                yellow = courseAppearance.purpleY;
                black = courseAppearance.purpleK;
                ocadId = NormalCourseAppearance.courseOcadId;
                return;
            }
            else if (mapDisplay != null && FindPurpleColor(mapDisplay.GetMapColors(), out ocadId, out cyan, out magenta, out yellow, out black)) {
                // FindPurpleColor found a purple to use.
                return;
            }
            else {
                // Use the program default.
                ocadId = NormalCourseAppearance.courseOcadId;
                cyan = NormalCourseAppearance.courseColorC;
                magenta = NormalCourseAppearance.courseColorM;
                yellow = NormalCourseAppearance.courseColorY;
                black = NormalCourseAppearance.courseColorK;
                return;
            }
        }
        public void PdfCreationPdfBaseMapRGB()
        {
            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory       = settings.fileDirectory = false;
            settings.outputDirectory    = TestUtil.GetTestFile("pdfcourse\\pdf_create7");
            settings.CourseIds          = new Id <Course>[] { CourseId(1), CourseId(2), CourseId(3), CourseId(4) };
            settings.ColorModel         = ColorModel.CMYK;
            settings.CropLargePrintArea = true;
            settings.FileCreation       = CoursePdfSettings.PdfFileCreation.FilePerCourse;

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("pdfcourse\\Lincoln Park PDF RGB.ppen"), settings, appearance,
                           new string[] { TestUtil.GetTestFile("pdfcourse\\pdf_create7\\Short.pdf"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create7\\SmallScale.pdf"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create7\\LargeScale.pdf"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create7\\MediumScale.pdf") },
                           new string[] { TestUtil.GetTestFile("pdfcourse\\pdf_create7\\Short_expected.png"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create7\\SmallScale_expected.png"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create7\\LargeScale_expected.png"),
                                          TestUtil.GetTestFile("pdfcourse\\pdf_create7\\MediumScale_expected.png") });
        }
Exemple #9
0
 public OcadCreation(SymbolDB symbolDB, EventDB eventDB, Controller controller, CourseAppearance courseAppearance, OcadCreationSettings creationSettings)
 {
     this.symbolDB         = symbolDB;
     this.eventDB          = eventDB;
     this.controller       = controller;
     this.courseAppearance = courseAppearance;
     this.creationSettings = creationSettings;
 }
Exemple #10
0
 // mapDisplay is a MapDisplay that contains the correct map. All other features of the map display need to be customized.
 public CoursePageLayout(EventDB eventDB, SymbolDB symbolDB, Controller controller,
                         CourseAppearance appearance, bool cropLargePrintArea)
 {
     this.eventDB            = eventDB;
     this.symbolDB           = symbolDB;
     this.controller         = controller;
     this.appearance         = appearance;
     this.cropLargePrintArea = cropLargePrintArea;
 }
Exemple #11
0
        PointCourseObj highlight;    // the highlight we are creating.

        public AddPointSpecialMode(Controller controller, SelectionMgr selectionMgr, UndoMgr undoMgr, EventDB eventDB, SpecialKind specialKind)
        {
            this.controller     = controller;
            this.selectionMgr   = selectionMgr;
            this.undoMgr        = undoMgr;
            this.eventDB        = eventDB;
            this.specialKind    = specialKind;
            this.appearance     = controller.GetCourseAppearance();
            this.courseObjRatio = selectionMgr.ActiveCourseView.CourseObjRatio(appearance);
        }
Exemple #12
0
        BoundaryCourseObj highlight;                 // the highlight of the path we are creating.

        public AddLineAreaSpecialMode(Controller controller, SelectionMgr selectionMgr, UndoMgr undoMgr, EventDB eventDB, Func <PointF[], Id <Special> > createObject, bool isArea)
        {
            this.controller     = controller;
            this.selectionMgr   = selectionMgr;
            this.undoMgr        = undoMgr;
            this.eventDB        = eventDB;
            this.createObject   = createObject;
            this.isArea         = isArea;
            this.appearance     = controller.GetCourseAppearance();
            this.courseObjRatio = selectionMgr.ActiveCourseView.CourseObjRatio(appearance);
        }
        public void ScalingMethods()
        {
            CourseAppearance appearance = (CourseAppearance)defaultCourseAppearance.Clone();

            CourseDesignator courseDesignator = new CourseDesignator(CourseId(4));

            appearance.itemScaling = ItemScaling.None;
            CheckCourse("courserenderer\\scaling.ppen", courseDesignator, false, "scaling_noscale", new RectangleF(-22, -33, 160, 160), appearance);
            appearance.itemScaling = ItemScaling.RelativeToMap;
            CheckCourse("courserenderer\\scaling.ppen", courseDesignator, false, "scaling_maprelative", new RectangleF(-22, -33, 160, 160), appearance);
            appearance.itemScaling = ItemScaling.RelativeTo15000;
            CheckCourse("courserenderer\\scaling.ppen", courseDesignator, false, "scaling_15krelative", new RectangleF(-22, -33, 160, 160), appearance);
        }
 public CourseObjTests()
 {
     // Special appearance to test the usage of CourseAppearance.
     specialAppearance = new CourseAppearance();
     specialAppearance.controlCircleSize = 0.666667F;  // 4mm control circle
     specialAppearance.centerDotDiameter = 0.75F; // 0.75 mm center dot
     specialAppearance.lineWidth = 2.85714F; // 1mm lines
     specialAppearance.numberHeight = 1.75F; // 7mm numbers.
     specialAppearance.numberBold = true;
     specialAppearance.numberOutlineWidth = 0.13F;
     specialAppearance.autoLegGapSize = 0.0F;
     specialAppearance.descriptionsPurple = true;
 }
Exemple #15
0
        CourseObj[] additionalHighlights; // additional highlights to show also.

        public AddControlMode(Controller controller, SelectionMgr selectionMgr, UndoMgr undoMgr, EventDB eventDB, SymbolDB symbolDB, bool allControls, ControlPointKind controlKind, bool exchangeAtControl, MapIssueKind mapIssueKind)
        {
            this.controller        = controller;
            this.selectionMgr      = selectionMgr;
            this.undoMgr           = undoMgr;
            this.eventDB           = eventDB;
            this.symbolDB          = symbolDB;
            this.allControls       = allControls;
            this.controlKind       = controlKind;
            this.exchangeAtControl = exchangeAtControl;
            this.mapIssueKind      = mapIssueKind;
            this.appearance        = controller.GetCourseAppearance();
            this.courseObjRatio    = selectionMgr.ActiveCourseView.CourseObjRatio(appearance);
        }
        public void PrintCoursesNoBlend()
        {
            controller.LoadInitialFile(TestUtil.GetTestFile("courseprinting\\marymoor.ppen"), true);
            CoursePrintSettings coursePrintSettings = new CoursePrintSettings();

            coursePrintSettings.CropLargePrintArea = false;
            coursePrintSettings.PrintingColorModel = ColorModel.CMYK;

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = false;

            coursePrintSettings.CourseIds = new Id <Course>[] { CourseId(1), CourseId(2), CourseId(0) };
            CoursePrintingTest("courseprinting\\noblend", coursePrintSettings, appearance);
        }
Exemple #17
0
        // mapDisplay is a MapDisplay that contains the correct map. All other features of the map display need to be customized.
        public BitmapCreation(EventDB eventDB, SymbolDB symbolDB, Controller controller, MapDisplay mapDisplay,
                              BitmapCreationSettings bitmapCreationSettings, CourseAppearance appearance)
        {
            this.eventDB                = eventDB;
            this.symbolDB               = symbolDB;
            this.controller             = controller;
            this.mapDisplay             = mapDisplay.CloneToFullIntensity();
            this.bitmapCreationSettings = bitmapCreationSettings;
            this.appearance             = appearance;

            // Set default features for creating bitmaps.
            this.mapDisplay.MapIntensity = 1.0F;
            this.mapDisplay.AntiAlias    = true;
            this.mapDisplay.ColorModel   = bitmapCreationSettings.ColorModel;
        }
Exemple #18
0
        // mapDisplay is a MapDisplay that contains the correct map. All other features of the map display need to be customized.
        public CoursePrinting(EventDB eventDB, SymbolDB symbolDB, Controller controller, MapDisplay mapDisplay, CoursePrintSettings coursePrintSettings, CourseAppearance appearance)
            : base(QueryEvent.GetEventTitle(eventDB, " "), controller, coursePrintSettings.PageSettings, coursePrintSettings.PrintingColorModel)
        {
            this.eventDB             = eventDB;
            this.symbolDB            = symbolDB;
            this.controller          = controller;
            this.mapDisplay          = mapDisplay;
            this.coursePrintSettings = coursePrintSettings;
            this.appearance          = appearance;

            // Set default features for printing.
            mapDisplay.MapIntensity = 1.0F;
            mapDisplay.AntiAlias    = false;
            mapDisplay.Printing     = true;
            mapDisplay.ColorModel   = base.colorModel;
        }
        public void PrintOverprint()
        {
            controller.LoadInitialFile(TestUtil.GetTestFile("courseprinting\\Overprint test.ppen"), true);
            CoursePrintSettings coursePrintSettings = new CoursePrintSettings();

            coursePrintSettings.CropLargePrintArea = true;
            coursePrintSettings.PrintingColorModel = ColorModel.CMYK;

            coursePrintSettings.CourseIds = new Id <Course>[] { CourseId(1) };

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = true;
            appearance.useOcadOverprint = true;

            CoursePrintingTest("courseprinting\\overprint", coursePrintSettings, appearance, 200);
        }
        public LinePropertiesDialog(string dialogTitle, string usageText, string helpTopic, CmykColor purpleColor, CourseAppearance appearance)
        {
            InitializeComponent();
            this.appearance = appearance;

            if (!appearance.useDefaultPurple)
            {
                purpleColor = CmykColor.FromCmyk(appearance.purpleC, appearance.purpleM, appearance.purpleY, appearance.purpleK);
            }

            this.purpleColor           = SwopColorConverter.CmykToRgbColor(purpleColor);
            colorChooser               = new SpecialColorChooser(comboBoxColor, buttonChangeColor, purpleColor);
            colorChooser.ColorChanged += colorChooser_ColorChanged;
            LineKind        = PurplePen.LineKind.Single;
            this.Text       = dialogTitle;
            this.HelpTopic  = helpTopic;
            usageLabel.Text = usageText;
        }
Exemple #21
0
        public void PdfBadIStreamFallback()
        {
            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory              = settings.fileDirectory = false;
            settings.outputDirectory           = TestUtil.GetTestFile("controller\\pdf_badistream");
            settings.CourseIds                 = new Id <Course>[] { CourseId(1) };
            settings.ColorModel                = ColorModel.CMYK;
            settings.CropLargePrintArea        = false;
            settings.FileCreation              = CoursePdfSettings.PdfFileCreation.FilePerCourse;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\Bad PDF Test.ppen"), settings, appearance,
                           new string[] { TestUtil.GetTestFile("controller\\pdf_badistream\\Long.pdf") },
                           new string[] { TestUtil.GetTestFile("controller\\pdf_badistream\\Long_expected.png") });
        }
        // Do CheckCourse for normal and special appearances.
        void CheckCourseBothAppearances(string filename, CourseDesignator courseDesignator, bool addAllControls, string testName, RectangleF rect)
        {
            CourseAppearance specialAppearance;

            // Special appearance to test the usage of CourseAppearance.
            specialAppearance = new CourseAppearance();
            specialAppearance.controlCircleSize  = 1.6F; //big control circle
            specialAppearance.lineWidth          = 0.2F; // thin lines
            specialAppearance.numberHeight       = 2F;   // really big numbers.
            specialAppearance.numberBold         = true; // bold numbers
            specialAppearance.numberOutlineWidth = 0.13F;
            specialAppearance.autoLegGapSize     = 0.0F;
            specialAppearance.useDefaultPurple   = false;
            specialAppearance.purpleC            = 0.32F;
            specialAppearance.purpleY            = 1.00F;
            specialAppearance.purpleM            = 0;
            specialAppearance.purpleK            = 0.30F;

            CheckCourse(filename, courseDesignator, addAllControls, testName, rect, defaultCourseAppearance);
            CheckCourse(filename, courseDesignator, addAllControls, testName + "_special", rect, specialAppearance);
        }
Exemple #23
0
        public void ScalingTest()
        {
            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory              = settings.fileDirectory = false;
            settings.outputDirectory           = TestUtil.GetTestFile("pdfcourse");
            settings.CourseIds                 = new Id <Course>[] { CourseId(1), CourseId(2) };
            settings.ColorModel                = ColorModel.CMYK;
            settings.CropLargePrintArea        = true;
            settings.FileCreation              = CoursePdfSettings.PdfFileCreation.FilePerCourse;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("pdfcourse\\PDF rescale test.ppen"), settings, appearance,
                           new string[] { TestUtil.GetTestFile("pdfcourse\\Scaled.pdf"),
                                          TestUtil.GetTestFile("pdfcourse\\Unscaled.pdf") },
                           new string[] { TestUtil.GetTestFile("pdfcourse\\Scaled.png"),
                                          TestUtil.GetTestFile("pdfcourse\\Unscaled.png") });
        }
Exemple #24
0
        public void ScalingCircleGaps()
        {
            CourseAppearance appearance = (CourseAppearance)defaultCourseAppearance.Clone();

            CourseDesignator courseDesignator10K = new CourseDesignator(CourseId(1));
            CourseDesignator courseDesignator5K  = new CourseDesignator(CourseId(2));
            CourseDesignator courseDesignator15K = new CourseDesignator(CourseId(3));

            appearance.itemScaling = ItemScaling.None;
            CheckCourse("courserenderer\\CircleGapScaling.ppen", courseDesignator5K, false, "scaling_5k_noscale", new RectangleF(69, -80, 70, 70), appearance);
            CheckCourse("courserenderer\\CircleGapScaling.ppen", courseDesignator10K, false, "scaling_10k_noscale", new RectangleF(69, -80, 70, 70), appearance);
            CheckCourse("courserenderer\\CircleGapScaling.ppen", courseDesignator15K, false, "scaling_15k_noscale", new RectangleF(69, -80, 70, 70), appearance);

            appearance.itemScaling = ItemScaling.RelativeToMap;
            CheckCourse("courserenderer\\CircleGapScaling.ppen", courseDesignator5K, false, "scaling_5k_maprelative", new RectangleF(69, -80, 70, 70), appearance);
            CheckCourse("courserenderer\\CircleGapScaling.ppen", courseDesignator10K, false, "scaling_10k_maprelative", new RectangleF(69, -80, 70, 70), appearance);
            CheckCourse("courserenderer\\CircleGapScaling.ppen", courseDesignator15K, false, "scaling_15k_maprelative", new RectangleF(69, -80, 70, 70), appearance);

            appearance.itemScaling = ItemScaling.RelativeTo15000;
            CheckCourse("courserenderer\\CircleGapScaling.ppen", courseDesignator5K, false, "scaling_5k_15krelative", new RectangleF(69, -80, 70, 70), appearance);
            CheckCourse("courserenderer\\CircleGapScaling.ppen", courseDesignator10K, false, "scaling_10k_15krelative", new RectangleF(69, -80, 70, 70), appearance);
            CheckCourse("courserenderer\\CircleGapScaling.ppen", courseDesignator15K, false, "scaling_15k_15krelative", new RectangleF(69, -80, 70, 70), appearance);
        }
Exemple #25
0
        // Update the course
        void UpdateCourse()
        {
            CourseAppearance appearance = controller.GetCourseAppearance();

            // Get purple color.
            short purpleOcadId;
            float purpleC, purpleM, purpleY, purpleK;
            bool purpleOverprint;
            controller.GetPurpleColor(out purpleOcadId, out purpleC, out purpleM, out purpleY, out purpleK, out purpleOverprint);

            // Place the active course in the layout.
            activeCourse = new CourseLayout();
            activeCourse.SetLayerColor(CourseLayer.Descriptions, NormalCourseAppearance.blackColorOcadId, NormalCourseAppearance.blackColorName, NormalCourseAppearance.blackColorC, NormalCourseAppearance.blackColorM, NormalCourseAppearance.blackColorY, NormalCourseAppearance.blackColorK, false);
            activeCourse.SetLayerColor(CourseLayer.MainCourse, NormalCourseAppearance.courseOcadId, NormalCourseAppearance.courseColorName, purpleC, purpleM, purpleY, purpleK, 
                                       (purpleOverprint && (extraCourses == null || extraCourses.Count == 0))); 
            CourseFormatter.FormatCourseToLayout(symbolDB, activeCourseView, appearance, activeCourse, CourseLayer.MainCourse);

            if (showAllControls && !activeCourseDesignator.IsAllControls) {
                // Create the all controls view.
                CourseView allControlsView = CourseView.CreateFilteredAllControlsView(eventDB, new CourseDesignator[] { activeCourseDesignator }, allControlsFilter, 
                    new CourseViewOptions() { showNonDescriptionSpecials = false, showDescriptionSpecials = false });

                // Add it to the CourseLayout.
                activeCourse.SetLayerColor(CourseLayer.AllControls, NormalCourseAppearance.allControlsOcadId, NormalCourseAppearance.allControlsColorName,
                    NormalCourseAppearance.allControlsColorC, NormalCourseAppearance.allControlsColorM, NormalCourseAppearance.allControlsColorY, NormalCourseAppearance.allControlsColorK, purpleOverprint);
                CourseFormatter.FormatCourseToLayout(symbolDB, allControlsView, appearance, activeCourse, CourseLayer.AllControls);
            }

            if (extraCourses != null && extraCourses.Count > 0) {
                for (int i = 0; i < extraCourses.Count; ++i) {
                    Id<Course> courseId = extraCourses[i];
                    if (eventDB.IsCoursePresent(courseId)) {
                        AddExtraCourseToLayout(activeCourse, courseId, i % CourseLayout.EXTRACOURSECOUNT);
                    }
                }
            }
        }
Exemple #26
0
        public void PdfCreationOverprint()
        {
            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory              = settings.fileDirectory = false;
            settings.outputDirectory           = TestUtil.GetTestFile("controller\\pdf_create_overprint");
            settings.CourseIds                 = new Id <Course>[] { CourseId(1) };
            settings.ColorModel                = ColorModel.CMYK;
            settings.CropLargePrintArea        = false;
            settings.FileCreation              = CoursePdfSettings.PdfFileCreation.SingleFile;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\Overprint test.ppen"), settings, appearance,
                           new string[1] {
                TestUtil.GetTestFile("controller\\pdf_create_overprint\\Overprint test.pdf")
            },
                           new string[1] {
                TestUtil.GetTestFile("controller\\pdf_create_overprint\\Overprint test_expected.png")
            });
        }
Exemple #27
0
        public void PdfCreation1()
        {
            CoursePdfSettings settings = new CoursePdfSettings();

            settings.mapDirectory              = settings.fileDirectory = false;
            settings.outputDirectory           = TestUtil.GetTestFile("controller\\pdf_create1");
            settings.CourseIds                 = new Id <Course>[] { CourseId(1), CourseId(2), CourseId(0) };
            settings.ColorModel                = ColorModel.CMYK;
            settings.CropLargePrintArea        = false;
            settings.FileCreation              = CoursePdfSettings.PdfFileCreation.SingleFile;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();

            appearance.purpleColorBlend = false;

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\marymoor.ppen"), settings, appearance,
                           new string[1] {
                TestUtil.GetTestFile("controller\\pdf_create1\\Marymoor WIOL 2.pdf")
            },
                           new string[1] {
                TestUtil.GetTestFile("controller\\pdf_create1\\test1_page%d_baseline.png")
            });
        }
Exemple #28
0
        // Create some courses, write them as PDF, and check against a PNG snapshot of that PDF.
        void CreatePdfFiles(string file, CoursePdfSettings settings, CourseAppearance appearance, string[] expectedFiles, string[] expectedDumps)
        {
            EventDB eventDB = controller.GetEventDB();

            bool success = controller.LoadInitialFile(file, true);

            Assert.IsTrue(success);

            controller.SetCourseAppearance(appearance);

            for (int i = 0; i < expectedFiles.Length; ++i)
            {
                File.Delete(expectedFiles[i]);
            }

            success = controller.CreateCoursePdfs(settings);
            Assert.IsTrue(success);

            for (int i = 0; i < expectedFiles.Length; ++i)
            {
                CheckPdfDump(expectedFiles[i], expectedDumps[i]);
                File.Delete(expectedFiles[i]);
            }
        }
        public void PrintCourses2()
        {
            CourseAppearance appearance = new CourseAppearance();

            appearance.controlCircleSize = 0.75F; //smaller circles
            appearance.lineWidth         = 3F;    // thin lines
            appearance.numberHeight      = 0.5F;  // small numbers.
            appearance.numberBold        = true;  // bold numbers.
            appearance.useDefaultPurple  = false;
            appearance.autoLegGapSize    = 0.0F;
            appearance.purpleC           = 0.32F;
            appearance.purpleY           = 1.00F;
            appearance.purpleM           = 0;
            appearance.purpleK           = 0.30F;

            controller.LoadInitialFile(TestUtil.GetTestFile("courseprinting\\marymoor.ppen"), true);
            CoursePrintSettings coursePrintSettings = new CoursePrintSettings();

            coursePrintSettings.CropLargePrintArea = false;
            coursePrintSettings.PrintingColorModel = ColorModel.RGB;

            coursePrintSettings.CourseIds = new Id <Course>[] { CourseId(1), CourseId(2), CourseId(0) };
            CoursePrintingTest("courseprinting\\test2", coursePrintSettings, appearance);
        }
Exemple #30
0
        // mapDisplay is a MapDisplay that contains the correct map. All other features of the map display need to be customized.
        public CoursePdf(EventDB eventDB, SymbolDB symbolDB, Controller controller, MapDisplay mapDisplay,
                         CoursePdfSettings coursePdfSettings, CourseAppearance appearance)
        {
            this.eventDB           = eventDB;
            this.symbolDB          = symbolDB;
            this.controller        = controller;
            this.mapDisplay        = mapDisplay;
            this.coursePdfSettings = coursePdfSettings;
            this.appearance        = appearance;

            // Set default features for printing.
            mapDisplay.MapIntensity = 1.0F;
            mapDisplay.AntiAlias    = false;
            mapDisplay.Printing     = true;
            mapDisplay.ColorModel   = coursePdfSettings.ColorModel;

            mapBounds = mapDisplay.MapBounds;

            if (mapDisplay.MapType == MapType.PDF)
            {
                // For PDF maps, we remove the PDF map from the MapDisplay and add it in separately.
                sourcePdfMapFileName = mapDisplay.FileName;
            }
        }
Exemple #31
0
        // extraCourseIndex indicates the color/layer.
        private void AddExtraCourseToLayout(CourseLayout courseLayout, Id<Course> courseId, int extraCourseIndex)
        {
            if (extraCourseIndex >= CourseLayout.EXTRACOURSECOUNT)
                return;

            CourseAppearance appearance = controller.GetCourseAppearance();
            CourseLayer layer = CourseLayer.OtherCourse1 + extraCourseIndex;

            // Create the course view.
            CourseView courseView = CourseView.CreateCourseView(eventDB, new CourseDesignator(courseId),
                new CourseViewOptions() { showNonDescriptionSpecials = false, showDescriptionSpecials = false, showControlNumbers = false });

            // Add it to the CourseLayout.
            courseLayout.SetLayerColor(layer, (short) (NormalCourseAppearance.extraCourseOcadId + extraCourseIndex), 
                                              string.Format(NormalCourseAppearance.allControlsColorName, extraCourseIndex + 1),
                                              NormalCourseAppearance.extraCourseC[extraCourseIndex],
                                              NormalCourseAppearance.extraCourseM[extraCourseIndex],
                                              NormalCourseAppearance.extraCourseY[extraCourseIndex],
                                              NormalCourseAppearance.extraCourseK[extraCourseIndex],
                                              false);

            CourseFormatter.FormatCourseToLayout(symbolDB, courseView, appearance, courseLayout, layer,
                new CourseFormatterOptions() { showControlNumbers = false });
        }
        // Do CheckCourse for normal and special appearances.
        void CheckCourseBothAppearances(string filename, CourseDesignator courseDesignator, bool addAllControls, string testName, RectangleF rect)
        {
            CourseAppearance specialAppearance;

            // Special appearance to test the usage of CourseAppearance.
            specialAppearance = new CourseAppearance();
            specialAppearance.controlCircleSize = 1.6F;  //big control circle
            specialAppearance.lineWidth = 0.2F; // thin lines
            specialAppearance.numberHeight = 2F; // really big numbers.
            specialAppearance.numberBold = true; // bold numbers
            specialAppearance.numberOutlineWidth = 0.13F;
            specialAppearance.autoLegGapSize = 0.0F;
            specialAppearance.useDefaultPurple = false;
            specialAppearance.purpleC = 0.32F;
            specialAppearance.purpleY = 1.00F;
            specialAppearance.purpleM = 0;
            specialAppearance.purpleK = 0.30F;

            CheckCourse(filename, courseDesignator, addAllControls, testName, rect, defaultCourseAppearance);
            CheckCourse(filename, courseDesignator, addAllControls, testName + "_special", rect, specialAppearance);
        }
        public void PdfCreationPdfBaseMapRGB()
        {
            CoursePdfSettings settings = new CoursePdfSettings();
            settings.mapDirectory = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("pdfcourse\\pdf_create7");
            settings.CourseIds = new Id<Course>[] { CourseId(1), CourseId(2), CourseId(3), CourseId(4) };
            settings.ColorModel = ColorModel.CMYK;
            settings.CropLargePrintArea = true;
            settings.FileCreation = CoursePdfSettings.PdfFileCreation.FilePerCourse;

            CourseAppearance appearance = new CourseAppearance();
            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("pdfcourse\\Lincoln Park PDF RGB.ppen"), settings, appearance,
                new string[] { TestUtil.GetTestFile("pdfcourse\\pdf_create7\\Short.pdf"),
                               TestUtil.GetTestFile("pdfcourse\\pdf_create7\\SmallScale.pdf"),
                               TestUtil.GetTestFile("pdfcourse\\pdf_create7\\LargeScale.pdf"),
                               TestUtil.GetTestFile("pdfcourse\\pdf_create7\\MediumScale.pdf")},
                new string[] { TestUtil.GetTestFile("pdfcourse\\pdf_create7\\Short_expected.png"),
                               TestUtil.GetTestFile("pdfcourse\\pdf_create7\\SmallScale_expected.png"),
                               TestUtil.GetTestFile("pdfcourse\\pdf_create7\\LargeScale_expected.png"),
                               TestUtil.GetTestFile("pdfcourse\\pdf_create7\\MediumScale_expected.png")});
        }
        public void PdfPrintAreasAndPageSizes()
        {
            CoursePdfSettings settings = new CoursePdfSettings();
            settings.mapDirectory = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("controller\\pdf_area");
            settings.CourseIds = new Id<Course>[] { CourseId(0), CourseId(1), CourseId(2), CourseId(3), CourseId(4) };
            settings.ColorModel = ColorModel.CMYK;
            settings.CropLargePrintArea = false;
            settings.FileCreation = CoursePdfSettings.PdfFileCreation.FilePerCourse;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();
            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\Lincoln Park PrintAreas 2.ppen"), settings, appearance,
                new string[] { TestUtil.GetTestFile("controller\\pdf_area\\All controls.pdf"),
                               TestUtil.GetTestFile("controller\\pdf_area\\Short.pdf"),
                               TestUtil.GetTestFile("controller\\pdf_area\\Long.pdf"),
                               TestUtil.GetTestFile("controller\\pdf_area\\Landscape.pdf"),
                               TestUtil.GetTestFile("controller\\pdf_area\\LandscapeLetter.pdf")},
                new string[] { TestUtil.GetTestFile("controller\\pdf_area\\All controls_expected.png"),
                               TestUtil.GetTestFile("controller\\pdf_area\\Short_expected.png"),
                               TestUtil.GetTestFile("controller\\pdf_area\\Long_expected.png"),
                               TestUtil.GetTestFile("controller\\pdf_area\\Landscape_expected.png"),
                               TestUtil.GetTestFile("controller\\pdf_area\\LandscapeLetter_expected.png")});
        }
        public void PdfBadIStreamFallback()
        {
            CoursePdfSettings settings = new CoursePdfSettings();
            settings.mapDirectory = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("controller\\pdf_badistream");
            settings.CourseIds = new Id<Course>[] { CourseId(1) };
            settings.ColorModel = ColorModel.CMYK;
            settings.CropLargePrintArea = false;
            settings.FileCreation = CoursePdfSettings.PdfFileCreation.FilePerCourse;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();
            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\Bad PDF Test.ppen"), settings, appearance,
                new string[] { TestUtil.GetTestFile("controller\\pdf_badistream\\Long.pdf") },
                new string[] { TestUtil.GetTestFile("controller\\pdf_badistream\\Long_expected.png") });
        }
        private void CoursePrintingTest(string basename, CoursePrintSettings coursePrintSettings, CourseAppearance appearance, float dpi = 200)
        {
            GC.Collect();

            // Get the map display
            MapDisplay mapDisplay = new MapDisplay();
            mapDisplay.MapIntensity = 0.6F;
            mapDisplay.AntiAlias = true;
            mapDisplay.SetMapFile(controller.MapType, controller.MapFileName);
            if (controller.MapType == MapType.Bitmap)
                mapDisplay.Dpi = controller.MapDpi;
            mapDisplay.OcadOverprintEffect = appearance.useOcadOverprint;

            // Get the pages of the printing.
            CoursePrinting coursePrinter = new CoursePrinting(controller.GetEventDB(), ui.symbolDB, controller, mapDisplay.CloneToFullIntensity(), coursePrintSettings, appearance);
            Bitmap[] bitmaps = coursePrinter.PrintBitmaps();

            // Check all the pages against the baseline.
            for (int page = 0; page < bitmaps.Length; ++page) {
                Bitmap bm = bitmaps[page];
                string baseFileName = basename + "_page" + (page + 1).ToString();
                TestUtil.CheckBitmapsBase(bm, baseFileName);
                bm.Dispose();
            }

            // Only OCAD maps can be printed in XPS mode.
            if (controller.MapType == MapType.OCAD) {
                // Get the pages of the printing in XPS/WPF mode
                System.Windows.Media.Imaging.BitmapSource[] xpsBitmaps = coursePrinter.PrintXpsBitmaps(dpi);

                // Check all the pages against the baseline.
                for (int page = 0; page < xpsBitmaps.Length; ++page) {
                    var bm = xpsBitmaps[page];
                    string baseFileName = basename + "_xps_page" + (page + 1).ToString();
                    string newFileName = TestUtil.GetTestFile(basename + "_xps_page" + (page + 1).ToString() + "_new");
                    WritePng(bm, newFileName);
                    Bitmap newBitmap = (Bitmap)Image.FromFile(newFileName);

                    // For some reason, the XPS anti-aliasing varies slightly. Allow pixel difference to account.
                    TestUtil.CheckBitmapsBase(newBitmap, baseFileName, 19);
                }
            }
        }
        public void PrintCoursesNoBlend()
        {
            controller.LoadInitialFile(TestUtil.GetTestFile("courseprinting\\marymoor.ppen"), true);
            CoursePrintSettings coursePrintSettings = new CoursePrintSettings();
            coursePrintSettings.CropLargePrintArea = false;
            coursePrintSettings.PrintingColorModel = ColorModel.CMYK;

            CourseAppearance appearance = new CourseAppearance();
            appearance.purpleColorBlend = false;

            coursePrintSettings.CourseIds = new Id<Course>[] { CourseId(1), CourseId(2), CourseId(0) };
            CoursePrintingTest("courseprinting\\noblend", coursePrintSettings, appearance);
        }
        // Create some courses, write them, and check against a dump.
        void CreateOcadFiles(string file, OcadCreationSettings settings, CourseAppearance appearance, string[] expectedFiles, string[] expectedDumps, string[] bitmapFileNames = null, string[] bitmapFileBaselines = null)
        {
            EventDB eventDB = controller.GetEventDB();

            bool success = controller.LoadInitialFile(file, true);
            Assert.IsTrue(success);

            controller.SetCourseAppearance(appearance);

            for (int i = 0; i < expectedFiles.Length; ++i) {
                File.Delete(expectedFiles[i]);
            }

            success = controller.CreateOcadFiles(settings);
            Assert.IsTrue(success);

            for (int i = 0; i < expectedFiles.Length; ++i) {
                CheckDump(expectedFiles[i], expectedDumps[i]);
            }

            if (bitmapFileNames != null) {
                for (int i = 0; i < bitmapFileNames.Length; ++i) {
                    TestUtil.CompareBitmapBaseline(bitmapFileNames[i], bitmapFileBaselines[i]);
                }
            }
        }
        public void PrintCourses2()
        {
            CourseAppearance appearance = new CourseAppearance();
            appearance.controlCircleSize = 0.75F;  //smaller circles
            appearance.lineWidth = 3F; // thin lines
            appearance.numberHeight = 0.5F; // small numbers.
            appearance.numberBold = true; // bold numbers.
            appearance.useDefaultPurple = false;
            appearance.autoLegGapSize = 0.0F;
            appearance.purpleC = 0.32F;
            appearance.purpleY = 1.00F;
            appearance.purpleM = 0;
            appearance.purpleK = 0.30F;

            controller.LoadInitialFile(TestUtil.GetTestFile("courseprinting\\marymoor.ppen"), true);
            CoursePrintSettings coursePrintSettings = new CoursePrintSettings();
            coursePrintSettings.CropLargePrintArea = false;
            coursePrintSettings.PrintingColorModel = ColorModel.RGB;

            coursePrintSettings.CourseIds = new Id<Course>[] { CourseId(1), CourseId(2), CourseId(0) };
            CoursePrintingTest("courseprinting\\test2", coursePrintSettings, appearance);
        }
        public void PdfCreationBitmapBaseMapRGB()
        {
            CoursePdfSettings settings = new CoursePdfSettings();
            settings.mapDirectory = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("controller\\pdf_create8");
            settings.CourseIds = new Id<Course>[1] { CourseId(1) };
            settings.ColorModel = ColorModel.RGB;
            settings.CropLargePrintArea = true;
            settings.FileCreation = CoursePdfSettings.PdfFileCreation.FilePerCourse;

            CourseAppearance appearance = new CourseAppearance();
            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\Lincoln Park.ppen"), settings, appearance,
                new string[1] { TestUtil.GetTestFile("controller\\pdf_create8\\Short.pdf") },
                new string[1] { TestUtil.GetTestFile("controller\\pdf_create8\\Short_expected.png") });
        }
        public void PrintOverprint()
        {
            controller.LoadInitialFile(TestUtil.GetTestFile("courseprinting\\Overprint test.ppen"), true);
            CoursePrintSettings coursePrintSettings = new CoursePrintSettings();
            coursePrintSettings.CropLargePrintArea = true;
            coursePrintSettings.PrintingColorModel = ColorModel.CMYK;

            coursePrintSettings.CourseIds = new Id<Course>[] { CourseId(1) };

            CourseAppearance appearance = new CourseAppearance();
            appearance.purpleColorBlend = true;
            appearance.useOcadOverprint = true;

            CoursePrintingTest("courseprinting\\overprint", coursePrintSettings, appearance, 200);
        }
        public void PdfCreation2()
        {
            CoursePdfSettings settings = new CoursePdfSettings();
            settings.mapDirectory = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("controller\\pdf_create2");
            settings.CourseIds = new Id<Course>[] { CourseId(1), CourseId(2), CourseId(0) };
            settings.ColorModel = ColorModel.RGB;
            settings.CropLargePrintArea = false;
            settings.FileCreation = CoursePdfSettings.PdfFileCreation.FilePerCourse;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();
            appearance.controlCircleSize = 0.75F;  //smaller circles
            appearance.lineWidth = 3F; // thin lines
            appearance.numberHeight = 0.5F; // small numbers.
            appearance.numberBold = true; // bold numbers.
            appearance.numberOutlineWidth = 0.13F;
            appearance.useDefaultPurple = false;
            appearance.purpleColorBlend = true;
            appearance.autoLegGapSize = 0.0F;
            appearance.purpleC = 0.32F;
            appearance.purpleY = 1.00F;
            appearance.purpleM = 0;
            appearance.purpleK = 0.30F;

            settings.CourseIds = new Id<Course>[] { CourseId(1), CourseId(2), CourseId(0) };

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\marymoor.ppen"), settings, appearance,
                new string[] { TestUtil.GetTestFile("controller\\pdf_create2\\Course 1.pdf"), TestUtil.GetTestFile("controller\\pdf_create2\\Course 2.pdf"), TestUtil.GetTestFile("controller\\pdf_create2\\All controls.pdf") },
                new string[] { TestUtil.GetTestFile("controller\\pdf_create2\\test2_course1_page%d_baseline.png"), TestUtil.GetTestFile("controller\\pdf_create2\\test2_course2_page%d_baseline.png"), TestUtil.GetTestFile("controller\\pdf_create2\\test2_allcontrols_page%d_baseline.png") });
        }
        public void PdfCreationOverprint()
        {
            CoursePdfSettings settings = new CoursePdfSettings();
            settings.mapDirectory = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("controller\\pdf_create_overprint");
            settings.CourseIds = new Id<Course>[] { CourseId(1) };
            settings.ColorModel = ColorModel.CMYK;
            settings.CropLargePrintArea = false;
            settings.FileCreation = CoursePdfSettings.PdfFileCreation.SingleFile;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();
            appearance.purpleColorBlend = true;

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\Overprint test.ppen"), settings, appearance,
                new string[1] { TestUtil.GetTestFile("controller\\pdf_create_overprint\\Overprint test.pdf") },
                new string[1] { TestUtil.GetTestFile("controller\\pdf_create_overprint\\Overprint test_expected.png") });
        }
        // Create some courses, write them as PDF, and check against a PNG snapshot of that PDF.
        void CreatePdfFiles(string file, CoursePdfSettings settings, CourseAppearance appearance, string[] expectedFiles, string[] expectedDumps)
        {
            EventDB eventDB = controller.GetEventDB();

            bool success = controller.LoadInitialFile(file, true);
            Assert.IsTrue(success);

            controller.SetCourseAppearance(appearance);

            for (int i = 0; i < expectedFiles.Length; ++i) {
                File.Delete(expectedFiles[i]);
            }

            success = controller.CreateCoursePdfs(settings);
            Assert.IsTrue(success);

            for (int i = 0; i < expectedFiles.Length; ++i) {
                CheckPdfDump(expectedFiles[i], expectedDumps[i]);
                File.Delete(expectedFiles[i]);
            }
        }
        void CheckCourse(string filename, CourseDesignator courseDesignator, bool addAllControls, string testName, RectangleF rect, CourseAppearance appearance)
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            CourseView courseView;
            CourseLayout course;

            eventDB.Load(TestUtil.GetTestFile(filename));
            eventDB.Validate();

            // Create the course
            courseView = CourseView.CreateViewingCourseView(eventDB, courseDesignator);
            course = new CourseLayout();
            course.SetLayerColor(CourseLayer.Descriptions, 0, "Black", 0, 0, 0, 1F, false);
            course.SetLayerColor(CourseLayer.MainCourse, 11, "Purple", 0.2F, 1.0F, 0.0F, 0.07F, false);
            CourseFormatter.FormatCourseToLayout(symbolDB, courseView, appearance, course, CourseLayer.MainCourse);

            // Add all controls if requested.
            if (addAllControls && courseDesignator.IsNotAllControls) {
                courseView = CourseView.CreateFilteredAllControlsView(eventDB, new CourseDesignator[] { courseDesignator }, ControlPointKind.None, false, true);
                course.SetLayerColor(CourseLayer.AllControls, 12, "LightPurple", 0.1F, 0.5F, 0.0F, 0.0F, false);
                CourseFormatter.FormatCourseToLayout(symbolDB, courseView, appearance, course, CourseLayer.AllControls);
            }

            // Render to a map
            Map map = course.RenderToMap();

            // Render map to the graphics.
            Bitmap bm = new Bitmap(1000,1000);
            using (Graphics g = Graphics.FromImage(bm)) {
                RenderOptions options = new RenderOptions();

                options.usePatternBitmaps = true;
                options.minResolution = (float) (rect.Width / bm.Width);
                options.renderTemplates = RenderTemplateOption.MapAndTemplates;

                g.ScaleTransform((float) (bm.Width / rect.Width), - (float) (bm.Height / rect.Height));
                g.TranslateTransform(-rect.Left, -rect.Top-rect.Height);

                g.Clear(Color.White);
                using (map.Read())
                    map.Draw(new GDIPlus_GraphicsTarget(g), rect, options, null);
            }

            TestUtil.CheckBitmapsBase(bm, "courserenderer\\" + testName);
        }
        public void PdfCreation1()
        {
            CoursePdfSettings settings = new CoursePdfSettings();
            settings.mapDirectory = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("controller\\pdf_create1");
            settings.CourseIds = new Id<Course>[] { CourseId(1), CourseId(2), CourseId(0) };
            settings.ColorModel = ColorModel.CMYK;
            settings.CropLargePrintArea = false;
            settings.FileCreation = CoursePdfSettings.PdfFileCreation.SingleFile;
            settings.PrintMapExchangesOnOneMap = false;

            CourseAppearance appearance = new CourseAppearance();
            appearance.purpleColorBlend = false;

            CreatePdfFiles(TestUtil.GetTestFile("courseprinting\\marymoor.ppen"), settings, appearance,
                new string[1] { TestUtil.GetTestFile("controller\\pdf_create1\\Marymoor WIOL 2.pdf") },
                new string[1] { TestUtil.GetTestFile("controller\\pdf_create1\\test1_page%d_baseline.png") });
        }
        // Create a description course object to use in testing.
        DescriptionCourseObj CreateDescriptionCourseObj(CourseAppearance appearance, int numColumns = 1)
        {
            SymbolDB symbolDB = new SymbolDB(Util.GetFileInAppDirectory("symbols.xml"));
            UndoMgr undomgr = new UndoMgr(5);
            EventDB eventDB = new EventDB(undomgr);
            eventDB.Load(TestUtil.GetTestFile("coursesymbols\\sampleevent1.coursescribe"));
            eventDB.Validate();
            CourseView courseView = CourseView.CreateViewingCourseView(eventDB, new CourseDesignator(CourseId(3)));
            DescriptionFormatter descFormatter = new DescriptionFormatter(courseView, symbolDB);
            DescriptionLine[] description = descFormatter.CreateDescription(false);

            return new DescriptionCourseObj(Id<Special>.None, new PointF(-4, 4), 0.9F / numColumns, symbolDB, description, DescriptionKind.Symbols, numColumns);
        }
        public void ChangeCourseAppearance()
        {
            Setup("changeevent\\sampleevent3.ppen");

            CourseAppearance courseAppearance = new CourseAppearance();
            courseAppearance.lineWidth = 1.3F;
            courseAppearance.controlCircleSize = 0.9F;
            courseAppearance.numberHeight = 1.1F;
            courseAppearance.numberBold = true;
            courseAppearance.numberOutlineWidth = 0.33F;
            courseAppearance.useDefaultPurple = false;
            courseAppearance.purpleC = 0.4F;
            courseAppearance.purpleM = 0.5F;
            courseAppearance.purpleY = 0.6F;
            courseAppearance.purpleK = 0.74F;

            undomgr.BeginCommand(7712, "Change course appearance");
            ChangeEvent.ChangeCourseAppearance(eventDB, courseAppearance);
            undomgr.EndCommand(7712);

            eventDB.Validate();

            CourseAppearance n = eventDB.GetEvent().courseAppearance;
            Assert.AreEqual(1.3F, n.lineWidth);
            Assert.AreEqual(0.9F, n.controlCircleSize);
            Assert.AreEqual(1.1F, n.numberHeight);
            Assert.AreEqual(true, n.numberBold);
            Assert.AreEqual(0.33F, n.numberOutlineWidth);
            Assert.AreEqual(false, n.useDefaultPurple);
            Assert.AreEqual(0.4F, n.purpleC);
            Assert.AreEqual(0.5F, n.purpleM);
            Assert.AreEqual(0.6F, n.purpleY);
            Assert.AreEqual(0.74F, n.purpleK);

            undomgr.Undo();
            eventDB.Validate();

            n = eventDB.GetEvent().courseAppearance;
            Assert.AreEqual(1.0F, n.lineWidth);
            Assert.AreEqual(1.0F, n.controlCircleSize);
            Assert.AreEqual(1.0F, n.numberHeight);
            Assert.AreEqual(false, n.numberBold);
            Assert.AreEqual(0, n.numberOutlineWidth);
            Assert.AreEqual(true, n.useDefaultPurple);
        }
        public void OcadCreation7()
        {
            OcadCreationSettings settings = new OcadCreationSettings();
            settings.mapDirectory = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("controller\\ocad_create7");
            settings.CourseIds = new Id<Course>[1] { CourseId(2) };
            settings.fileFormat = new MapFileFormat(MapFileFormatKind.OCAD, 8);

            CourseAppearance appearance = new CourseAppearance();
            appearance.controlCircleSize = 1.1F;  //smaller circles
            appearance.lineWidth = 1.1F;
            appearance.numberHeight = 1.2F; // slightly big numbers.
            appearance.numberBold = true;
            appearance.useDefaultPurple = false;

            settings.cyan = appearance.purpleC = 0.00F;
            settings.yellow = appearance.purpleY = 1.00F;
            settings.magenta = appearance.purpleM = 1.00F;
            settings.black = appearance.purpleK = 0.30F;

            Directory.CreateDirectory(settings.outputDirectory);

            CreateOcadFiles(TestUtil.GetTestFile("controller\\marymoor4.ppen"), settings, appearance,
                new string[1] { TestUtil.GetTestFile("controller\\ocad_create7\\Course 2.ocd") },
                new string[1] { TestUtil.GetTestFile("controller\\ocad_create7\\Course 2_expected.txt") });
        }
        public void PdfCreation4()
        {
            CoursePdfSettings settings = new CoursePdfSettings();
            settings.mapDirectory = settings.fileDirectory = false;
            settings.outputDirectory = TestUtil.GetTestFile("controller\\pdf_create4");
            settings.CourseIds = new Id<Course>[1] { CourseId(2) };
            settings.ColorModel = ColorModel.RGB;
            settings.CropLargePrintArea = true;
            settings.FileCreation = CoursePdfSettings.PdfFileCreation.FilePerCourse;

            CourseAppearance appearance = new CourseAppearance();
            appearance.purpleColorBlend = true;

            Directory.CreateDirectory(settings.outputDirectory);

            CreatePdfFiles(TestUtil.GetTestFile("controller\\marymoor4.ppen"), settings, appearance,
                new string[1] { TestUtil.GetTestFile("controller\\pdf_create4\\Course 2.pdf") },
                new string[1] { TestUtil.GetTestFile("controller\\pdf_create4\\Course 2_expected.png") });
        }