Exemple #1
0
        public AdobeVerticalColourSlider()
        {
            // This call is required by the Windows.Forms Form Designer.
            InitializeComponent();

            //	Initialize Colors
            _hsb   = new AdobeColours.HSB();
            _hsb.H = 1.0;
            _hsb.S = 1.0;
            _hsb.B = 1.0;
            _rgb   = AdobeColours.HSB_to_RGB(_hsb);
            _baseColourComponent = ColourComponent.HUE;
        }
Exemple #2
0
        private void ResetHSLRGB()
        {
            int red,
                green,
                blue;

            switch (_baseColourComponent)
            {
            case ColourComponent.HUE:
                _hsb.S = _markerX / 255.0;
                _hsb.B = 1.0 - _markerY / 255.0;
                _rgb   = AdobeColours.HSB_to_RGB(_hsb);
                break;

            case ColourComponent.SATURATION:
                _hsb.H = _markerX / 255.0;
                _hsb.B = 1.0 - _markerY / 255.0;
                _rgb   = AdobeColours.HSB_to_RGB(_hsb);
                break;

            case ColourComponent.BRIGHTESS:
                _hsb.H = _markerX / 255.0;
                _hsb.S = 1.0 - _markerY / 255.0;
                _rgb   = AdobeColours.HSB_to_RGB(_hsb);
                break;

            case ColourComponent.RED:
                blue  = _markerX;
                green = 255 - _markerY;
                _rgb  = Color.FromArgb(_rgb.R, green, blue);
                _hsb  = AdobeColours.RGB_to_HSB(_rgb);
                break;

            case ColourComponent.GREEN:
                blue = _markerX;
                red  = 255 - _markerY;
                _rgb = Color.FromArgb(red, _rgb.G, blue);
                _hsb = AdobeColours.RGB_to_HSB(_rgb);
                break;

            case ColourComponent.BLUE:
                red   = _markerX;
                green = 255 - _markerY;
                _rgb  = Color.FromArgb(red, green, _rgb.B);
                _hsb  = AdobeColours.RGB_to_HSB(_rgb);
                break;
            }
        }
Exemple #3
0
        private AdobeColours.HSB GetColour(int x, int y)
        {
            AdobeColours.HSB _hsb = new AdobeColours.HSB();

            switch (_baseColourComponent)
            {
            case ColourComponent.HUE:
                _hsb.H = _hsb.H;
                _hsb.S = x / 255.0;
                _hsb.B = 1.0 - y / 255.0;
                break;

            case ColourComponent.SATURATION:
                _hsb.S = _hsb.S;
                _hsb.H = x / 255.0;
                _hsb.B = 1.0 - (double)y / 255;
                break;

            case ColourComponent.BRIGHTESS:
                _hsb.B = _hsb.B;
                _hsb.H = x / 255.0;
                _hsb.S = 1.0 - (double)y / 255;
                break;

            case ColourComponent.RED:
                _hsb = AdobeColours.RGB_to_HSB(Color.FromArgb(_rgb.R, 255 - y, x));
                break;

            case ColourComponent.GREEN:
                _hsb = AdobeColours.RGB_to_HSB(Color.FromArgb(255 - y, _rgb.G, x));
                break;

            case ColourComponent.BLUE:
                _hsb = AdobeColours.RGB_to_HSB(Color.FromArgb(x, 255 - y, _rgb.B));
                break;
            }

            return(_hsb);
        }
Exemple #4
0
        /// <summary>
        /// Resets the controls colour (both HSL and RGB variables) based on the current slider position
        /// </summary>
        private void ResetHSLRGB()
        {
            int height = this.Height - 9;

            switch (_baseColourComponent)
            {
            case ColourComponent.HUE:
                _hsb.H = 1.0 - (double)_markerStartY / height;
                _rgb   = AdobeColours.HSB_to_RGB(_hsb);
                break;

            case ColourComponent.SATURATION:
                _hsb.S = 1.0 - (double)_markerStartY / height;
                _rgb   = AdobeColours.HSB_to_RGB(_hsb);
                break;

            case ColourComponent.BRIGHTESS:
                _hsb.B = 1.0 - (double)_markerStartY / height;
                _rgb   = AdobeColours.HSB_to_RGB(_hsb);
                break;

            case ColourComponent.RED:
                _rgb = Color.FromArgb(255 - (int)Math.Round(255 * (double)_markerStartY / height), _rgb.G, _rgb.B);
                _hsb = AdobeColours.RGB_to_HSB(_rgb);
                break;

            case ColourComponent.GREEN:
                _rgb = Color.FromArgb(_rgb.R, 255 - (int)Math.Round(255 * (double)_markerStartY / height), _rgb.B);
                _hsb = AdobeColours.RGB_to_HSB(_rgb);
                break;

            case ColourComponent.BLUE:
                _rgb = Color.FromArgb(_rgb.R, _rgb.G, 255 - (int)Math.Round(255 * (double)_markerStartY / height));
                _hsb = AdobeColours.RGB_to_HSB(_rgb);
                break;
            }
        }
