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)); }
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)); }
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)); }
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)); }
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)); }