private void ClickCalcHeatmap(object sender, RoutedEventArgs e) { Models.Memory mem = (sender as Button).DataContext as Models.Memory; Models.AppVersion ver = VersionList.SelectedItem as Models.AppVersion; byte[] data = AutoHelper.GetMemorySize(ver, mem); int height = Convert.ToInt32(Math.Ceiling(data.Length / 16.0)); Debug.WriteLine("Höhe: " + height); WriteableBitmap map = new WriteableBitmap(16, height, 1, 1, PixelFormats.Indexed8, BitmapPalettes.WebPalette); int stride = (map.PixelWidth * map.Format.BitsPerPixel + 7) / 8; byte[] pixelByteArray = new byte[map.PixelHeight * stride]; map.CopyPixels(pixelByteArray, stride, 0); for (int i = 0; i < pixelByteArray.Length; i++) { int val = (i >= data.Length) ? 0 : data[i]; switch (val) { case 0: pixelByteArray[i] = 18; break; case 1: case 2: case 3: case 4: pixelByteArray[i] = 205; break; case 5: case 6: case 7: pixelByteArray[i] = 193; break; case 8: pixelByteArray[i] = 180; break; default: pixelByteArray[i] = 0; break; } } map.WritePixels(new Int32Rect(0, 0, map.PixelWidth, map.PixelHeight), pixelByteArray, stride, 0); OutHeatmap.Source = map; }
private void ClickOpen(object sender, RoutedEventArgs e) { OpenFileDialog diag = new OpenFileDialog(); diag.Title = "Projekt öffnen"; diag.Filter = "Kaenx Hersteller Projekt (*.ae-manu)|*.ae-manu"; if (diag.ShowDialog() == true) { string general = System.IO.File.ReadAllText(diag.FileName); General = Newtonsoft.Json.JsonConvert.DeserializeObject <Models.ModelGeneral>(general, new Newtonsoft.Json.JsonSerializerSettings() { TypeNameHandling = Newtonsoft.Json.TypeNameHandling.Auto }); filePath = diag.FileName; foreach (Models.Application app in General.Applications) { foreach (Models.AppVersion ver in app.Versions) { foreach (Models.Parameter para in ver.Parameters) { if (!string.IsNullOrEmpty(para._memory)) { Models.Memory mem = ver.Memories.Single(m => m.Name == para._memory); para.MemoryObject = mem; } if (!string.IsNullOrEmpty(para._parameterType)) { Models.ParameterType pt = ver.ParameterTypes.Single(p => p.Name == para._parameterType); para.ParameterTypeObject = pt; } } foreach (Models.ParameterRef pref in ver.ParameterRefs) { if (!string.IsNullOrEmpty(pref._parameter)) { Models.Parameter para = ver.Parameters.Single(p => p.Name == pref._parameter); pref.ParameterObject = para; } } foreach (Models.ComObjectRef cref in ver.ComObjectRefs) { if (!string.IsNullOrEmpty(cref._comObject)) { Models.ComObject com = ver.ComObjects.Single(c => c.Name == cref._comObject); cref.ComObjectObject = com; } } LoadSubDyn(ver.Dynamics[0], ver.ParameterRefs.ToList(), ver.ComObjectRefs.ToList()); } string mid = app._maskId; if (string.IsNullOrEmpty(mid)) { continue; } Models.MaskVersion mask = BCUs.Single(bcu => bcu.Id == mid); app.Mask = mask; } foreach (Models.Hardware hard in General.Hardware) { if (string.IsNullOrEmpty(hard._appsString)) { continue; } foreach (string name in hard._appsString.Split(',')) { try{ hard.Apps.Add(General.Applications.Single(app => app.Name == name)); } catch {} } } SetSubCatalogItems(General.Catalog[0]); SetButtons(true); } }