/// <summary> /// Regenerate stereogram using the same options (but with a dialog to allow you to change them, or there'd really be no point) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void CmdRegenerateStereogramExecuted(object sender, ExecutedRoutedEventArgs e) { Stereogram src = e.Parameter as Stereogram; if (src == null || src.HasOptions == false) { throw new ArgumentException("Cannot regenerate stereogram"); } Options saveOptions = new Options(src.options); DialogGenerateStereogram dialog = new DialogGenerateStereogram(saveOptions, theViewModel.GetDepthmaps(), theViewModel.GetTextures(), false); bool?ok = dialog.ShowDialog(); if (ok != true) { return; } bool bSave = dialog.SaveStereogram; // Adopt the options from the dialog if they were accepted this.DataContext = null; Options = saveOptions; this.DataContext = theViewModel; theViewModel.GenerateStereogram(saveOptions, stereogram => StereogramGeneratedCallback(stereogram, bSave)); }
/// <summary> /// Callback for generated stereograms /// </summary> /// <param name="?"></param> private void StereogramGeneratedCallback(Stereogram stereogram, bool bSave) { if (stereogram == null || stereogram.Bitmap == null) { MessageBox.Show("Error generating stereogram", "Error generating stereogram", MessageBoxButton.OK); return; } // Highlight it theViewModel.PreviewItem = stereogram; if (bSave) { try { theViewModel.SaveStereogram(stereogram); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error saving file", MessageBoxButton.OK); } } MessageBox.Show(String.Format("Generated Stereogram in {0}ms", stereogram.Milliseconds.ToString())); }
/// <summary> /// Restore settings from a stereogram /// </summary> /// <param name="stereogram"></param> public void RestoreStereogramSettings(Stereogram stereogram) { if (stereogram != null && stereogram.options != null) { DepthmapPalette.SelectItem(stereogram.options.depthmap); TexturePalette.SelectItem(stereogram.options.texture); Options = new Options(stereogram.options); PreviewItem = stereogram; } }
// Restore settings from a previously generated stereogram public void CmdRestoreStereogramSettingsExecuted(object sender, ExecutedRoutedEventArgs e) { Stereogram stereogram = (e.Parameter as Stereogram) ?? theViewModel.SelectedStereogram; if (stereogram.options != null) { this.DataContext = null; theViewModel.RestoreStereogramSettings(stereogram); this.DataContext = theViewModel; // Rebind controls } }
private void OnStereogramGenerated(Stereogram stereogram, StereogramGenerated callback) { if (stereogram != null) { myStereograms.AddItem(stereogram); SelectedPalette = StereogramPalette; } if (callback != null) { callback(stereogram); } EndMonitoring(); }
/// <summary> /// Save an already generated stereogram to a file... should really pop up the options box /// to confirm settings and allow tweaking. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void CmdSaveStereogramExecuted(object sender, ExecutedRoutedEventArgs e) { Stereogram stereogram = (e.Parameter as Stereogram) ?? theViewModel.SelectedStereogram; if (null == stereogram || false == stereogram.HasOptions) { return; } try { theViewModel.SaveStereogram(stereogram); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error saving file", MessageBoxButton.OK); } }
/// <summary> /// Generate a preview stereogram using the currently specified options /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void CmdPreviewStereogramExecuted(object sender, ExecutedRoutedEventArgs e) { Options previewOptions = new Options(Options); if (e.Parameter is Stereogram && ((Stereogram)e.Parameter).HasOptions) { Stereogram src = (Stereogram)e.Parameter; previewOptions.texture = src.options.texture ?? theViewModel.SelectedTexture; previewOptions.depthmap = src.options.depthmap ?? theViewModel.SelectedDepthmap; } else { previewOptions.texture = (e.Parameter as Texture) ?? theViewModel.SelectedTexture; previewOptions.depthmap = (e.Parameter as Depthmap) ?? theViewModel.SelectedDepthmap; } previewOptions.resolutionX = (int)PreviewPane.ActualWidth; previewOptions.resolutionY = (int)PreviewPane.ActualHeight; theViewModel.RequestPreview(previewOptions); }
/// <summary> /// Constructor for the view model - binds to the model /// </summary> /// <param name="model"></param> public StereogrammerViewModel() { Options = new Options(); DepthmapPalette = AddPalette(myDepthmaps, Commands.CmdPreviewStereogram); TexturePalette = AddPalette(myTextures, Commands.CmdPreviewStereogram); StereogramPalette = AddPalette(myStereograms, Commands.CmdPreviewStereogram); previewer = new StereogramGeneratorAsync(new Action <Stereogram>(stereogram => { if (stereogram != null) { this.PreviewStereogram = stereogram; } else { ErrorMessage("Preview failed!"); } EndMonitoring(); })); }
public void CmdRestoreStereogramSettingsCanExecute(object sender, CanExecuteRoutedEventArgs e) { Stereogram stereogram = (e.Parameter as Stereogram) ?? theViewModel.SelectedStereogram; e.CanExecute = (stereogram != null && stereogram.options != null); }
public void CmdSaveStereogramCanExecute(object sender, CanExecuteRoutedEventArgs e) { Stereogram stereogram = (e.Parameter as Stereogram) ?? theViewModel.SelectedStereogram; e.CanExecute = (stereogram != null); }
// ReSharper disable once UnusedMember.Local private int OnExecute(CommandLineApplication app) { _defaultColor = Console.ForegroundColor; WriteLine("**************************************************************"); WriteLine("********** Welcome to Sistem - Stereogram Generator **********"); WriteLine("**************************************************************"); var result = 0; var depthMapFile = FindFile(DepthMap); if (string.IsNullOrEmpty(depthMapFile)) { WriteError($"Depthmap file could not be found"); result = 2; } var patternFile = string.Empty; if (!string.IsNullOrEmpty(Pattern)) { patternFile = FindFile(Pattern); if (string.IsNullOrEmpty(patternFile)) { WriteError($"Pattern file could not be found"); result = 2; } } if (result == 0) { using (var stereogram = new Stereogram()) { var success = true; // Load image files success &= stereogram.LoadDepthMap(depthMapFile); if (!string.IsNullOrWhiteSpace(patternFile)) { success &= stereogram.LoadPattern(patternFile); } if (success) { // Set parameters if (MinSeparation.HasValue) { stereogram.MinSeparation = MinSeparation.Value; } if (MaxSeparation.HasValue) { stereogram.MaxSeparation = MaxSeparation.Value; } if (PatternWidth.HasValue) { stereogram.PatternWidth = PatternWidth.Value; } if (Origin.HasValue) { stereogram.Origin = Origin.Value; } if (YShift.HasValue) { stereogram.YShift = YShift.Value; } if (GapFilling.HasValue) { stereogram.GapFilling = GapFilling.Value; } if (NoiseReductionRadius.HasValue) { stereogram.NoiseReductionRadius = NoiseReductionRadius.Value; } if (NoiseReductionThreshold.HasValue) { stereogram.NoiseReductionThreshold = NoiseReductionThreshold.Value; } if (Oversampling.HasValue) { stereogram.Oversampling = Oversampling.Value; } if (CrossView.HasValue) { stereogram.CrossView = true; } if (ColoredNoise.HasValue) { stereogram.ColoredNoise = true; } if (NoiseDensity.HasValue) { stereogram.NoiseDensity = NoiseDensity.Value; } if (DisablePostProcessingOverSampling.HasValue) { stereogram.PostProcessingOversampling = false; } if (NoParallelProcessing.HasValue) { stereogram.ParallelProcessing = false; } // Generate the stereogram success = stereogram.Generate(); } if (!success) { foreach (var message in stereogram.ValidationErrors) { WriteError(message); } result = 3; } // Always write warnings foreach (var message in stereogram.ValidationWarnings) { WriteWarning(message); } if (success) { WriteSuccess("The stereogram was successfully generated. Saving..."); var fileName = stereogram.SaveResult(ResultFile); WriteSuccess("The stereogram was saved as '{0}'", fileName); } } } if (result > 0) { app.ShowHelp(); } return(result); }
/// <summary> /// Save a stereogram /// </summary> /// <param name="stereogram"></param> public void SaveStereogram(Stereogram stereogram) { Debug.Assert(stereogram != null); SaveBitmapToFile(stereogram, "Save Stereogram", StereogramPalette.sDefaultDirectory); }