From 8d4a9e3cf76b673cbefb86b19559639a04d6aa97 Mon Sep 17 00:00:00 2001 From: Christoph Hauer Date: Sat, 13 Dec 2014 22:55:02 +0000 Subject: [PATCH] --- .../Lib/De.TorstenMandelkow.MetroChart.dll | Bin 0 -> 156672 bytes .../NumberRecognizer.App.csproj | 25 +- .../NumberRecognizer.App/Style/AppStyle.xaml | 5 + .../View/CreateNetworkPage.xaml | 14 +- .../View/CreateNetworkPage.xaml.cs | 135 +++------- .../View/GroupDetailPage.xaml | 102 -------- .../View/GroupDetailPage.xaml.cs | 126 ---------- .../View/GroupedNetworksPage.xaml | 8 +- .../View/GroupedNetworksPage.xaml.cs | 10 +- .../View/NetworkDetailPage.xaml | 53 +++- .../ViewModel/CreateNetworkViewModel.cs | 234 ++++++++++++++++++ .../GroupedNetworksDesignViewModel.cs | 114 ++++++++- .../ViewModel/GroupedNetworksViewModel.cs | 13 +- .../INumberRecognizerService.cs | 1 + .../NumberRecognizerService.svc.cs | 3 - .../NumberRecognizerCloud.Data/Network.cs | 1 - .../NetworkDataModel.edmx | 7 +- .../NetworkDataModel.edmx.sql | 5 +- 18 files changed, 474 insertions(+), 382 deletions(-) create mode 100644 NumberRecognizer/NumberRecognizer.App/Lib/De.TorstenMandelkow.MetroChart.dll delete mode 100644 NumberRecognizer/NumberRecognizer.App/View/GroupDetailPage.xaml delete mode 100644 NumberRecognizer/NumberRecognizer.App/View/GroupDetailPage.xaml.cs create mode 100644 NumberRecognizer/NumberRecognizer.App/ViewModel/CreateNetworkViewModel.cs diff --git a/NumberRecognizer/NumberRecognizer.App/Lib/De.TorstenMandelkow.MetroChart.dll b/NumberRecognizer/NumberRecognizer.App/Lib/De.TorstenMandelkow.MetroChart.dll new file mode 100644 index 0000000000000000000000000000000000000000..38ff6b92507d41db6fdf40c84f32bc1aa8f0eacd GIT binary patch literal 156672 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�bag=4Nl5tFq zfn*2Ft_xV_)koApAqOFewoSB&v`vt<5iAKV>-vfULK|rrulHce3?!719`aJaBlKY>w;hC zOHe|XK6DZXe}Ff^;)|Gf2!=pDu5jTh$E_rfkRN)g4{mNg{>xo%&V!p9dVZ)2eejG0 z)wctU3}p3d0*D>Mlo_M{4y8jZ-I|K3jVAN~!cfc{hR) zJy7V8L8+Kt+YK)~pa;41aR*k2zbGH=3!$h*F( z)%8DUb#Qii_S$dP|Mz6`@72HQFT#6fo_~uZOAjv0?VCmW<%M2%7rxJE7HY@;2*l&( zPJS19ed##6^rPJ}&yrhqD-tfHsmb2Qmj`z8P#Rgq3Z$+$ literal 0 HcmV?d00001 diff --git a/NumberRecognizer/NumberRecognizer.App/NumberRecognizer.App.csproj b/NumberRecognizer/NumberRecognizer.App/NumberRecognizer.App.csproj index 4e06ca2..dea49a4 100644 --- a/NumberRecognizer/NumberRecognizer.App/NumberRecognizer.App.csproj +++ b/NumberRecognizer/NumberRecognizer.App/NumberRecognizer.App.csproj @@ -119,8 +119,12 @@ True Reference.svcmap + + + GroupedNetworksPage.xaml + NetworkDetailPage.xaml @@ -132,12 +136,6 @@ CreateNetworkPage.xaml - - GroupDetailPage.xaml - - - GroupedNetworksPage.xaml - RecognizePage.xaml @@ -162,6 +160,7 @@ + @@ -193,19 +192,15 @@ MSBuild:Compile PreserveNewest - - MSBuild:Compile - Designer - - + MSBuild:Compile Designer - + MSBuild:Compile Designer - + MSBuild:Compile Designer @@ -215,6 +210,10 @@ + + False + Lib\De.TorstenMandelkow.MetroChart.dll + ..\packages\Portable.MvvmLightLibs.5.0.2.0\lib\netcore451\GalaSoft.MvvmLight.dll diff --git a/NumberRecognizer/NumberRecognizer.App/Style/AppStyle.xaml b/NumberRecognizer/NumberRecognizer.App/Style/AppStyle.xaml index 0564e5d..4d07261 100644 --- a/NumberRecognizer/NumberRecognizer.App/Style/AppStyle.xaml +++ b/NumberRecognizer/NumberRecognizer.App/Style/AppStyle.xaml @@ -1,6 +1,7 @@  + diff --git a/NumberRecognizer/NumberRecognizer.App/View/CreateNetworkPage.xaml b/NumberRecognizer/NumberRecognizer.App/View/CreateNetworkPage.xaml index 3b84231..1480f7b 100644 --- a/NumberRecognizer/NumberRecognizer.App/View/CreateNetworkPage.xaml +++ b/NumberRecognizer/NumberRecognizer.App/View/CreateNetworkPage.xaml @@ -70,9 +70,20 @@ + + + + + + + + + + - + + @@ -117,6 +128,7 @@ StrokeThickness="{StaticResource StrokeThickness}" Height="{StaticResource InkHeight}" Margin="0,10"/> + diff --git a/NumberRecognizer/NumberRecognizer.App/View/CreateNetworkPage.xaml.cs b/NumberRecognizer/NumberRecognizer.App/View/CreateNetworkPage.xaml.cs index 9dbaec5..09b6e7d 100644 --- a/NumberRecognizer/NumberRecognizer.App/View/CreateNetworkPage.xaml.cs +++ b/NumberRecognizer/NumberRecognizer.App/View/CreateNetworkPage.xaml.cs @@ -5,28 +5,27 @@ // Markus Zytek // Create Network Page. //----------------------------------------------------------------------- - - +using NumberRecognizer.App.Common; +using NumberRecognizer.App.Common; +using NumberRecognizer.App.Control; +using NumberRecognizer.App.Help; +using NumberRecognizer.App.ViewModel; +using NumberRecognizer.Labeling; +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.System.UserProfile; +using Windows.UI; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Media.Imaging; +using Windows.UI.Xaml.Navigation; +using Windows.UI.Xaml.Shapes; namespace NumberRecognizer.App { - using System; - using System.Collections.Generic; - using System.Runtime.InteropServices.WindowsRuntime; - using NumberRecognizer.App.Common; - using NumberRecognizer.App.Common; - using NumberRecognizer.App.Control; - using NumberRecognizer.App.Help; - using Windows.System.UserProfile; - using Windows.UI; - using Windows.UI.Xaml; - using Windows.UI.Xaml.Controls; - using Windows.UI.Xaml.Media; - using Windows.UI.Xaml.Media.Imaging; - using Windows.UI.Xaml.Navigation; - using Windows.UI.Xaml.Shapes; - using NumberRecognizer.Labeling; - + /// /// A basic page that provides characteristics common to most applications. /// @@ -40,12 +39,7 @@ public sealed partial class CreateNetworkPage : Page /// /// The default view model /// - private ObservableDictionary defaultViewModel = new ObservableDictionary(); - - /// - /// The ink canvases - /// - private List inkCanvasRT = new List(); + private CreateNetworkViewModel defaultViewModel = new CreateNetworkViewModel(); /// /// Initializes a new instance of the class. @@ -65,7 +59,7 @@ public CreateNetworkPage() /// /// The default view model. /// - public ObservableDictionary DefaultViewModel + public CreateNetworkViewModel DefaultViewModel { get { return this.defaultViewModel; } } @@ -115,18 +109,16 @@ protected override void OnNavigatedFrom(NavigationEventArgs e) /// private async void InitPage() { - this.inkCanvasRT.Add(this.InkCanvasRT0); - this.inkCanvasRT.Add(this.InkCanvasRT1); - this.inkCanvasRT.Add(this.InkCanvasRT2); - this.inkCanvasRT.Add(this.InkCanvasRT3); - this.inkCanvasRT.Add(this.InkCanvasRT4); - this.inkCanvasRT.Add(this.InkCanvasRT5); - this.inkCanvasRT.Add(this.InkCanvasRT6); - this.inkCanvasRT.Add(this.InkCanvasRT7); - this.inkCanvasRT.Add(this.InkCanvasRT8); - this.inkCanvasRT.Add(this.InkCanvasRT9); - - this.NameTextBox.Text = string.Format("{0}_{1}", await UserInformation.GetLastNameAsync(), DateTime.Now.ToFileTime()); + DefaultViewModel.CanvasList.Add(this.InkCanvasRT0); + DefaultViewModel.CanvasList.Add(this.InkCanvasRT1); + DefaultViewModel.CanvasList.Add(this.InkCanvasRT2); + DefaultViewModel.CanvasList.Add(this.InkCanvasRT3); + DefaultViewModel.CanvasList.Add(this.InkCanvasRT4); + DefaultViewModel.CanvasList.Add(this.InkCanvasRT5); + DefaultViewModel.CanvasList.Add(this.InkCanvasRT6); + DefaultViewModel.CanvasList.Add(this.InkCanvasRT7); + DefaultViewModel.CanvasList.Add(this.InkCanvasRT8); + DefaultViewModel.CanvasList.Add(this.InkCanvasRT9); } /// @@ -156,72 +148,5 @@ private void NavigationHelper_SaveState(object sender, SaveStateEventArgs e) { } - /// - /// Handles the Click event of the NextButton control. - /// - /// The source of the event. - /// The instance containing the event data. - private async void NextButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e) - { - foreach (InkCanvasRT inkCanvas in this.inkCanvasRT) - { - var renderTargetBitmap = new RenderTargetBitmap(); - await renderTargetBitmap.RenderAsync(inkCanvas); - - byte[] canvasRGBABytes = (await renderTargetBitmap.GetPixelsAsync()).ToArray(); - byte[] canvasBytes = await ImageHelperRT.GetByteArrayFromRGBAByteArrayAsync(canvasRGBABytes, inkCanvas.ForegroundColor); - - double canvasWidth = inkCanvas.ActualWidth; - double canvasHeight = inkCanvas.ActualHeight; - double[,] canvasPixels = await ImageHelperRT.Get2DPixelArrayFromByteArrayAsync(canvasBytes, canvasWidth, canvasHeight); - - inkCanvas.ConnectedComponentLabeling = new ConnectedComponentLabeling(canvasPixels, 0.0); - - foreach (ConnectedComponent connectedComponent in inkCanvas.ConnectedComponentLabeling.ConnectedComponents) - { - MinimumBoundingRectangle mbr = connectedComponent.MinBoundingRect; - Rectangle rectangle = new Rectangle() - { - Stroke = new SolidColorBrush(Colors.Blue), - StrokeThickness = inkCanvas.StrokeThickness / 2, - Width = mbr.Width, - Height = mbr.Height, - Margin = new Thickness() { Top = mbr.Top, Left = mbr.Left } - }; - inkCanvas.Children.Add(rectangle); - - byte[] orgBytes = new byte[(int)(mbr.Width * mbr.Height)]; - byte[] scaBytes = new byte[(int)Math.Pow(mbr.Size, 2)]; - for (int y = 0; y < mbr.Height; y++) - { - for (int x = 0; x < mbr.Width; x++) - { - if (connectedComponent.Points.Exists(p => p.X == mbr.Left + x && p.Y == mbr.Top + y)) - { - double row = (mbr.Top + y) * canvasWidth; - double col = mbr.Left + x; - byte val = canvasBytes[(int)(row + col)]; - - int orgIdx = (int)(y * mbr.Width) + x; - orgBytes[orgIdx] = val; - - int scaIdx = (int)(((y + mbr.PadTop) * mbr.Size) + (x + mbr.PadLeft)); - scaBytes[scaIdx] = val; - } - } - } - - byte[] orgRGBABytes = ImageHelperRT.GetRGBAByteArrayFromByteArrayAsync(orgBytes, Colors.Black); - await ImageHelperRT.SaveRGBAByteArrayAsBitmapImageAsync(orgRGBABytes, mbr.Width, mbr.Height, inkCanvas.Name + "_org"); - connectedComponent.Pixels = await ImageHelperRT.Get2DPixelArrayFromByteArrayAsync(orgBytes, mbr.Width, mbr.Height); - - byte[] scaRGBABytes = ImageHelperRT.GetRGBAByteArrayFromByteArrayAsync(scaBytes, Colors.Black); - scaRGBABytes = await ImageHelperRT.ScaleRGBAByteArrayAsync(scaRGBABytes, mbr.Size, mbr.Size, ImageHelperRT.ImageWidth, ImageHelperRT.ImageHeight); - scaBytes = await ImageHelperRT.GetByteArrayFromRGBAByteArrayAsync(scaRGBABytes, inkCanvas.ForegroundColor); - await ImageHelperRT.SaveRGBAByteArrayAsBitmapImageAsync(scaRGBABytes, ImageHelperRT.ImageWidth, ImageHelperRT.ImageHeight, inkCanvas.Name + "_sca"); - connectedComponent.ScaledPixels = await ImageHelperRT.Get2DPixelArrayFromByteArrayAsync(scaBytes, ImageHelperRT.ImageWidth, ImageHelperRT.ImageHeight); - } - } - } } } diff --git a/NumberRecognizer/NumberRecognizer.App/View/GroupDetailPage.xaml b/NumberRecognizer/NumberRecognizer.App/View/GroupDetailPage.xaml deleted file mode 100644 index 5727d63..0000000 --- a/NumberRecognizer/NumberRecognizer.App/View/GroupDetailPage.xaml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -