private unsafe void ProcessImage(UnmanagedImage image)
{
this.CheckSourceFormat(image.PixelFormat);
int width = image.Width;
int height = image.Height;
this.pixels = this.pixelsWithoutBlack = 0;
int[] numArray = new int[0x100];
int[] numArray2 = new int[0x100];
int[] numArray3 = new int[0x100];
int[] numArray4 = new int[0x100];
RGB rgb = new RGB();
HSL hsl = new HSL();
int num3 = (image.PixelFormat == PixelFormat.Format24bppRgb) ? 3 : 4;
int num4 = image.Stride - (width * num3);
byte *numPtr = (byte *)image.ImageData.ToPointer();
for (int i = 0; i < height; i++)
{
int num6 = 0;
while (num6 < width)
{
rgb.Red = numPtr[2];
rgb.Green = numPtr[1];
rgb.Blue = numPtr[0];
HSL.FromRGB(rgb, hsl);
numArray[(int)(hsl.Saturation * 255.0)]++;
numArray2[(int)(hsl.Luminance * 255.0)]++;
this.pixels++;
if (hsl.Luminance != 0.0)
{
numArray3[(int)(hsl.Saturation * 255.0)]++;
numArray4[(int)(hsl.Luminance * 255.0)]++;
this.pixelsWithoutBlack++;
}
num6++;
numPtr += num3;
}
numPtr += num4;
}
this.saturation = new ContinuousHistogram(numArray, new DoubleRange(0.0, 1.0));
this.luminance = new ContinuousHistogram(numArray2, new DoubleRange(0.0, 1.0));
this.saturationWithoutBlack = new ContinuousHistogram(numArray3, new DoubleRange(0.0, 1.0));
this.luminanceWithoutBlack = new ContinuousHistogram(numArray4, new DoubleRange(0.0, 1.0));
}