Ejemplo n.º 1
0
        private void FilterApplyClick(object sender)
        {
            MyAnimations.AnimateOpacity(LabelWriteOutput, 0, 1.00, 300);
            MyAnimations.AnimateOpacity(ImageProcessingInfo, 1.0, 0, 300);

            if (Image3.Opacity > 0)
            {
                MyAnimations.AnimateOpacity(Image3, 1.0, 0, 300);
            }

            var filterBox = (FilterEdit)sender;

            _lastFilterType = filterBox.TypeOfFilter;

            var filterColors = new[]
            {
                Color.FromArgb(150, 244, 164, 96),
                Color.FromArgb(150, 164, 244, 96),
                Color.FromArgb(150, 244, 96, 164),
                Color.FromArgb(150, 96, 164, 244)
            };

            if (FiltersGraph.SelectedFilter != -1)
            {
                FiltersGraph.EditFilterDef(FiltersGraph.SelectedFilter, filterBox.TypeOfFilter,
                                           filterBox.FrequencyOne, filterBox.FrequencyTwo,
                                           filterColors[FiltersGraph.SelectedFilter]);
            }
            else
            {
                FiltersGraph.AddFilterDef(filterBox.TypeOfFilter,
                                          filterBox.FrequencyOne, filterBox.FrequencyTwo,
                                          filterColors[FiltersGraph.GetFiltersCount()]);
            }
        }
Ejemplo n.º 2
0
 private void FilterDeleteClick(object sender)
 {
     if (FiltersGraph.SelectedFilter != -1)
     {
         FiltersGraph.DeleteFilterDef(FiltersGraph.SelectedFilter);
     }
 }
Ejemplo n.º 3
0
        private string WriteConfigFile()
        {
            var configFile = Path.GetTempFileName();

            var configData = "{\n    \"channels\":\n    [\n";

            for (var n = 0; n < FiltersGraph.GetFiltersCount(); n++)
            {
                var filter = FiltersGraph.GetFilterDef(n);

                if (n > 0)
                {
                    configData += ",\n";
                }

                var order = 256000;
                if (filter.Item2 > 200)
                {
                    order = 128000;
                }

                configData += "        {\n            \"source\":\"left\",\n            \"filter\":{\"type\":\"";
                configData += filter.Item1.ToString() + "\", \"order\":" + order + ",";

                if (filter.Item1 == FilterEdit.FilterType.BandPass ||
                    filter.Item1 == FilterEdit.FilterType.BandStop)
                {
                    configData += "\"lofreq\": " + filter.Item2 + ", \"hifreq\":" + filter.Item3 + "}";
                }
                else
                {
                    configData += "\"freq\": " + filter.Item2 + "}";
                }

                configData += "\n        },\n";

                configData += "        {\n            \"source\":\"right\",\n            \"filter\":{\"type\":\"";
                configData += filter.Item1.ToString() + "\", \"order\":" + order + ",";

                if (filter.Item1 == FilterEdit.FilterType.BandPass ||
                    filter.Item1 == FilterEdit.FilterType.BandStop)
                {
                    configData += "\"lofreq\": " + filter.Item2 + ", \"hifreq\":" + filter.Item3 + "}";
                }
                else
                {
                    configData += "\"freq\": " + filter.Item2 + "}";
                }

                configData += "\n        }";
            }

            configData += "\n    ]\n}\n";

            File.WriteAllText(configFile, configData);

            return(configFile);
        }
Ejemplo n.º 4
0
        private void AddProcessingMouseDown(object sender, MouseButtonEventArgs e)
        {
            if (Grid2.Opacity < 1.0)
            {
                return;
            }
            if (Grid2.IsEnabled == false)
            {
                return;
            }

            var grid = (Grid)sender;

            if (Image2.Opacity < 1.0 && Grid2.Opacity > 0)
            {
                Image2.IsEnabled = true;

                MyAnimations.AnimateRenderScale(grid, 1.0, 0.98,
                                                grid.ActualWidth / 2, grid.ActualHeight / 2, 100, null, null, true);

                MyAnimations.AnimateRenderTranslation(Grid3, TranslateTransform.YProperty,
                                                      -Grid1.ActualHeight - 20, 0, 300, 50);
                MyAnimations.AnimateOpacity(Grid3, 0, 0.7, 100, 50);

                MyAnimations.AnimateOpacity(LabelAddProcessing, 1.0, 0.0, 300);
                MyAnimations.AnimateOpacity(Image2, 0.0, 1.0, 300);
            }
            else
            {
                if (Image2.IsEnabled && (FiltersGraph.GetFiltersCount() < 4 ||
                                         FiltersGraph.SelectedFilter != -1))
                {
                    Image2.IsEnabled = false;

                    var edit = new FilterEdit
                    {
                        ApplyClick  = FilterApplyClick,
                        DeleteClick = FilterDeleteClick
                    };

                    if (FiltersGraph.SelectedFilter != -1)
                    {
                        var filter = FiltersGraph.GetFilterDef(FiltersGraph.SelectedFilter);
                        edit.TypeOfFilter = filter.Item1;
                        edit.FrequencyOne = filter.Item2;
                        edit.FrequencyTwo = filter.Item3;
                        edit.EditMode     = true;
                    }
                    else
                    {
                        edit.TypeOfFilter = _lastFilterType;
                        edit.FrequencyOne = FiltersGraph.MouseFrequency;
                        edit.FrequencyTwo = edit.FrequencyOne + 50;
                        edit.EditMode     = false;
                    }

                    edit.Closed += (o, args) => Image2.IsEnabled = true;
                    MyUtils.ShowCommonDialog(edit, edit.BackGrid, ActualWidth, ActualHeight);
                }
            }
        }
