static int Hue(FastBitmap.MyColor col, int depth)
        {
            int max = Math.Max(col.R, Math.Max(col.G, col.B));
            int min = Math.Min(col.R, Math.Min(col.G, col.B));

            if (min == max)
            {
                return(180);
            }
            int result;

            if (max == col.R)
            {
                result = 60 * (col.G - col.B) / (max - min);
                if (col.G < col.B)
                {
                    result += 360;
                }
            }
            else if (max == col.G)
            {
                result = 60 * (col.B - col.R) / (max - min) + 120;
            }
            else
            {
                result = 60 * (col.R - col.G) / (max - min) + 240;
            }
            result = (result + depth * 360 / scrollRange + 190) % 360;
            return(result);
        }
        static void HSV(FastBitmap.MyColor dst, int H, double S, double V)
        {
            int    Hi    = (H / 60) % 6;
            double Vmin  = (100 - S) * V / 100;
            double a     = (V - Vmin) * (H % 60) / 60;
            byte   Vinc  = (byte)Math.Round((Vmin + a) * 255 / 100);
            byte   Vdec  = (byte)Math.Round((V - a) * 255 / 100);
            byte   iVmin = (byte)Math.Round(Vmin * 255 / 100);
            byte   iV    = (byte)Math.Round(V * 255 / 100);

            switch (Hi)
            {
            case (0): dst.Set(iV, Vinc, iVmin); return;

            case (1): dst.Set(Vdec, iV, iVmin); return;

            case (2): dst.Set(iVmin, iV, Vinc); return;

            case (3): dst.Set(iVmin, Vdec, iV); return;

            case (4): dst.Set(Vinc, iVmin, iV); return;

            case (5): dst.Set(iV, iVmin, Vdec); return;
            }
        }
        static double Saturation(FastBitmap.MyColor col, int depth)
        {
            int max = Math.Max(col.R, Math.Max(col.G, col.B));
            int min = Math.Min(col.R, Math.Min(col.G, col.B));

            if (max == 0)
            {
                return(0);
            }
            double result = (max - min) * 100 / (double)max;

            return(Scale(result, depth));
        }
 static void HSVColor(FastBitmap.MyColor src, FastBitmap.MyColor dst, int h, int s, int v)
 {
     HSV(dst, Hue(src, h), Saturation(src, s), Value(src, v));
 }
        static void ValueColor(FastBitmap.MyColor src, FastBitmap.MyColor dst, int depth)
        {
            byte res = (byte)Math.Round(Value(src, depth) * 255 / 100);

            dst.Set(res, res, res);
        }
        static void SaturationColor(FastBitmap.MyColor src, FastBitmap.MyColor dst, int depth)
        {
            byte res = (byte)Math.Round(Saturation(src, depth) * 255 / 100);

            dst.Set(res, res, res);
        }
 static void HueColor(FastBitmap.MyColor src, FastBitmap.MyColor dst, int depth)
 {
     HSV(dst, Hue(src, depth), 100, 100);
 }
        static double Value(FastBitmap.MyColor col, int depth)
        {
            double result = Math.Max(col.R, Math.Max(col.G, col.B)) * 100 / (double)255;

            return(Scale(result, depth));
        }