MTMCL.Settings.CheckDarkness C# (CSharp) Method

CheckDarkness() private method

private CheckDarkness ( Stream stream ) : void
stream Stream
return void
        private async void CheckDarkness(Stream stream)
        {
            try
            {
                toggleReverse.IsChecked = await System.Threading.Tasks.TaskEx.Run(new Func<bool>(() =>
                {
                    System.Drawing.Bitmap map = new System.Drawing.Bitmap(stream);
                    System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, map.Width, map.Height);
                    System.Drawing.Imaging.BitmapData data = map.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                    IntPtr ptr = data.Scan0;
                    int bytes = data.Stride * map.Height;
                    byte[] bgr = new byte[bytes];
                    System.Runtime.InteropServices.Marshal.Copy(ptr, bgr, 0, bytes);
                    float averageB = 0, averageG = 0, averageR = 0;
                    for (int i = 0; i < bgr.Length; i += 3)
                    {
                        averageB += bgr[i];
                        averageG += bgr[i + 1];
                        averageR += bgr[i + 2];
                    }
                    averageR /= (bgr.Length / 3);
                    averageG /= (bgr.Length / 3);
                    averageB /= (bgr.Length / 3);
                    const int nThreshold = 105;
                    var bgDelta = Convert.ToInt32((averageR * 0.299) + (averageG * 0.587) + (averageB * 0.114));
                    map.UnlockBits(data);
                    return 255 - bgDelta < nThreshold;
                }));
            }
            catch (Exception)
            {
                toggleReverse.IsChecked = false;
            }
        }

Same methods

Settings::CheckDarkness ( string path ) : void