├── .editorconfig ├── .gitignore ├── README.md ├── Setup └── Setup │ ├── Config.wxi │ ├── InstallerBanner.png │ ├── InstallerBkg.png │ ├── Libs.wxs │ ├── License.rtf │ ├── Product.wxs │ ├── Resources.wxs │ ├── Setup.wixproj │ ├── Viana.wxs │ └── en-US.wxl ├── VianaNET.sln ├── VianaNET.sln.DotSettings.user └── VianaNET ├── App.xaml ├── App.xaml.cs ├── Application ├── ExtensionMethods.cs ├── Project.cs ├── ProjectEntry.cs └── RecentFiles.cs ├── CustomStyles ├── Colors │ ├── ColorType.cs │ ├── Coloration.cs │ ├── ConvertColor.cs │ ├── HSXColor.cs │ ├── OfficeColor.cs │ ├── OfficeColorPallet.cs │ ├── OfficeColors.cs │ └── OfficePallet.cs ├── Controls │ ├── Arc.cs │ ├── Arrow.cs │ ├── ArrowPointer.cs │ ├── CoordinateSystem.xaml │ ├── CoordinateSystem.xaml.cs │ ├── DualTextBox.xaml │ ├── DualTextBox.xaml.cs │ ├── ImageButton.xaml │ ├── ImageButton.xaml.cs │ ├── ImageButtonPallet.cs │ ├── LabeledSlider.xaml │ ├── LabeledSlider.xaml.cs │ ├── LabeledTextBox.xaml │ ├── LabeledTextBox.xaml.cs │ ├── LineStyleControl.xaml │ ├── LineStyleControl.xaml.cs │ ├── MediaSlider.xaml │ ├── MediaSlider.xaml.cs │ ├── MediaSliderControl.xaml │ ├── MediaSliderControl.xaml.cs │ ├── NumericUpDown.xaml │ ├── NumericUpDown.xaml.cs │ ├── Slider.xaml │ ├── SliderValue.xaml │ ├── SliderValue.xaml.cs │ ├── VianaTickBar.cs │ └── VisualContainerElement.cs ├── Converter │ ├── AberrationDoubleToStringConverter.cs │ ├── Converter.xaml │ ├── DSTimeToMillisecondsConverter.cs │ ├── DoubleToStringConverter.cs │ ├── InverseBooleanToVisibilityConverter.cs │ ├── LineStyleToBooleanConverter.cs │ ├── NumberOfObjectsToVisibilityConverter.cs │ ├── PercentToDoubleConverter.cs │ ├── PlusOneConverter.cs │ ├── RulerUnitStringConverter.cs │ └── UnitDoubleStringConverter.cs ├── Cursors │ ├── CursorMinus.cur │ └── CursorPlus.cur ├── FontAwesome │ ├── AwesomeFontType.cs │ ├── Icon.cs │ ├── IconBlock.cs │ ├── IconChar.cs │ ├── IconChar.tt │ ├── IconHelper.cs │ ├── IconSource.cs │ └── fontawesome-all.css ├── Styles │ ├── BackgroundStyles.xaml │ ├── DataGridStyle.xaml │ ├── EnumStyles.xaml │ ├── GeometryItems.xaml │ ├── OfficeColors.xaml │ ├── SliderStyles.xaml │ ├── SliderStyles.xaml.cs │ ├── TextBoxStyles.xaml │ └── VianaStyle.xaml ├── Types │ ├── AxisType.cs │ ├── CameraDevice.cs │ ├── ChartType.cs │ ├── CursorcolorType.cs │ ├── DictionaryProxy.cs │ ├── DifferenceQuotientType.cs │ ├── DoubleUtilities.cs │ ├── LengthUnit.cs │ ├── MeasurementType.cs │ ├── QuestionResult.cs │ ├── SortedCollection.cs │ ├── SortedObservableCollection.cs │ ├── TimeUnit.cs │ ├── TrackObject.cs │ ├── UiServices.cs │ └── VideoMode.cs └── Validation │ └── NumberValidationRule.cs ├── Data ├── CalibrationData.cs ├── ChartData.cs ├── Collections │ ├── DataAxes.cs │ ├── DataCharts.cs │ ├── DataCollection.cs │ ├── DataSample.cs │ ├── TimeSample.cs │ └── XYSample.cs ├── Filter │ ├── FilterBase.cs │ ├── FilterData.cs │ ├── Interpolation │ │ ├── ExponentialSmoothControl.xaml │ │ ├── ExponentialSmoothControl.xaml.cs │ │ ├── ExponentialSmoothFilter.cs │ │ ├── InterpolationFilter.cs │ │ ├── InterpolationFilterTypes.cs │ │ ├── InterpolationOptionsDialog.xaml │ │ ├── InterpolationOptionsDialog.xaml.cs │ │ ├── MovingAverageFilter.cs │ │ ├── MovingAverageUserControl.xaml │ │ └── MovingAverageUserControl.xaml.cs │ ├── LineOptionsDialog.xaml │ ├── LineOptionsDialog.xaml.cs │ ├── NumericalPrecisionDialog.xaml │ ├── NumericalPrecisionDialog.xaml.cs │ ├── Regression │ │ ├── MatrixLibrary.cs │ │ ├── RegressionFilter.cs │ │ ├── RegressionOptionsDialog.xaml │ │ ├── RegressionOptionsDialog.xaml.cs │ │ └── RegressionType.cs │ └── Theory │ │ ├── CalculatorAndFktEditor.xaml │ │ ├── CalculatorAndFktEditor.xaml.cs │ │ ├── FunctionCalcTree.cs │ │ ├── Parser.cs │ │ └── TheoryFilter.cs ├── ProcessingData.cs └── VideoData.cs ├── Fonts ├── FontAwesome5Brands-Regular-400.otf ├── FontAwesome5Pro-Light-300.otf ├── FontAwesome5Pro-Regular-400.otf └── FontAwesome5Pro-Solid-900.otf ├── Images ├── Analyse16.png ├── Analyse32.png ├── Angle16.png ├── Angle32.png ├── AutomaticDataAquisition16.png ├── AutomaticDataAquisition32.png ├── AutomaticDataAquisitionStop16.png ├── AutomaticDataAquisitionStop32.png ├── Calibrate16.png ├── Calibrate32.png ├── Capture16.png ├── Capture32.png ├── Chart16.png ├── Chart32.png ├── ChartTypeArea16.png ├── ChartTypeArea32.png ├── ChartTypeBubble16.png ├── ChartTypeBubble32.png ├── ChartTypeColumn16.png ├── ChartTypeColumn32.png ├── ChartTypeLine16.png ├── ChartTypeLine32.png ├── ChartTypePie16.png ├── ChartTypePie32.png ├── ChartTypeXYScatter16.png ├── ChartTypeXYScatter32.png ├── ClipVideo16.png ├── ClipVideo32.png ├── Close16.png ├── Close32.png ├── Color32.png ├── ColorDetection16.png ├── ColorDetection32.png ├── ColorReset32.png ├── CoordinateSystem16.png ├── CoordinateSystem32.png ├── DataDelete16.png ├── DataDelete32.png ├── Datagrid16.png ├── Datagrid32.png ├── DifferenceQuotient16.png ├── DifferenceQuotient32.png ├── DownArrow.png ├── Exit32.png ├── ExportChart32.png ├── ExportChartToClipboard16.png ├── ExportChartToClipboard32.png ├── ExportChartToFile16.png ├── ExportChartToFile32.png ├── ExportChartToWord16.png ├── ExportChartToWord32.png ├── ExportData32.png ├── ExportToCsv16.png ├── ExportToCsv32.png ├── ExportToOds16.png ├── ExportToOds32.png ├── ExportToTxt16.png ├── ExportToTxt32.png ├── ExportToXls16.png ├── ExportToXls32.png ├── ExportToXml16.png ├── ExportToXml32.png ├── FileOpen16.png ├── FileOpen32.png ├── Help16.png ├── Help32.png ├── InstallerBanner.jpg ├── InstallerBanner.psd ├── InstallerBkg.psd ├── InterpolateData16.png ├── InterpolateData32.png ├── LineColor16.png ├── LineColor32.png ├── LoadVideo16.png ├── LoadVideo32.png ├── ManualDataAquisition16.png ├── ManualDataAquisition32.png ├── ModifyData16.png ├── ModifyData32.png ├── MotionDetection16.png ├── MotionDetection32.png ├── New16.png ├── New32.png ├── NoVideo.psd ├── NoVideo800600.png ├── Open16.png ├── Open32.png ├── Options16.png ├── Options32.png ├── Pause16.png ├── PlayControl16.png ├── PlayControl32.png ├── PlayControl48.png ├── Properties16.png ├── Properties32.png ├── Recalculate16.png ├── Recalculate32.png ├── Record16.png ├── RecordControl16.png ├── RecordControl16B.png ├── RecordControl32.png ├── RecordControl48.png ├── RecordVideo.psd ├── RecordVideo16.png ├── RecordVideo32.png ├── RegressionExponentialA16.png ├── RegressionExponentialA32.png ├── RegressionExponentialB16.png ├── RegressionExponentialB32.png ├── RegressionLinear16.png ├── RegressionLinear32.png ├── RegressionLogarithmus16.png ├── RegressionLogarithmus32.png ├── RegressionPotentiell16.png ├── RegressionPotentiell32.png ├── RegressionQuadratisch16.png ├── RegressionQuadratisch32.png ├── RegressionResonanz16.png ├── RegressionResonanz32.png ├── RegressionSinus16.png ├── RegressionSinus32.png ├── RegressionSinusExponential16.png ├── RegressionSinusExponential32.png ├── Reset16.png ├── Reset32.png ├── Restart16.png ├── Restart32.png ├── Revert16.png ├── RevertLayout32.png ├── Rotate16.png ├── Rotate32.png ├── Save16.png ├── Save32.png ├── SaveImage32.png ├── SaveLayout32.png ├── SeekNext16.png ├── SeekPrevious16.png ├── SelectColor16.png ├── SelectColor32.png ├── SelectObject16.png ├── SelectObject32.png ├── SetCutoutLeft16.png ├── SetCutoutRight16.png ├── SetZeroTime16.png ├── SkipPoints16.png ├── SkipPoints32.png ├── Start16.png ├── StepForward16.png ├── StepForward32.png ├── Stop16.png ├── StopControl16.png ├── StopControl32.png ├── StopControl48.png ├── TimeUnit16.png ├── TimeUnit32.png ├── UpArrow16.png ├── VianaLogo.psd ├── VianaLogo64.png ├── VianaNET.ico ├── VianaNET32.psd ├── VianaNET_32.png ├── Video16.png ├── Video32.png ├── VideoDeviceOptions16.png ├── VideoDeviceOptions32.png ├── VideoInfo16.png ├── VideoInfo32.png ├── VideoOpen.psd ├── VideoOpen32.png ├── VideoWindow16.png ├── VideoWindow32.png └── Word16.png ├── Localization ├── Labels.Designer.cs ├── Labels.de.Designer.cs ├── Labels.de.resx ├── Labels.en.Designer.cs ├── Labels.en.resx └── Labels.resx ├── Logging ├── ErrorLogger.cs ├── InformationDialog.xaml ├── InformationDialog.xaml.cs └── TraceListener.cs ├── MainWindow ├── AboutWindow.xaml ├── AboutWindow.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── StatusBarContent.cs ├── TopFrame.xaml ├── TopFrame.xaml.cs ├── VianaDialog.xaml ├── VianaDialog.xaml.cs ├── VianaSaveDialog.xaml └── VianaSaveDialog.xaml.cs ├── Modules ├── Base │ ├── WindowWithHelp.xaml │ └── WindowWithHelp.xaml.cs ├── Chart │ ├── ChartHelpDialog.xaml │ ├── ChartHelpDialog.xaml.cs │ ├── ChartWindow.xaml │ ├── ChartWindow.xaml.cs │ └── ExportChart.cs ├── DataAcquisition │ ├── ManualDataAquisitionWindow.xaml │ ├── ManualDataAquisitionWindow.xaml.cs │ ├── ModifyDataWindow.xaml │ ├── ModifyDataWindow.xaml.cs │ ├── SelectCursorcolorDlg.xaml │ └── SelectCursorcolorDlg.xaml.cs ├── DataGrid │ ├── DataGridWindow.xaml │ ├── DataGridWindow.xaml.cs │ ├── DifferenceQuotientDialog.xaml │ ├── DifferenceQuotientDialog.xaml.cs │ ├── ExportData.cs │ ├── ExportOptions.cs │ ├── ExportOptionsDialog.xaml │ ├── ExportOptionsDialog.xaml.cs │ ├── SkipPointsDialog.xaml │ ├── SkipPointsDialog.xaml.cs │ ├── TimeUnitDialog.xaml │ ├── TimeUnitDialog.xaml.cs │ └── template.ods └── Video │ ├── BlobDetection │ ├── BlobsControl.xaml │ └── BlobsControl.xaml.cs │ ├── Control │ ├── Video.cs │ ├── VideoBase.cs │ ├── VideoCapturer.cs │ └── VideoPlayer.cs │ ├── Dialogs │ ├── CalibrateVideoWindow.cs │ ├── ClipVideoWindow.cs │ ├── CoordinateSystemWindow.cs │ ├── LengthDialog.xaml │ ├── LengthDialog.xaml.cs │ ├── MeasureAngleWindow.xaml │ ├── MeasureAngleWindow.xaml.cs │ ├── MeasureLengthWindow.xaml │ ├── MeasureLengthWindow.xaml.cs │ ├── SaveVideoDialog.xaml │ ├── SaveVideoDialog.xaml.cs │ ├── SaveVideoDialogDE.xaml.cs │ ├── SaveVideoDialogDS.xaml │ ├── SelectColorWindow.xaml │ ├── SelectColorWindow.xaml.cs │ ├── VideoInfoDialog.xaml │ └── VideoInfoDialog.xaml.cs │ ├── Filter │ ├── ColorAndCropFilterRGB.cs │ ├── ColorAndCropFilterYCbCr.cs │ ├── CropFilterRgb.cs │ ├── FilterBase.cs │ ├── Histogram.cs │ ├── HistogramMinMaxSegmentator.cs │ ├── MotionHighlightingSpecial.cs │ ├── Segment.cs │ ├── TwoFramesDifferenceDetectorSpecial.cs │ ├── VectorInt.cs │ └── YCbCrColor.cs │ ├── VideoWindow.xaml │ └── VideoWindow.xaml.cs ├── Properties ├── AssemblyInfo.cs ├── Settings.Designer.cs └── Settings.settings ├── VianaNET.csproj ├── VianaNET.csproj.user ├── app.config └── packages.config /.gitignore: -------------------------------------------------------------------------------- 1 | /.vs/VianaNET/v16/*.suo 2 | /Debug/* 3 | /VianaNET/obj/* 4 | /packages/* 5 | /VianaTestVideos 6 | /Release/* 7 | /.vs/VianaNET/DesignTimeBuild 8 | /Setup/Debug/* 9 | /Setup/Release/* 10 | /Setup/Setup/obj/* 11 | /.vs/VianaNET 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # viana - Video analysis 2 | The VianaNET project targets physics education. The software enables to analyze the motion of colored objects in life-video and video files. 3 | The data can be visualized in charts and exported for further analysis. It's developed in C#.Net. 4 | 5 | VianaNET is a replacement of the great Viana of Thomas Kersting from the university of Essen to enable life-video and support more video formats along with updated user interface and usability along with localization. 6 | VianaNET is currently available in English and German. 7 | 8 | Some more details on changes and bugfixes can be found at http://www.viananet.de 9 | 10 | Thanks for your interest, feel free to add comments or use the issue tracker. 11 | Regards, 12 | Adrian 13 | -------------------------------------------------------------------------------- /Setup/Setup/Config.wxi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Setup/Setup/InstallerBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avosskuehler/viana/da1336700ee18b3512434058b6880afc15654a90/Setup/Setup/InstallerBanner.png -------------------------------------------------------------------------------- /Setup/Setup/InstallerBkg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avosskuehler/viana/da1336700ee18b3512434058b6880afc15654a90/Setup/Setup/InstallerBkg.png -------------------------------------------------------------------------------- /Setup/Setup/Product.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 19 | 20 | 21 | 22 | 23 | WIXNETFX4RELEASEINSTALLED >= "#$(var.NetFx48MinRelease)" 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /Setup/Setup/Resources.wxs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Setup/Setup/en-US.wxl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1033 4 | -------------------------------------------------------------------------------- /VianaNET.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.4.33103.184 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VianaNET", "VianaNET\VianaNET.csproj", "{9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}" 7 | EndProject 8 | Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Setup", "Setup\Setup\Setup.wixproj", "{2248D372-66FC-471F-89D6-601930B8538D}" 9 | ProjectSection(ProjectDependencies) = postProject 10 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE} = {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE} 11 | EndProjectSection 12 | EndProject 13 | Global 14 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 15 | Debug|Any CPU = Debug|Any CPU 16 | Debug|x64 = Debug|x64 17 | Debug|x86 = Debug|x86 18 | Release|Any CPU = Release|Any CPU 19 | Release|x64 = Release|x64 20 | Release|x86 = Release|x86 21 | EndGlobalSection 22 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 23 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 24 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Debug|Any CPU.Build.0 = Debug|Any CPU 25 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Debug|x64.ActiveCfg = Debug|x64 26 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Debug|x64.Build.0 = Debug|x64 27 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Debug|x86.ActiveCfg = Debug|x86 28 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Debug|x86.Build.0 = Debug|x86 29 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Release|Any CPU.ActiveCfg = Release|Any CPU 30 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Release|Any CPU.Build.0 = Release|Any CPU 31 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Release|x64.ActiveCfg = Release|x64 32 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Release|x64.Build.0 = Release|x64 33 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Release|x86.ActiveCfg = Release|x86 34 | {9DAD3858-72EA-4B23-A8B5-DF12BBC1AAFE}.Release|x86.Build.0 = Release|x86 35 | {2248D372-66FC-471F-89D6-601930B8538D}.Debug|Any CPU.ActiveCfg = Debug|x86 36 | {2248D372-66FC-471F-89D6-601930B8538D}.Debug|x64.ActiveCfg = Debug|x64 37 | {2248D372-66FC-471F-89D6-601930B8538D}.Debug|x86.ActiveCfg = Debug|x86 38 | {2248D372-66FC-471F-89D6-601930B8538D}.Release|Any CPU.ActiveCfg = Release|x86 39 | {2248D372-66FC-471F-89D6-601930B8538D}.Release|x64.ActiveCfg = Release|x64 40 | {2248D372-66FC-471F-89D6-601930B8538D}.Release|x86.ActiveCfg = Release|x86 41 | EndGlobalSection 42 | GlobalSection(SolutionProperties) = preSolution 43 | HideSolutionNode = FALSE 44 | EndGlobalSection 45 | GlobalSection(ExtensibilityGlobals) = postSolution 46 | SolutionGuid = {DD66A0ED-54AA-42F0-93F6-570CE98B8A3F} 47 | EndGlobalSection 48 | EndGlobal 49 | -------------------------------------------------------------------------------- /VianaNET.sln.DotSettings.user: -------------------------------------------------------------------------------- 1 |  2 | True 3 | C:\Users\Adrian\VSProjects\Viana@Codeplex\Reharper.DotSettings 4 | ..\Reharper.DotSettings 5 | True 6 | 1 7 | 8 | Never 9 | True -------------------------------------------------------------------------------- /VianaNET/App.xaml: -------------------------------------------------------------------------------- 1 |  9 | 15 | 16 | -------------------------------------------------------------------------------- /VianaNET/Application/ExtensionMethods.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // ************************************************************************ 4 | // Viana.NET - video analysis for physics education 5 | // Copyright (C) 2021 Dr. Adrian Voßkühler 6 | // ------------------------------------------------------------------------ 7 | // This program is free software; you can redistribute it and/or modify it 8 | // under the terms of the GNU General Public License as published by the 9 | // Free Software Foundation; either version 2 of the License, or 10 | // (at your option) any later version. 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | // See the GNU General Public License for more details. 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software Foundation, 17 | // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // ************************************************************************ 19 | // 20 | // Dr. Adrian Voßkühler 21 | // adrian@vosskuehler.name 22 | // 23 | // This class provides extension methods for ToggleButtons and 24 | // invoking of empty events. 25 | // 26 | // -------------------------------------------------------------------------------------------------------------------- 27 | namespace VianaNET.Application 28 | { 29 | using System; 30 | using System.Windows.Controls.Primitives; 31 | 32 | /// 33 | /// This class provides extension methods for ToggleButtons and 34 | /// invoking of empty events. 35 | /// 36 | public static class ExtensionMethods 37 | { 38 | 39 | 40 | /// 41 | /// Static. Invokes the given event with the given sender and 42 | /// empty event arguments. 43 | /// 44 | /// 45 | /// The to be sent. 46 | /// 47 | /// 48 | /// The sender of the event. 49 | /// 50 | public static void InvokeEmpty(this EventHandler eventHandler, object sender) 51 | { 52 | EventHandler handler = eventHandler; 53 | if (null != handler) 54 | { 55 | handler.Invoke(sender, EventArgs.Empty); 56 | } 57 | } 58 | 59 | /// 60 | /// Static. Returns the 61 | /// value for the given 62 | /// 63 | /// 64 | /// The to check its value. 65 | /// 66 | /// 67 | /// True if button is checked, otherwise false or default value if is not set. 68 | /// 69 | public static bool IsChecked(this ToggleButton toggleButton) 70 | { 71 | return toggleButton.IsChecked.GetValueOrDefault(); 72 | } 73 | 74 | 75 | } 76 | } -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Colors/ColorType.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // ************************************************************************ 4 | // Viana.NET - video analysis for physics education 5 | // Copyright (C) 2021 Dr. Adrian Voßkühler 6 | // ------------------------------------------------------------------------ 7 | // This program is free software; you can redistribute it and/or modify it 8 | // under the terms of the GNU General Public License as published by the 9 | // Free Software Foundation; either version 2 of the License, or 10 | // (at your option) any later version. 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | // See the GNU General Public License for more details. 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software Foundation, 17 | // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // ************************************************************************ 19 | // 20 | // Dr. Adrian Voßkühler 21 | // adrian@vosskuehler.name 22 | // 23 | // Enumerates different color types that can 24 | // be HSL or HSV. 25 | // 26 | // -------------------------------------------------------------------------------------------------------------------- 27 | namespace VianaNET.CustomStyles.Colors 28 | { 29 | /// 30 | /// Enumerates different color types that can 31 | /// be HSL or HSV. 32 | /// 33 | public enum ColorType 34 | { 35 | /// 36 | /// Indicates HSL color. (Hue, Saturation, Luminance) 37 | /// 38 | HSL, 39 | 40 | /// 41 | /// Indicates HSV color. (Hue, Saturation, V??) 42 | /// 43 | HSV 44 | } 45 | } -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Colors/OfficeColorPallet.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // ************************************************************************ 4 | // Viana.NET - video analysis for physics education 5 | // Copyright (C) 2021 Dr. Adrian Voßkühler 6 | // ------------------------------------------------------------------------ 7 | // This program is free software; you can redistribute it and/or modify it 8 | // under the terms of the GNU General Public License as published by the 9 | // Free Software Foundation; either version 2 of the License, or 10 | // (at your option) any later version. 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | // See the GNU General Public License for more details. 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software Foundation, 17 | // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // ************************************************************************ 19 | // 20 | // Dr. Adrian Voßkühler 21 | // adrian@vosskuehler.name 22 | // 23 | // Describes the parts of the office coloration scheme 24 | // 25 | // -------------------------------------------------------------------------------------------------------------------- 26 | namespace VianaNET.CustomStyles.Colors 27 | { 28 | /// 29 | /// Describes the parts of the office coloration scheme 30 | /// 31 | public enum OfficeColorPallet 32 | { 33 | /// 34 | /// The background color 35 | /// 36 | Background, 37 | 38 | /// 39 | /// The foreground color 40 | /// 41 | Foreground, 42 | 43 | /// 44 | /// The color to highlight controls 45 | /// 46 | HighLight, 47 | 48 | /// 49 | /// The color for disabled controls 50 | /// 51 | Disabled, 52 | 53 | /// 54 | /// The background color for editable controls 55 | /// 56 | EditableControlsBackground, 57 | 58 | /// 59 | /// No style defined 60 | /// 61 | None 62 | } 63 | } -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/Arrow.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avosskuehler/viana/da1336700ee18b3512434058b6880afc15654a90/VianaNET/CustomStyles/Controls/Arrow.cs -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/CoordinateSystem.xaml: -------------------------------------------------------------------------------- 1 |  13 | 14 | 15 | 16 | 18 | 19 | 20 | 28 | 29 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/CoordinateSystem.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // ************************************************************************ 4 | // Viana.NET - video analysis for physics education 5 | // Copyright (C) 2014 Dr. Adrian Voßkühler 6 | // ------------------------------------------------------------------------ 7 | // This program is free software; you can redistribute it and/or modify it 8 | // under the terms of the GNU General Public License as published by the 9 | // Free Software Foundation; either version 2 of the License, or 10 | // (at your option) any later version. 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | // See the GNU General Public License for more details. 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software Foundation, 17 | // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // ************************************************************************ 19 | // 20 | // -------------------------------------------------------------------------------------------------------------------- 21 | 22 | namespace VianaNET.CustomStyles.Controls 23 | { 24 | using System.Windows.Controls; 25 | 26 | /// 27 | /// Interaction logic for CoordinateSystem.xaml 28 | /// 29 | public partial class CoordinateSystem : UserControl 30 | { 31 | 32 | 33 | /// 34 | /// Initializes a new instance of the class. 35 | /// 36 | public CoordinateSystem() 37 | { 38 | this.InitializeComponent(); 39 | } 40 | 41 | 42 | 43 | 44 | 45 | 46 | } 47 | } -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/DualTextBox.xaml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/LabeledSlider.xaml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/LabeledTextBox.xaml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/LineStyleControl.xaml: -------------------------------------------------------------------------------- 1 |  14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 43 | 44 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/MediaSliderControl.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 26 | 27 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/MediaSliderControl.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // ************************************************************************ 4 | // Viana.NET - video analysis for physics education 5 | // Copyright (C) 2021 Dr. Adrian Voßkühler 6 | // ------------------------------------------------------------------------ 7 | // This program is free software; you can redistribute it and/or modify it 8 | // under the terms of the GNU General Public License as published by the 9 | // Free Software Foundation; either version 2 of the License, or 10 | // (at your option) any later version. 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | // See the GNU General Public License for more details. 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software Foundation, 17 | // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // ************************************************************************ 19 | // 20 | // Dr. Adrian Voßkühler 21 | // adrian@vosskuehler.name 22 | // 23 | // Interaction logic for MediaSliderControl.xaml 24 | // 25 | // -------------------------------------------------------------------------------------------------------------------- 26 | namespace VianaNET 27 | { 28 | using System.Windows.Input; 29 | 30 | /// 31 | /// Interaction logic for MediaSliderControl.xaml 32 | /// 33 | public partial class MediaSliderControl 34 | { 35 | 36 | 37 | /// 38 | /// Initializes a new instance of the class. 39 | /// 40 | public MediaSliderControl() 41 | { 42 | this.InitializeComponent(); 43 | } 44 | 45 | 46 | 47 | 48 | 49 | /// 50 | /// The media slider_ mouse left button down. 51 | /// 52 | /// 53 | /// The sender. 54 | /// 55 | /// 56 | /// The e. 57 | /// 58 | private void MediaSlider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 59 | { 60 | } 61 | 62 | /// 63 | /// The media slider_ mouse left button up. 64 | /// 65 | /// 66 | /// The sender. 67 | /// 68 | /// 69 | /// The e. 70 | /// 71 | private void MediaSlider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 72 | { 73 | } 74 | 75 | /// 76 | /// The media slider_ mouse move. 77 | /// 78 | /// 79 | /// The sender. 80 | /// 81 | /// 82 | /// The e. 83 | /// 84 | private void MediaSlider_MouseMove(object sender, MouseEventArgs e) 85 | { 86 | } 87 | 88 | 89 | } 90 | } -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/NumericUpDown.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/SliderValue.xaml.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // ************************************************************************ 4 | // Viana.NET - video analysis for physics education 5 | // Copyright (C) 2021 Dr. Adrian Voßkühler 6 | // ------------------------------------------------------------------------ 7 | // This program is free software; you can redistribute it and/or modify it 8 | // under the terms of the GNU General Public License as published by the 9 | // Free Software Foundation; either version 2 of the License, or 10 | // (at your option) any later version. 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | // See the GNU General Public License for more details. 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software Foundation, 17 | // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // ************************************************************************ 19 | // 20 | // Dr. Adrian Voßkühler 21 | // adrian@vosskuehler.name 22 | // 23 | // Interaction logic for SliderValue.xaml 24 | // 25 | // -------------------------------------------------------------------------------------------------------------------- 26 | namespace VianaNET 27 | { 28 | using System.Windows.Controls; 29 | 30 | /// 31 | /// Interaction logic for SliderValue.xaml 32 | /// 33 | public class SliderValue : Slider 34 | { 35 | } 36 | } -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Controls/VisualContainerElement.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // ************************************************************************ 4 | // Viana.NET - video analysis for physics education 5 | // Copyright (C) 2021 Dr. Adrian Voßkühler 6 | // ------------------------------------------------------------------------ 7 | // This program is free software; you can redistribute it and/or modify it 8 | // under the terms of the GNU General Public License as published by the 9 | // Free Software Foundation; either version 2 of the License, or 10 | // (at your option) any later version. 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | // See the GNU General Public License for more details. 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software Foundation, 17 | // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // ************************************************************************ 19 | // 20 | // 21 | // Defines the VisualContainerElement type. 22 | // 23 | // -------------------------------------------------------------------------------------------------------------------- 24 | 25 | namespace VianaNET 26 | { 27 | using System.Windows; 28 | using System.Windows.Media; 29 | 30 | public class VisualContainerElement : FrameworkElement 31 | { 32 | private DrawingVisual visual; 33 | 34 | public VisualContainerElement() 35 | : base() 36 | { 37 | this.visual = null; 38 | } 39 | 40 | public DrawingVisual Visual 41 | { 42 | get => this.visual; 43 | set 44 | { 45 | this.RemoveVisualChild(this.visual); 46 | this.visual = value; 47 | this.AddVisualChild(this.visual); 48 | 49 | this.InvalidateMeasure(); 50 | this.InvalidateVisual(); 51 | } 52 | } 53 | 54 | protected override int VisualChildrenCount => 1; 55 | 56 | protected override Visual GetVisualChild(int index) 57 | { 58 | return this.visual; 59 | } 60 | 61 | protected override Size MeasureOverride(Size availableSize) 62 | { 63 | if (this.visual != null) 64 | { 65 | return this.visual.ContentBounds.Size; 66 | } 67 | 68 | return base.MeasureOverride(availableSize); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Converter/Converter.xaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Time 21 | Pixel 22 | Position 23 | Velocity 24 | Acceleration 25 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Converter/PlusOneConverter.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // ************************************************************************ 4 | // Viana.NET - video analysis for physics education 5 | // Copyright (C) 2021 Dr. Adrian Voßkühler 6 | // ------------------------------------------------------------------------ 7 | // This program is free software; you can redistribute it and/or modify it 8 | // under the terms of the GNU General Public License as published by the 9 | // Free Software Foundation; either version 2 of the License, or 10 | // (at your option) any later version. 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | // See the GNU General Public License for more details. 15 | // You should have received a copy of the GNU General Public License 16 | // along with this program; if not, write to the Free Software Foundation, 17 | // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | // ************************************************************************ 19 | // 20 | // Dr. Adrian Voßkühler 21 | // adrian@vosskuehler.name 22 | // 23 | // The plus one converter. 24 | // 25 | // -------------------------------------------------------------------------------------------------------------------- 26 | namespace VianaNET.CustomStyles.Converter 27 | { 28 | using System; 29 | using System.Globalization; 30 | using System.Windows.Data; 31 | 32 | /// 33 | /// The plus one converter. 34 | /// 35 | [ValueConversion(typeof(int), typeof(int))] 36 | public class PlusOneConverter : IValueConverter 37 | { 38 | 39 | 40 | /// 41 | /// The convert. 42 | /// 43 | /// 44 | /// The value. 45 | /// 46 | /// 47 | /// The target type. 48 | /// 49 | /// 50 | /// The parameter. 51 | /// 52 | /// 53 | /// The culture. 54 | /// 55 | /// 56 | /// The . 57 | /// 58 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 59 | { 60 | int valueToConvert = (int)value; 61 | return valueToConvert + 1; 62 | } 63 | 64 | /// 65 | /// The convert back. 66 | /// 67 | /// 68 | /// The value. 69 | /// 70 | /// 71 | /// The target type. 72 | /// 73 | /// 74 | /// The parameter. 75 | /// 76 | /// 77 | /// The culture. 78 | /// 79 | /// 80 | /// The . 81 | /// 82 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 83 | { 84 | int valueToConvertBack = (int)value; 85 | return valueToConvertBack - 1; 86 | } 87 | 88 | 89 | } 90 | } -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Cursors/CursorMinus.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avosskuehler/viana/da1336700ee18b3512434058b6880afc15654a90/VianaNET/CustomStyles/Cursors/CursorMinus.cur -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Cursors/CursorPlus.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avosskuehler/viana/da1336700ee18b3512434058b6880afc15654a90/VianaNET/CustomStyles/Cursors/CursorPlus.cur -------------------------------------------------------------------------------- /VianaNET/CustomStyles/FontAwesome/AwesomeFontType.cs: -------------------------------------------------------------------------------- 1 | namespace VianaNET.CustomStyles.FontAwesome 2 | { 3 | public enum AwesomeFontType : int 4 | { 5 | Light = 1, 6 | Regular = 2, 7 | Solid = 3, 8 | Brands = 4 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/FontAwesome/Icon.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Markup; 3 | using System.Windows.Media; 4 | 5 | namespace VianaNET.CustomStyles.FontAwesome 6 | { 7 | public class Icon : MarkupExtension 8 | { 9 | private readonly IconBlock _iconBlock; 10 | 11 | public Icon(IconChar icon) 12 | { 13 | this._iconBlock = new IconBlock 14 | { 15 | FontSize = 24, 16 | Icon = icon 17 | }; 18 | } 19 | 20 | public Brush Foreground 21 | { 22 | get => this._iconBlock.Foreground; 23 | set => this._iconBlock.Foreground = value; 24 | } 25 | 26 | public AwesomeFontType FontType 27 | { 28 | get => this._iconBlock.FontType; 29 | set => this._iconBlock.FontType = value; 30 | } 31 | 32 | public override object ProvideValue(IServiceProvider serviceProvider) 33 | { 34 | return this._iconBlock; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/FontAwesome/IconChar.tt: -------------------------------------------------------------------------------- 1 | <#@template language="C#" hostSpecific="true" #> 2 | <#@ output extension=".cs" #> 3 | <#@ assembly name="System.Core" #> 4 | <#@ import namespace="System.IO" #> 5 | <#@ import namespace="System.Linq" #> 6 | <#@ import namespace="System.Text.RegularExpressions" #> 7 | <#@ import namespace="System.CodeDom.Compiler" #> 8 | <#@ import namespace="System.Globalization" #> 9 | <# 10 | var cssFile = this.Host.ResolvePath(@"fontawesome-all.css"); 11 | var css = File.ReadAllText(cssFile); 12 | // c.f.: http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx 13 | var regEx = new Regex(@"\.fa-(.+):before\s*\{\s*content:\s*""\\(.+)"";\s*}", RegexOptions.Multiline); 14 | 15 | var fas = regEx.Matches(css).OfType() 16 | .Select(match => new Fa {Class = ValidIdentifier(match.Groups[1].Value), Code = match.Groups[2].Value}) 17 | .OrderBy(x => x.Class) 18 | .ToList(); 19 | 20 | #> 21 | //------------------------------------------------------------------------------ 22 | // 23 | // This code was generated by a tool. 24 | // 25 | // Changes to this file may cause incorrect behavior and will be lost if 26 | // the code is regenerated. 27 | // 28 | //------------------------------------------------------------------------------ 29 | 30 | namespace VianaNET.CustomStyles.FontAwesome 31 | { 32 | public enum IconChar 33 | { 34 | None = 0, 35 | <# fas.ForEach(fa => WriteLine("\t\t{0} = 0x{1},", fa.Class, fa.Code)); #> 36 | } 37 | } 38 | <#+ 39 | class Fa 40 | { 41 | public string Class { get; set; } 42 | public string Code { get; set; } 43 | } 44 | 45 | // c.f.: http://blog.visualt4.com/2009/02/creating-valid-c-identifiers.html 46 | private static readonly CodeDomProvider Csharp = CodeDomProvider.CreateProvider("C#"); 47 | private static readonly Regex InvalidChars = new Regex(@"[^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Nl}\p{Mn}\p{Mc}\p{Cf}\p{Pc}\p{Lm}]", RegexOptions.Compiled); 48 | private static readonly TextInfo TextInfo = new CultureInfo("en-US", false).TextInfo; 49 | 50 | private static string ValidIdentifier(string value) 51 | { 52 | // cf.: http://stackoverflow.com/questions/1206019/converting-string-to-title-case-in-c-sharp 53 | // dash to camel case 54 | var name = TextInfo.ToTitleCase(value.Replace('-', ' ')); 55 | 56 | // Compliant with item 2.4.2 of the C# specification 57 | var ret = InvalidChars.Replace(name, String.Empty); 58 | //The identifier must start with a character or a "_" 59 | if (!char.IsLetter(ret, 0) || !Csharp.IsValidIdentifier(ret)) 60 | ret = string.Concat("_", ret); 61 | return ret; 62 | } 63 | #> 64 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/FontAwesome/IconSource.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Markup; 3 | using System.Windows.Media; 4 | 5 | namespace VianaNET.CustomStyles.FontAwesome 6 | { 7 | public class IconSource : MarkupExtension 8 | { 9 | private readonly IconChar _icon; 10 | private Brush _foreground = IconHelper.DefaultBrush; 11 | private ImageSource _imageSource; 12 | private double _size = IconHelper.DefaultSize; 13 | private AwesomeFontType _fontType = AwesomeFontType.Regular; 14 | 15 | public IconSource(IconChar icon) 16 | { 17 | this._icon = icon; 18 | this._imageSource = this._icon.ToImageSource(this._fontType, this._foreground, this._size); 19 | } 20 | 21 | public Brush Foreground 22 | { 23 | get => this._foreground; 24 | set 25 | { 26 | if (this._foreground.Equals(value)) return; 27 | this._foreground = value; 28 | this.UpdateImageSource(); 29 | } 30 | } 31 | 32 | public AwesomeFontType FontType 33 | { 34 | get => this._fontType; 35 | set 36 | { 37 | this._fontType = value; 38 | this.UpdateImageSource(); 39 | } 40 | } 41 | 42 | public double Size 43 | { 44 | get => this._size; 45 | set 46 | { 47 | if (Math.Abs(this._size - value) < 0.5) return; 48 | this._size = value; 49 | this.UpdateImageSource(); 50 | } 51 | } 52 | 53 | private void UpdateImageSource() 54 | { 55 | this._imageSource = this._icon.ToImageSource(this._fontType, this._foreground, this._size); 56 | } 57 | 58 | public override object ProvideValue(IServiceProvider serviceProvider) 59 | { 60 | return this._imageSource; 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Styles/BackgroundStyles.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 18 | 19 | 20 | 21 | 24 | 25 | 28 | 29 | 30 | 36 | 37 | 42 | 43 | 48 | 49 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Styles/EnumStyles.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Styles/GeometryItems.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | 27 | 28 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Styles/TextBoxStyles.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 29 | -------------------------------------------------------------------------------- /VianaNET/CustomStyles/Styles/VianaStyle.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /VianaNET/Modules/DataGrid/DifferenceQuotientDialog.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |