private void UpdateStringPreview() { if (LastSelectedStringMetadata == null) { return; } var stringData = m_firmware.ReadString(LastSelectedStringMetadata); var charsData = new Dictionary <int, bool[, ]>(); foreach (var b in stringData) { if (charsData.ContainsKey(b)) { continue; } FirmwareImageMetadata imageMetadata; if (!CurrentImageBlockForStrings.TryGetValue(b, out imageMetadata)) { continue; } charsData[b] = m_firmware.ReadImage(imageMetadata); } var imageData = FirmwareImageProcessor.GetStringImageData(stringData, charsData, m_firmware.Definition.StringsPreviewCorrection != null ? m_firmware.Definition.StringsPreviewCorrection.ForGlyphs : null); var imageDataSize = imageData.GetSize(); StringPrewviewPixelGrid.Data = imageData; StringStatusLabel.Text = string.Format ( "String: 0x{0:X2}, Size: {1}x{2}, Data: 0x{3:X4}, Length: {4} bytes", LastSelectedStringMetadata.Index, imageDataSize.Width, imageDataSize.Height, LastSelectedStringMetadata.DataOffset, LastSelectedStringMetadata.DataLength ); }
private void UpdateStringPreview() { if (LastSelectedStringMetadata == null) { return; } var firmwareString = m_firmware.ReadString(LastSelectedStringMetadata); var charMetadatas = new List <FirmwareImageMetadata>(); foreach (var charIndex in firmwareString) { var metadata = CurrentImageBlockForStrings.FirstOrDefault(x => x.Index == charIndex); if (metadata != null) { charMetadatas.Add(metadata); } } var images = new List <bool[, ]>(); foreach (var charMetadata in charMetadatas) { var image = m_firmware.ReadImage(charMetadata); if (m_firmware.Definition.CharsToCorrect != null && m_firmware.Definition.CharsToCorrect.Contains((byte)charMetadata.Index)) { var imageSize = image.GetSize(); image = FirmwareImageProcessor.ResizeImage(image, new Size(imageSize.Width, imageSize.Height + 2)); image = FirmwareImageProcessor.ShiftDown(image); image = FirmwareImageProcessor.ShiftDown(image); } images.Add(image); } var data = FirmwareImageProcessor.MergeImages(images); var dataSize = data.GetSize(); StringPreviewImageSizeLabel.Text = dataSize.Width + @"x" + dataSize.Height; StringPrewviewPixelGrid.Data = data; }