Esempio n. 1
0
        private void LoadWritableBitamp(BitmapSource bitmap, bool IsWindowInit)
        {
            SourceImageWB = new WriteableBitmap(bitmap);
            DestImageWB   = new WriteableBitmap(bitmap);

            int width  = SourceImageWB.PixelWidth;
            int height = SourceImageWB.PixelHeight;

            SourceImageControl.Source = SourceImageWB;
            SourceImageControl.Width  = width;
            SourceImageControl.Height = height;

            DestImageControl.Source = DestImageWB;
            DestImageControl.Width  = width;
            DestImageControl.Height = height;

            SourceImageColorArray = new SimpleColor[height, width];
            DestImageColorArray   = new SimpleColor[height, width];


            Paint.ReadColorsFromBitmap(SourceImageWB, SourceImageColorArray);
            OriginalSourceImageColorArray = (SimpleColor[, ])SourceImageColorArray.Clone();

            if (IsWindowInit == false)
            {
                ColorProfileConverter.ConvertImage(SourceImageColorArray, DestImageColorArray, (ColorProfileEnum)SourceColorSpaceComboBox.SelectedIndex, (ColorProfileEnum)DestColorSpaceComboBox.SelectedIndex);
                Paint.CopyToWriteableBitmap(DestImageWB, DestImageColorArray);
            }
            else
            {
                TryGenerate();
            }
        }
Esempio n. 2
0
        private void DestColorSpaceComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (IsWindowInitialized == true)
            {
                var cb       = sender as ComboBox;
                int selected = cb.SelectedIndex;
                int from     = SourceColorSpaceComboBox.SelectedIndex;

                DestImageColorProfile = new ColorProfileNotifyChange(ColorProfileFactory.GetFactory().GetColorProfile((ColorProfileEnum)selected));

                ColorProfileConverter.ConvertImage(SourceImageColorArray, DestImageColorArray, (ColorProfileEnum)from, (ColorProfileEnum)selected);
                Paint.CopyToWriteableBitmap(DestImageWB, DestImageColorArray);
            }
        }
Esempio n. 3
0
        private bool TryGenerate(bool paint = true)
        {
            var isValid = ValidateTextBoxes();

            if (isValid.IsSourceValid == false && isValid.IsDestValid == false)
            {
                var info = new StringBuilder();
                info.AppendLine("Error in source and destination color space!");
                MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error);
                return(false);
            }
            else if (isValid.IsSourceValid == false)
            {
                var info = new StringBuilder();
                info.AppendLine("Error in source color space!");
                MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error);
                return(false);
            }
            else if (isValid.IsDestValid == false)
            {
                var info = new StringBuilder();
                info.AppendLine("Error in destination color space!");
                MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error);
                return(false);
            }
            if (SourceImageColorProfile.HasChanged == false && DestImageColorProfile.HasChanged == false)
            {
                if (paint == true)
                {
                    int from = SourceColorSpaceComboBox.SelectedIndex;
                    int to   = DestColorSpaceComboBox.SelectedIndex;
                    ColorProfileConverter.ConvertImage(SourceImageColorArray, DestImageColorArray, (ColorProfileEnum)from, (ColorProfileEnum)to);
                    Paint.CopyToWriteableBitmap(DestImageWB, DestImageColorArray);
                }
            }
            else
            {
                var sourceValidation = SourceImageColorProfile.Validate();
                var destValidation   = DestImageColorProfile.Validate();
                if (sourceValidation.isValid == false && destValidation.isValid == false)
                {
                    //error
                    var info = new StringBuilder();
                    info.AppendLine("Error in source and destination color space:");
                    info.AppendLine("Source: " + sourceValidation.info);
                    info.Append("Destination: " + destValidation.info);

                    MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error);
                    return(false);
                }
                else if (sourceValidation.isValid == false)
                {
                    //error
                    var info = new StringBuilder();
                    info.AppendLine("Error in source color space:");
                    info.Append(sourceValidation.info);

                    MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error);
                    return(false);
                }
                else if (destValidation.isValid == false)
                {
                    //error
                    var info = new StringBuilder();
                    info.AppendLine("Error in destination color space:");
                    info.Append(destValidation.info);

                    MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error);
                    return(false);
                }
                else
                {
                    if (paint == true)
                    {
                        ColorProfileConverter.ConvertImage(SourceImageColorArray, DestImageColorArray, SourceImageColorProfile, DestImageColorProfile);
                        Paint.CopyToWriteableBitmap(DestImageWB, DestImageColorArray);
                    }
                }
            }
            return(true);
        }