Exemple #5
0
        private Bitmap GetColourPlaneBitmap(Rectangle rect, ColourComponent comp)
        {
            Bitmap     map     = new Bitmap(rect.Width, rect.Height, PixelFormat.Format24bppRgb);
            BitmapData mapData = map.LockBits(
                new Rectangle(0, 0, map.Width, map.Height),
                ImageLockMode.WriteOnly,
                PixelFormat.Format24bppRgb);

            unsafe
            {
                byte *pt0 = (byte *)mapData.Scan0;

                Parallel.For(rect.Top, rect.Bottom, y =>
                {
                    int bitmapY = y - rect.Top;

                    for (int x = rect.Left; x < rect.Right; x++)
                    {
                        int bitmapX = x - rect.Left;

                        Color colour;
                        switch (comp)
                        {
                        case ColourComponent.HUE:
                            colour = AdobeColours.HSB_to_RGB(new AdobeColours.HSB(
                                                                 _hsb.H,
                                                                 x / 255.0,
                                                                 1 - y / 255.0));
                            break;

                        case ColourComponent.SATURATION:
                            colour = AdobeColours.HSB_to_RGB(new AdobeColours.HSB(
                                                                 x / 255.0,
                                                                 _hsb.S,
                                                                 1 - y / 255.0));
                            break;

                        case ColourComponent.BRIGHTESS:
                            colour = AdobeColours.HSB_to_RGB(new AdobeColours.HSB(
                                                                 x / 255.0,
                                                                 1 - y / 255.0,
                                                                 _hsb.B));
                            break;

                        case ColourComponent.RED:
                            colour = Color.FromArgb(
                                _rgb.R,
                                x,
                                255 - y);
                            break;

                        case ColourComponent.GREEN:
                            colour = Color.FromArgb(
                                x,
                                _rgb.G,
                                255 - y);
                            break;

                        case ColourComponent.BLUE:
                            colour = Color.FromArgb(
                                x,
                                255 - y,
                                _rgb.B);
                            break;

                        default:
                            throw new ArgumentException();
                        }

                        if (_webSafeColoursOnly)
                        {
                            colour = AdobeColours.GetNearestWebSafeColour(colour);
                        }

                        byte *pt = pt0 + mapData.Stride * bitmapY + 3 * bitmapX;
                        pt[2]    = colour.R;
                        pt[1]    = colour.G;
                        pt[0]    = colour.B;
                    }
                });
            }

            map.UnlockBits(mapData);
            return(map);
        }
Exemple #6
0
        private Bitmap GetColourStripBitmap(Rectangle rect, ColourComponent comp)
        {
            Bitmap     map     = new Bitmap(rect.Width, rect.Height, PixelFormat.Format24bppRgb);
            BitmapData mapData = map.LockBits(
                new Rectangle(0, 0, map.Width, map.Height),
                ImageLockMode.WriteOnly,
                PixelFormat.Format24bppRgb);

            int height = this.Height - 8;

            unsafe
            {
                byte *pt0 = (byte *)mapData.Scan0;

                Parallel.For(rect.Top, rect.Bottom, y =>
                {
                    int bitmapY = y - rect.Top;

                    Color colour;
                    switch (comp)
                    {
                    case ColourComponent.HUE:
                        colour = AdobeColours.HSB_to_RGB(new AdobeColours.HSB(
                                                             1.0 - (double)y / height,
                                                             1,
                                                             1));
                        break;

                    case ColourComponent.SATURATION:
                        colour = AdobeColours.HSB_to_RGB(new AdobeColours.HSB(
                                                             _hsb.H,
                                                             1.0 - (double)y / height,
                                                             _hsb.B));
                        break;

                    case ColourComponent.BRIGHTESS:
                        colour = AdobeColours.HSB_to_RGB(new AdobeColours.HSB(
                                                             _hsb.H,
                                                             _hsb.S,
                                                             1.0 - (double)y / height));
                        break;

                    case ColourComponent.RED:
                        int red = 255 - (int)Math.Round(255 * (double)y / height);
                        colour  = Color.FromArgb(
                            red,
                            _rgb.G,
                            _rgb.B);
                        break;

                    case ColourComponent.GREEN:
                        int green = 255 - (int)Math.Round(255 * (double)y / height);
                        colour    = Color.FromArgb(
                            _rgb.R,
                            green,
                            _rgb.B);
                        break;

                    case ColourComponent.BLUE:
                        int blue = 255 - (int)Math.Round(255 * (double)y / height);
                        colour   = Color.FromArgb(
                            _rgb.R,
                            _rgb.G,
                            blue);
                        break;

                    default:
                        throw new ArgumentException();
                    }

                    if (_webSafeColoursOnly)
                    {
                        colour = AdobeColours.GetNearestWebSafeColour(colour);
                    }

                    for (int x = rect.Left; x < rect.Right; x++)
                    {
                        int bitmapX = x - rect.Left;

                        byte *pt = pt0 + mapData.Stride * bitmapY + 3 * bitmapX;
                        pt[2]    = colour.R;
                        pt[1]    = colour.G;
                        pt[0]    = colour.B;
                    }
                });
            }

            map.UnlockBits(mapData);
            return(map);
        }