Ejemplo n.º 1
0
        private static AverageColour GetSectionLED(ScreenSectionReadingRequest request)
        {
            var totals      = new long[] { 0, 0, 0 };
            var heightLimit = request.EndY * request.Stride;
            var widthLimit  = request.EndX * request.BPPModifier;
            var pixelCount  = 0;

            unsafe
            {
                var p = (byte *)(void *)request.ScreenPointer;
                for (var y = request.StartY * request.Stride; y < heightLimit; y += request.Stride)
                {
                    for (var x = request.StartX * request.BPPModifier; x < widthLimit; x += request.BPPModifier)
                    {
                        for (var color = 0; color < 3; color++)
                        {
                            var idx = y + x + color;
                            totals[color] += p[idx];
                        }
                        pixelCount++;
                    }
                }
            }
            return(new AverageColour
            {
                AverageB = GetAverageColour(totals[0], pixelCount),
                AverageG = GetAverageColour(totals[1], pixelCount),
                AverageR = GetAverageColour(totals[2], pixelCount)
            });
        }
Ejemplo n.º 2
0
 private static Task <AverageColour> GetSectionReading(ScreenSectionReadingRequest sectionRequest)
 {
     return(Task.Run(() => GetSectionLED(sectionRequest)));
 }