Exemple #1
0
        public static RgbArray ConvertToRgbArray(SortedDictionary <float, SortedDictionary <float, float> > xyzData, MagnitudeRgbConversionMode conversionMode)
        {
            EnsureRectangleSymmetry(xyzData);

            var xyzDataEnum = xyzData.GetEnumerator();
            var firstRow    = xyzData.First();

            var height   = xyzData.Count;
            var width    = firstRow.Value.Count;
            var rgbArray = new Color[height][];
            int count    = 0;

            while (xyzDataEnum.MoveNext())
            {
                var row = xyzDataEnum.Current;
                var y   = count / width;
                rgbArray[height - y - 1] = new Color[width];

                var rowEnum = row.Value.GetEnumerator();

                while (rowEnum.MoveNext())
                {
                    var x               = count % width;
                    var pixel           = rowEnum.Current;
                    var scaledMagnitude = (int)CS152Helpers.ScaleValue(pixel.Value, -11000, 8500, 0, 255);
                    rgbArray[height - y - 1][width - x - 1] = Bitmapper.GetColor(scaledMagnitude, conversionMode);
                    count++;
                }
            }

            return(new RgbArray(rgbArray));
        }
Exemple #2
0
        public static Color GetColor(int r, int g, int b, MagnitudeRgbConversionMode conversionMode)
        {
            switch (conversionMode)
            {
            case MagnitudeRgbConversionMode.monochromatic:
                var magnitude = (int)CS152Helpers.GetMagnitude(r, g, b);
                return(Color.FromArgb(magnitude, magnitude, magnitude));

            case MagnitudeRgbConversionMode.scaledHue:
                throw new NotImplementedException("Future development");

            case MagnitudeRgbConversionMode.realistic:
            default:
                return(Color.FromArgb(r, g, b));
            }
        }