Example #1
0
        public static void GetColorComponents(ColorModel colorModel, TextureBitmap.Color color, out Single componentA, out Single componentB, out Single componentC)
        {
            componentA = 0.0f;
            componentB = 0.0f;
            componentC = 0.0f;

            switch (colorModel)
            {
            case ColorModel.RedGreenBlue:
                componentA = color.R;
                componentB = color.G;
                componentC = color.B;
                break;

            case ColorModel.HueSaturationBrightness:
                componentA = color.GetHue();
                componentB = color.GetSaturation();
                componentC = color.GetBrightness();
                break;

            case ColorModel.LabColorSpace:
                RGBtoLab(color.R, color.G, color.B, out componentA, out componentB, out componentC);
                break;

            case ColorModel.XYZ:
                RGBtoXYZ(color.R, color.G, color.B, out componentA, out componentB, out componentC);
                break;
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DistinctColorInfo"/> struct.
        /// </summary>
        public DistinctColorInfo(TextureBitmap.Color color)
        {
            Color = color.ToARGB();
            Count = 1;

            Hue        = Convert.ToInt32(color.GetHue() * Factor);
            Saturation = Convert.ToInt32(color.GetSaturation() * Factor);
            Brightness = Convert.ToInt32(color.GetBrightness() * Factor);
        }
Example #3
0
        public static void GetColorComponents(ColorModel colorModel, TextureBitmap.Color color, TextureBitmap.Color targetColor, out Single componentA, out Single componentB, out Single componentC)
        {
            componentA = 0.0f;
            componentB = 0.0f;
            componentC = 0.0f;

            switch (colorModel)
            {
            case ColorModel.RedGreenBlue:
                componentA = color.R - targetColor.R;
                componentB = color.G - targetColor.G;
                componentC = color.B - targetColor.B;
                break;

            case ColorModel.HueSaturationBrightness:
                componentA = color.GetHue() - targetColor.GetHue();
                componentB = color.GetSaturation() - targetColor.GetSaturation();
                componentC = color.GetBrightness() - targetColor.GetBrightness();
                break;

            case ColorModel.LabColorSpace:

                Single sourceL, sourceA, sourceB;
                Single targetL, targetA, targetB;

                RGBtoLab(color.R, color.G, color.B, out sourceL, out sourceA, out sourceB);
                RGBtoLab(targetColor.R, targetColor.G, targetColor.B, out targetL, out targetA, out targetB);

                componentA = sourceL - targetL;
                componentB = sourceA - targetA;
                componentC = sourceB - targetB;

                break;

            case ColorModel.XYZ:

                Single sourceX, sourceY, sourceZ;
                Single targetX, targetY, targetZ;

                RGBtoXYZ(color.R, color.G, color.B, out sourceX, out sourceY, out sourceZ);
                RGBtoXYZ(targetColor.R, targetColor.G, targetColor.B, out targetX, out targetY, out targetZ);

                componentA = sourceX - targetX;
                componentB = sourceY - targetY;
                componentC = sourceZ - targetZ;

                break;
            }
        }
Example #4
0
        public static Int32 GetComponentA(ColorModel colorModel, TextureBitmap.Color color)
        {
            Int32 result = 0;

            switch (colorModel)
            {
            case ColorModel.RedGreenBlue:
                result = color.R;
                break;

            case ColorModel.HueSaturationBrightness:
                result = Convert.ToInt32(color.GetHue() / HueFactor);
                break;

            case ColorModel.LabColorSpace:
                Single l, a, b;
                RGBtoLab(color.R, color.G, color.B, out l, out a, out b);
                result = Convert.ToInt32(l * 255.0f);
                break;
            }

            return(result);
        }