Ejemplo n.º 5
0
        private void SelectSourceMouseDown(object sender, MouseButtonEventArgs e)
        {
            if (Grid1.IsEnabled == false)
            {
                return;
            }

            var grid = (Grid)sender;

            MyAnimations.AnimateRenderScale(grid, 1.0, 0.98,
                                            grid.ActualWidth / 2, grid.ActualHeight / 2, 100, (o, args) =>
            {
                var fileName = "";
                if (OpenFileDialog(ref fileName) == false)
                {
                    return;
                }

                _sourceFile = fileName;

                var runtimeWrap = new RuntimeWrap();

                try
                {
                    var fileInfo = new Dictionary <string, string>();
                    var response = runtimeWrap.GetFileResponse(fileName, ref fileInfo);

                    var fileFreq    = long.Parse(fileInfo["samplerate"]);
                    var fileSamples = long.Parse(fileInfo["samples_per_channel"]);
                    var duration    = fileSamples * 8 / fileFreq;

                    DurationLabel.Content = "File duration: " + TimeSpan.FromSeconds(duration).ToString();

                    var responseConvert =
                        response.Select(
                            tuple => new PointF((float)tuple.Item1, (float)Math.Log(tuple.Item2)))
                        .ToArray();

                    SourceGraph.SetPoints(0, responseConvert, Colors.LightSteelBlue, "Source");

                    if (Grid2.Opacity < 1.0)
                    {
                        Dispatcher.InvokeAsync(() =>
                        {
                            MyAnimations.AnimateRenderTranslation(Grid2, TranslateTransform.YProperty,
                                                                  -Grid1.ActualHeight - 20, 0, 300, 50);
                            MyAnimations.AnimateOpacity(Grid2, 0, 0.7, 100, 50);
                            MyAnimations.AnimateOpacity(LabelSelectDsdiff, 1.0, 0.0, 300);
                            MyAnimations.AnimateOpacity(Image1, 0.0, 1.0, 300);

                            if (LabelLoadError.Opacity > 0)
                            {
                                MyAnimations.AnimateOpacity(LabelLoadError, 1.0, 0, 300);
                            }
                        });
                    }

                    if (LabelWriteOutput.Opacity < 1.0)
                    {
                        Dispatcher.InvokeAsync(() =>
                        {
                            MyAnimations.AnimateOpacity(LabelWriteOutput, 0, 1.0, 300);
                            MyAnimations.AnimateOpacity(ImageProcessingInfo, 1.0, 0, 300);
                        });
                    }

                    if (FiltersGraph.GetFiltersCount() > 0)
                    {
                        Dispatcher.InvokeAsync(() =>
                        {
                            if (Image3.Opacity > 0)
                            {
                                MyAnimations.AnimateOpacity(Image3, 1.0, 0, 300);
                            }

                            if (Grid3.Opacity < 1.0)
                            {
                                MyAnimations.AnimateOpacity(Grid3, 0, 1.0, 300);
                            }
                        });
                    }
                }
                catch (Exception ex)
                {
                    Dispatcher.InvokeAsync(() =>
                    {
                        LabelLoadError.Content = "Unable to open file: " + ex.Message;

                        MyAnimations.AnimateOpacity(LabelLoadError, 0, 1.0, 300);

                        if (LabelSelectDsdiff.Opacity < 1.0)
                        {
                            MyAnimations.AnimateOpacity(LabelSelectDsdiff, 0, 1.0, 300);
                        }

                        if (Grid2.Opacity > 0)
                        {
                            MyAnimations.AnimateOpacity(Grid2, 1.0, 0, 300);
                        }

                        if (Grid3.Opacity > 0)
                        {
                            MyAnimations.AnimateOpacity(Grid3, 1.0, 0, 300);
                        }

                        if (Image1.Opacity > 0)
                        {
                            MyAnimations.AnimateOpacity(Image1, 1.0, 0, 300);
                        }
                    });
                }
            }, null, true);
        }