Esempio n. 1
0
        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;
        }