/// <summary>Creates the mat file.</summary> /// <param name="preview">if set to <c>true</c> a preview only will create.</param> public void CreateMatFile(bool preview = false) { var filename = CharConverterService.ConvertCharsToAscii(Path.GetFileName(file)); var colorsDif = new string[3]; var colorsSpe = new string[3]; file = file.Replace(Extension, string.Empty); for (int i = 0; i < rgb.Length; i++) { colorsDif[i] = (rgb[i] / 255F).ToString(CultureInfo.InvariantCulture); colorsSpe[i] = (rgb[i] / 2550F).ToString(CultureInfo.InvariantCulture); } matFile = new List <string> { $"mat {filename.Replace(Extension, string.Empty)}", $"dif {colorsDif[0]} {colorsDif[1]} {colorsDif[2]}", $"amb {colorsDif[0]} {colorsDif[1]} {colorsDif[2]}", $"spe {colorsSpe[0]} {colorsSpe[1]} {colorsSpe[2]}" }; if (fromJpg) { matFile.Add($"tex image jpg {filename.Replace(Extension, string.Empty)}"); } AddOptionals(); if (preview) { eventAggregator.GetEvent <MatFilePreviewUpdateEvent>().Publish(matFile); } else { FileService.Write($"{file}.mat", matFile); } var logMessage = $"[{GetType().Name}] \"mat\" file generated"; unityContainer.Resolve <ILoggerFacade>().Log(logMessage, Category.Debug, Priority.None); }
public void CanSetAndGetSolidColorName() { vm.SolidColorName = EXEPTED_STRING; Assert.AreEqual(CharConverterService.ConvertCharsToAscii(EXEPTED_STRING), vm.SolidColorName); }
[ExcludeFromCodeCoverage] // TODO: could maybe remove after creating a test of this private async void StartGeneration() { var metroDialog = new MetroMessageDisplayService(Container); var controller = await metroDialog.ShowProgressAsync(infraProps.Resources.ProgressDialogTitle, infraProps.Resources.ProgressDialogPreviewContent); controller.SetIndeterminate(); controller.SetCancelable(true); int sumFiles = SelectedFilesCollection.Count; int curFile = 0; controller.Maximum = sumFiles; await Task.Delay(250); if (!Directory.Exists(PathNames.TempFolderPath)) { Directory.CreateDirectory(PathNames.TempFolderPath); } foreach (var file in SelectedFilesCollection.Where(file => File.Exists(file.FullFilePath))) { try { var tmpFile = PathNames.TempFolderPath + CharConverterService.ConvertCharsToAscii(file.FileName + EXTENSION); File.Copy(file.FullFilePath, tmpFile, true); await Task.Delay(50); ExternalProgramService.OpenThirdParty("fix3ds.exe", " -m \"" + tmpFile + "\"", PathNames.ThirdPartyPath); await Task.Delay(50); File.Delete(file.FullFilePath); File.Copy(tmpFile, SelectedPath + Path.GetFileName(tmpFile), true); File.SetCreationTime(SelectedPath + Path.GetFileName(tmpFile), DateTime.Now); await Task.Delay(50); controller.SetProgress(++curFile); controller.SetMessage(string.Format(infraProps.Resources.ProgressDialogRunningContent, curFile, sumFiles)); await Task.Delay(50); } catch (Exception ex) { var logMessage = $"[{GetType().Name}] Exception at generation: {ex}"; Container.Resolve <ILoggerFacade>().Log(logMessage, Category.Exception, Priority.High); DialogService.Exception(ex, DialogService.ExceptionType.Universal); } } await controller.CloseAsync(); GetFiles(); if (controller.IsCanceled) { await metroDialog.ShowMessageAsync(infraProps.Resources.MessageDialogCancelTitle, infraProps.Resources.MessageDialogCancelContent); return; } if (await metroDialog.ShowMessageAsync(infraProps.Resources.MessageDialogCompleteTitle, string.Format(infraProps.Resources.MessageDialogCompleteContent, "\n"), MessageDialogStyle.AffirmativeAndNegative) == MessageDialogResult.Affirmative) { ExternalProgramService.OpenExplorer(SelectedPath); } EventAggregator.GetEvent <StatusBarMessageUpdateEvent>().Publish(string.Format(Resources.StatusBarFilesGenerated, sumFiles)); }
/// <summary>Does the generation asynchronous.</summary> public async void DoGenerationAsync() { var metroDialog = new MetroMessageDisplayService(unityContainer); var controller = await metroDialog.ShowProgressAsync(infraProps.Resources.ProgressDialogTitle, infraProps.Resources.ProgressDialogPreviewContent); controller.SetIndeterminate(); controller.SetCancelable(true); int sumFiles = GenerationFiles.Count; int curFile = 0; controller.Maximum = sumFiles; await Task.Delay(250); foreach (var file in GenerationFiles) { try { var fileToGenerate = file.FullFilePath; var filename = CharConverterService.ConvertCharsToAscii(file.FileName) + Extension; FileInfo fi = new FileInfo(fileToGenerate); if (File.Exists(fileToGenerate)) { var pathForOrig = fi.DirectoryName + suffixPathForOrig; if (!Directory.Exists(pathForOrig)) { Directory.CreateDirectory(pathForOrig); } var savedOriginalFile = pathForOrig + file.FileName + Extension; if (!File.Exists(savedOriginalFile)) { File.Copy(fileToGenerate, savedOriginalFile, false); } await Task.Delay(50); var imageService = new ImageService(); var resizedImage = imageService.ResizeImage(savedOriginalFile, maxWidth, maxHeight, false); resizedImage.Save(fileToGenerate, ImageFormat.Jpeg); resizedImage.Dispose(); await Task.Delay(50); fileToGenerate = $@"{fi.DirectoryName}\{filename}"; await Task.Delay(50); } if (!file.FullFilePath.Equals($@"{fi.DirectoryName}\{filename}")) { File.Move(file.FullFilePath, fileToGenerate); } await Task.Delay(50); var rgb = File.Exists(fileToGenerate) ? ColorConverterService.GetRgbFromImage(fileToGenerate) : SolidRgb; new GenerateThumbs().DoGeneration(fileToGenerate, rgb, IsFromJpg, ThumbnailService.ShowPreview.No); await Task.Delay(50); var generateFile = new GenerateMatFile(fileToGenerate, rgb, IsFromJpg); generateFile.CreateMatFile(); await Task.Delay(50); controller.SetProgress(++curFile); controller.SetMessage(string.Format(infraProps.Resources.ProgressDialogRunningContent, curFile, sumFiles)); await Task.Delay(50); } catch (Exception ex) { logMessage = $"[{GetType().Name}] Exception at {MethodBase.GetCurrentMethod()}: {ex}"; unityContainer.Resolve <ILoggerFacade>().Log(logMessage, Category.Exception, Priority.High); DialogService.Exception(ex, DialogService.ExceptionType.Universal); } } await controller.CloseAsync(); eventAggregator.GetEvent <FilesUpdateEvent>().Publish(FileCollection); if (controller.IsCanceled) { await metroDialog.ShowMessageAsync(infraProps.Resources.MessageDialogCancelTitle, infraProps.Resources.MessageDialogCancelContent); return; } if (await metroDialog.ShowMessageAsync(infraProps.Resources.MessageDialogCompleteTitle, string.Format(infraProps.Resources.MessageDialogCompleteContent, "\n"), MessageDialogStyle.AffirmativeAndNegative) == MessageDialogResult.Affirmative) { ExternalProgramService.OpenExplorer(SelectedPath); } eventAggregator.GetEvent <StatusBarMessageUpdateEvent>().Publish(string.Format(Resources.StatusBarFilesGenerated, sumFiles)); logMessage = $"[{GetType().Name}] MatFileGeneration completed"; unityContainer.Resolve <ILoggerFacade>().Log(logMessage, Category.Debug, Priority.None); }