private void BitmapImportButton_Click(object sender, EventArgs eventArgs)
        {
            if (LastSelectedImageMetadata == null)
            {
                return;
            }

            try
            {
                using (var imageConverterWindow = new ImageConverterWindow(true, LastSelectedImageMetadata.Width, LastSelectedImageMetadata.Height))
                {
                    if (imageConverterWindow.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }

                    using (var monochrome = imageConverterWindow.GetConvertedImage())
                    {
                        var imageData = BitmapProcessor.CreateRawFromBitmap(monochrome);
                        ImagePixelGrid.CreateUndo();
                        ImagePixelGrid.Data = ImagePreviewPixelGrid.Data = ProcessImage(x => FirmwareImageProcessor.PasteImage(x, imageData), LastSelectedImageMetadata, true);
                    }
                }
            }
            catch (Exception ex)
            {
                InfoBox.Show("Unable to import bitmap image.\n" + ex.Message);
            }
        }
 private void RedoButton_Click(object sender, EventArgs e)
 {
     if (LastSelectedImageMetadata == null)
     {
         return;
     }
     ImagePixelGrid.Redo();
 }
        private void ShiftDownButton_Click(object sender, EventArgs e)
        {
            if (LastSelectedImageMetadata == null)
            {
                return;
            }

            ImagePixelGrid.CreateUndo();
            ImagePixelGrid.Data = ImagePreviewPixelGrid.Data = ProcessImage(FirmwareImageProcessor.ShiftDown, LastSelectedImageMetadata);
        }
Exemplo n.º 4
0
        private void BitmapImportButton_Click(object sender, EventArgs eventArgs)
        {
            if (LastSelectedImageMetadata == null)
            {
                return;
            }

            using (var op = new OpenFileDialog {
                Filter = Consts.BitmapImportFilter
            })
            {
                if (op.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                try
                {
                    var bitmapFile = op.FileName;
                    using (var bitmap = (Bitmap)Image.FromFile(bitmapFile))
                    {
                        if (bitmap.Width > 2048 || bitmap.Height > 2048)
                        {
                            InfoBox.Show("Selected images is too big. Choose an image that has dimension lower than 2048x2048.");
                            return;
                        }
                        using (var scaledBitmap = BitmapProcessor.ScaleBitmapIfNecessary(bitmap, new Size(LastSelectedImageMetadata.Width, LastSelectedImageMetadata.Height)))
                            using (var monochrome = BitmapProcessor.ConvertTo1Bit(scaledBitmap))
                            {
                                var imageData = BitmapProcessor.CreateRawFromBitmap(monochrome);
                                ImagePixelGrid.CreateUndo();
                                ImagePixelGrid.Data = ImagePreviewPixelGrid.Data = ProcessImage(x => FirmwareImageProcessor.PasteImage(x, imageData), LastSelectedImageMetadata, true);
                            }
                    }
                }
                catch (Exception ex)
                {
                    InfoBox.Show("Unable to import bitmap image.\n" + ex.Message);
                }
            }
        }
        private void ImageListBox_SelectedValueChanged(object sender, EventArgs e)
        {
            if (m_imageListBoxIsUpdating || LastSelectedImageMetadata == null)
            {
                return;
            }

            UpdateImageStatusLabel(LastSelectedImageMetadata);
            try
            {
                var image     = m_firmware.ReadImage(LastSelectedImageMetadata);
                var imageSize = image.GetSize();

                ImagePreviewPixelGrid.BlockSize = imageSize.Height > 64 ? 1 : 2;
                ImagePixelGrid.Data             = ImagePreviewPixelGrid.Data = image;
                ImagePixelGrid.ClearHistory();
            }
            catch (Exception)
            {
                InfoBox.Show("Invalid image data. Possibly firmware definition is incompatible with loaded firmware.");
            }
        }
        private void BitmapImportButton_Click(object sender, EventArgs eventArgs)
        {
            if (LastSelectedImageMetadata == null)
            {
                return;
            }

            using (var op = new OpenFileDialog {
                Filter = Consts.BitmapImportFilter
            })
            {
                if (op.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                try
                {
                    var bitmapFile = op.FileName;
                    using (var bitmap = (Bitmap)Image.FromFile(bitmapFile))
                    {
                        if (bitmap.Width > Consts.MaximumImageWidthAndHeight || bitmap.Height > Consts.MaximumImageWidthAndHeight)
                        {
                            InfoBox.Show("Image is too big. Image width and height must be lower or equals to {0} pixels.", Consts.MaximumImageWidthAndHeight);
                            return;
                        }
                        var imageData = FirmwareImageProcessor.ImportBitmap(bitmap);
                        ImagePixelGrid.CreateUndo();
                        ImagePixelGrid.Data = ImagePreviewPixelGrid.Data = ProcessImage(x => FirmwareImageProcessor.PasteImage(x, imageData), LastSelectedImageMetadata, true);
                    }
                }
                catch (Exception ex)
                {
                    InfoBox.Show("Unable to import bitmap image.\n" + ex.Message);
                }
            }
        }
        public bool OnHotkey(Keys keyData)
        {
            if (ModifierKeys.HasFlag(Keys.Control))
            {
                var key = keyData & ~Keys.Control;
                switch (key)
                {
                case Keys.N:
                    ClearAllPixelsButton.PerformClick();
                    return(true);

                case Keys.I:
                    InverseButton.PerformClick();
                    return(true);

                case Keys.R:
                    ResizeButton.PerformClick();
                    return(true);

                case Keys.C:
                    CopyButton.PerformClick();
                    return(true);

                case Keys.V:
                    PasteButton.PerformClick();
                    return(true);

                case Keys.A:
                    ImageListBox.BeginUpdate();
                    ImageListBox.SelectedIndices.Clear();
                    ImageListBox.SelectedIndices.AddRange(Enumerable.Range(0, ImageListBox.Items.Count));
                    ImageListBox.EndUpdate();
                    return(true);

                case Keys.Up:
                    ShiftUpButton.PerformClick();
                    return(true);

                case Keys.Down:
                    ShiftDownButton.PerformClick();
                    return(true);

                case Keys.Left:
                    ShiftLeftButton.PerformClick();
                    return(true);

                case Keys.Right:
                    ShiftRightButton.PerformClick();
                    return(true);

                case Keys.Z:
                    ImagePixelGrid.Undo();
                    return(true);
                }
            }
            if (ModifierKeys.HasFlag(Keys.Shift))
            {
                var key = keyData & ~(Keys.Control | Keys.Shift);
                switch (key)
                {
                case Keys.Z:
                    ImagePixelGrid.Redo();
                    return(true);
                }
            }

            return(false);
        }