示例#1
0
        public void Execute(ITaskRunner taskRunner)
        {
            ProductFile file = taskRunner.GetProductFile(GeneratePreviewPolishFileTask.PolishPreviewFile);

            if (file == null)
            {
                consoleLogger.WriteLine(log, Level.Warn, "WARNING: there is no polish preview file to process, preview file will not be generated");
                return;
            }

            taskRunner.RunCPreview(
                "\"{0}\"",
                file.ProductFileName);

            string previewIntermediateFile = Path.GetFullPath(
                Path.Combine(
                    taskRunner.MapMakerSettings.TempDir,
                    String.Format(
                        CultureInfo.InvariantCulture,
                        "{0}.mp",
                        taskRunner.MapMakerSettings.ProductCode)));

            taskRunner.RunCGpsMapper(
                "\"{0}\"",
                previewIntermediateFile);

            taskRunner.RegisterProductFile(new ProductFile(PreviewImgFile, Path.ChangeExtension(previewIntermediateFile, ".img"), false));
            taskRunner.RegisterProductFile(new ProductFile(TdbFile, Path.ChangeExtension(previewIntermediateFile, ".tdb"), false));
        }
示例#2
0
        public void Execute(ITaskRunner taskRunner)
        {
            string sendMapMapListFileName = Path.GetFullPath(
                Path.Combine(
                    taskRunner.MapMakerSettings.TempDir,
                    String.Format(
                        CultureInfo.InvariantCulture,
                        "filelist_{0}.txt",
                        taskRunner.MapMakerSettings.ProductCode)));

            using (FileStream stream = File.Open(sendMapMapListFileName, FileMode.Create))
            {
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.WriteLine(":region");
                    // first add the TYP file
                    writer.WriteLine(Path.GetFileName(
                                         taskRunner.GetProductFile(GenerateTypeFileTask.TypeFile).ProductFileName));

                    foreach (ProductFile file in taskRunner.ListProductFiles(GenerateMapImgFilesTask.MapImgFileName))
                    {
                        writer.WriteLine(Path.GetFileName(file.ProductFileName));
                    }
                }
            }

            taskRunner.RegisterProductFile(new ProductFile(SendMapListFileType, sendMapMapListFileName, false));
        }
        public void Execute(ITaskRunner taskRunner)
        {
            // generate IMG files
            foreach (ProductFile file in taskRunner.ListProductFiles(GenerateMapPolishFilesTask.PolishMapFileType))
            {
                taskRunner.RunCGpsMapper("\"{0}\"", file.ProductFileName);

                string imgFileName = Path.ChangeExtension(file.ProductFileName, ".img");
                taskRunner.RegisterProductFile(new ProductFile(MapImgFileName, imgFileName, false));
            }
        }
        private static void GenerateRegistryFile(ITaskRunner taskRunner, bool addFile)
        {
            string regFileName = Path.Combine(
                taskRunner.MapMakerSettings.OutputPath,
                String.Format(
                    CultureInfo.InvariantCulture,
                    addFile ? "{0}_add.reg" : "{0}_delete.reg",
                    taskRunner.MapMakerSettings.ProductCode));

            using (StreamWriter writer = new StreamWriter(regFileName))
            {
                writer.WriteLine("REGEDIT4");
                writer.WriteLine();
                writer.WriteLine(
                    @"[{0}HKEY_LOCAL_MACHINE\SOFTWARE\Garmin\MapSource\Families\{1}]",
                    addFile ? "" : "-",
                    taskRunner.MapMakerSettings.FamilyName);

                if (addFile)
                {
                    writer.WriteLine(
                        @"""ID""=hex:{0:x},{1:x}",
                        taskRunner.MapMakerSettings.FamilyCode & 0xff,
                        (taskRunner.MapMakerSettings.FamilyCode >> 8) & 0xff);
                    writer.WriteLine(@"""TYP""=""{0}""",
                                     MakeRegeditFriendlyPath(Path.GetFullPath(
                                                                 taskRunner.GetProductFile(GenerateTypeFileTask.TypeFile).
                                                                 ProductFileName)));
                    writer.WriteLine();

                    writer.WriteLine(
                        @"[HKEY_LOCAL_MACHINE\SOFTWARE\Garmin\MapSource\Families\{0}\{1}]",
                        taskRunner.MapMakerSettings.FamilyName,
                        taskRunner.MapMakerSettings.ProductCode);
                    writer.WriteLine(@"""LOC""=""{0}""",
                                     MakeRegeditFriendlyPath(Path.GetFullPath(taskRunner.MapMakerSettings.OutputPath)));
                    writer.WriteLine(@"""BMAP""=""{0}""",
                                     MakeRegeditFriendlyPath(Path.GetFullPath(
                                                                 taskRunner.GetProductFile(GeneratePreviewAndTdbFilesTask.PreviewImgFile).
                                                                 ProductFileName)));
                    writer.WriteLine(@"""TDB""=""{0}""",
                                     MakeRegeditFriendlyPath(Path.GetFullPath(
                                                                 taskRunner.GetProductFile(GeneratePreviewAndTdbFilesTask.TdbFile).ProductFileName)));
                }
            }

            taskRunner.RegisterProductFile(
                new ProductFile(
                    addFile ? MapSourceAddRegFile : MapSourceDeleteRegFile,
                    regFileName,
                    false));
        }
示例#5
0
        public void Execute(ITaskRunner taskRunner)
        {
            ProductFile polishTypeFile = taskRunner.GetProductFile(GenerateMapTypesPolishFileTask.PolishTypeFile);

            string typeFileName = (Path.Combine(
                                       Path.GetDirectoryName(polishTypeFile.ProductFileName),
                                       Path.GetFileNameWithoutExtension(polishTypeFile.ProductFileName)));

            taskRunner.RunCGpsMapper(
                "typ \"{0}\" \"{1}\"",
                Path.GetFileName(polishTypeFile.ProductFileName),
                Path.GetFileName(typeFileName));

            taskRunner.RegisterProductFile(new ProductFile(TypeFile, typeFileName, false));
        }
示例#6
0
        protected void GenerateIndividualFile(
            IPolishMapFileCreator polishMapFileCreator,
            ITaskRunner taskRunner,
            string mapFileInfo)
        {
            using (CGpsMapperMapWriter mapWriter = new CGpsMapperMapWriter(
                       polishMapFileCreator.CreatePolishMapFile(),
                       mapFileInfo))
            {
                consoleLogger.WriteLine(log, Level.Info, "Generating polish map file...");

                WriteBasicMapParameters(polishMapFileCreator, mapWriter);

                // write down used levels
                mapWriter.Add("Levels", analysis.LogicalToHardwareLevelDictionary.Count);

                int logicalLevel = 0;
                for (int i = analysis.HardwareLevelsUsed.Count - 1; i >= 0; i--)
                {
                    mapWriter.AddFormat("Level{0}={1}", logicalLevel++, analysis.HardwareLevelsUsed.Keys[i]);
                }

                for (int i = 0; i < analysis.HardwareLevelsUsed.Count; i++)
                {
                    mapWriter.AddFormat("Zoom{0}={1}", i, i);
                }

                isEmptyMap = true;
                GeneratePolishMapFileInternal(mapWriter);

                mapWriter.FinishMap();
            }

            if (false == isEmptyMap)
            {
                taskRunner.RegisterProductFile(
                    new ProductFile(
                        GenerateMapPolishFilesTask.PolishMapFileType,
                        polishMapFileCreator.CurrentPolishMapFileName,
                        true));
            }
        }
        public void Execute(ITaskRunner taskRunner)
        {
            string polishPreviewFileName = Path.GetFullPath(Path.Combine(
                                                                taskRunner.MapMakerSettings.TempDir,
                                                                String.Format(CultureInfo.InvariantCulture, "{0}_pv.txt", taskRunner.MapMakerSettings.ProductCode)));

            using (Stream mapOutputStream = File.Open(polishPreviewFileName, FileMode.Create))
            {
                using (CGpsMapperGeneralFileWriter writer = new CGpsMapperGeneralFileWriter(
                           mapOutputStream,
                           false,
                           "preview file"))
                {
                    writer
                    .AddSection("MAP")
                    .Add("FileName", taskRunner.MapMakerSettings.ProductCode)
                    .Add("MapsourceName", taskRunner.MapMakerSettings.ProductName)
                    .Add("MapSetName", taskRunner.MapMakerSettings.ProductName)
                    .Add("CDSetName", taskRunner.MapMakerSettings.ProductName)
                    .Add("MapVersion", taskRunner.MapMakerSettings.MapVersion)
                    .Add("ProductCode", taskRunner.MapMakerSettings.ProductCode)
                    .Add("CODEPAGE", taskRunner.MapMakerSettings.AdditionalMapParameters["CodePage"])
                    .Add("FID", taskRunner.MapMakerSettings.FamilyCode)
                    .Add("ID", taskRunner.MapMakerSettings.StartingMapId)
                    .Add("Copy1", "This map was from OpenStreetMap data using GroundTruth tool (by Igor Brejc)")
                    .Add("Copy2", "Visit http://igorbrejc.net/groundtruthhome")
                    .Add("Copy3", String.Format(
                             CultureInfo.InvariantCulture,
                             "Creation time: {0:D} {0:t}",
                             DateTime.Now))
                    .Add("Preview", "Y");

                    // TODO: what is the lowest level used in detailed maps?
                    writer
                    .Add("Levels", 2)
                    .Add("Level0", 11)
                    .Add("Level1", 10);

                    writer
                    .Add("Zoom0", 5)
                    .Add("Zoom1", 6);

                    // add the list of detailed files
                    writer
                    .AddSection("Files");

                    IList <ProductFile> mapImgFiles = taskRunner.ListProductFiles(GenerateMapImgFilesTask.MapImgFileName);

                    if (mapImgFiles.Count == 0)
                    {
                        consoleLogger.WriteLine(log, Level.Warn, "WARNING: there are no IMG files to process, polish preview file will not be generated");
                        return;
                    }

                    foreach (ProductFile file in mapImgFiles)
                    {
                        writer.Add("img", Path.GetFileName(file.ProductFileName));
                    }

                    writer
                    .FinishMap();
                }
            }

            taskRunner.RegisterProductFile(new ProductFile(PolishPreviewFile, polishPreviewFileName, true));
        }
示例#8
0
        public void Execute(ITaskRunner taskRunner)
        {
            string polishTypeFileName = Path.GetFullPath(
                Path.Combine(
                    taskRunner.MapMakerSettings.TempDir,
                    String.Format(CultureInfo.InvariantCulture, "{0}.TYP.txt", taskRunner.MapMakerSettings.ProductCode)));

            using (Stream mapOutputStream = File.Open(polishTypeFileName, FileMode.Create))
            {
                using (CGpsMapperGeneralFileWriter file = new CGpsMapperGeneralFileWriter(
                           mapOutputStream,
                           true,
                           "types file"))
                {
                    file.AddSection("_id");
                    file.Add("ProductCode", taskRunner.MapMakerSettings.ProductCode);
                    file.Add("FID", taskRunner.MapMakerSettings.FamilyCode);
                    file.Add("CodePage", taskRunner.MapMakerSettings.AdditionalMapParameters["CodePage"]);

                    file.AddSection("_DRAWORDER");

                    int areaTypesCount = taskRunner.MapMakerSettings.TypesRegistry.AreaTypeRegistrations.Count;

                    int drawOrder = 1;
                    foreach (AreaTypeRegistration registration in taskRunner.MapMakerSettings.TypesRegistry.AreaTypeRegistrationsByPriority)
                    {
                        file
                        .AddFormat(";rule={0}", registration.RuleName)
                        .AddFormat("Type=0x{0:x},{1}", registration.TypeId, drawOrder);

                        drawOrder = Math.Min(drawOrder + 1, 8);
                    }

                    foreach (AreaTypeRegistration registration in taskRunner.MapMakerSettings.TypesRegistry.AreaTypeRegistrationsByPriority)
                    {
                        file.AddSection("_polygon")
                        .AddFormat(";rule={0}", registration.RuleName)
                        .AddFormat("Type=0x{0:x}", registration.TypeId)
                        ;

                        WritePolygonTypeDefinition(taskRunner.MapMakerSettings, file, registration);
                    }

                    foreach (PointTypeRegistration registration in taskRunner.MapMakerSettings.TypesRegistry.PointTypeRegistrations.Values)
                    {
                        if (registration.Pattern.Height > 0)
                        {
                            file.AddSection("_point")
                            .AddFormat(";rule={0}", registration.RuleName)
                            .AddFormat("Type=0x{0:x}", registration.TypeId)
                            ;

                            WritePointTypeDefinition(taskRunner.MapMakerSettings, file, registration);
                        }
                    }

                    foreach (LineTypeRegistration registration in
                             taskRunner.MapMakerSettings.TypesRegistry.LineTypeRegistrations.Values)
                    {
                        WritePolylineTypeDefinition(taskRunner.MapMakerSettings, file, registration);
                    }

                    file.FinishMap();
                }
            }

            taskRunner.RegisterProductFile(new ProductFile(PolishTypeFile, polishTypeFileName, true));
        }