Animatroller.Framework.LogicalDevice.VirtualPixel1D3.AddPixelDevice C# (CSharp) Метод

AddPixelDevice() публичный Метод

public AddPixelDevice ( int startVirtualPosition, int positions, bool reverse, Action pixelsChanged ) : VirtualPixel1D3
startVirtualPosition int
positions int
reverse bool
pixelsChanged Action
Результат VirtualPixel1D3
        public VirtualPixel1D3 AddPixelDevice(int startVirtualPosition, int positions, bool reverse, Action<byte[]> pixelsChanged)
        {
            var newPixelDevice = new PixelDevice(this.pixelCount, startVirtualPosition, startVirtualPosition + positions - 1, reverse, pixelsChanged);

            this.devices.Add(newPixelDevice);

            return this;
        }

Usage Example

Пример #1
0
        //public PixelRope(Pixel1D logicalDevice)
        //    : base(logicalDevice)
        //{
        //    logicalDevice.PixelChanged += (sender, e) =>
        //        {
        //            // Handles brightness as well
        //            var hsv = new HSV(e.NewColor);
        //            hsv.Value = hsv.Value * e.NewBrightness;
        //            var color = hsv.Color;
        //            if (System.Threading.Monitor.TryEnter(lockObject))
        //            {
        //                try
        //                {
        //                    PixelOutputPort.SendPixelValue(e.Channel, new PhysicalDevice.PixelRGBByte(color.R, color.G, color.B));
        //                }
        //                finally
        //                {
        //                    System.Threading.Monitor.Exit(lockObject);
        //                }
        //            }
        //            else
        //                log.Warn("Missed PixelChanged in PixelRope");
        //        };
        //    logicalDevice.MultiPixelChanged += (sender, e) =>
        //        {
        //            var values = new PhysicalDevice.PixelRGBByte[e.NewValues.Length];
        //            for (int i = 0; i < e.NewValues.Length; i++)
        //            {
        //                var hsv = new HSV(e.NewValues[i].Color);
        //                hsv.Value = hsv.Value * e.NewValues[i].Brightness;
        //                var color = hsv.Color;
        //                values[i] = new PixelRGBByte(color.R, color.G, color.B);
        //            }
        //            if (System.Threading.Monitor.TryEnter(lockObject))
        //            {
        //                try
        //                {
        //                    PixelOutputPort.SendPixelsValue(e.StartChannel, values);
        //                }
        //                finally
        //                {
        //                    System.Threading.Monitor.Exit(lockObject);
        //                }
        //            }
        //            else
        //                log.Warn("Missed send to PixelRope");
        //        };
        //}
        //public Pixel1D(VirtualPixel1D2 logicalDevice, int startVirtualPosition, int positions)
        //    : base(logicalDevice)
        //{
        //    //            this.pixelData = new ColorBrightness[positions];
        //    //logicalDevice.OutputData.Subscribe(x =>
        //    //{
        //    //    SetFromIData(x);
        //    //    Output();
        //    //});
        //    //SetFromIData(logicalDevice.CurrentData);
        //    logicalDevice.AddPixelDevice(startVirtualPosition, positions, x =>
        //    {
        //        var values = new PhysicalDevice.PixelRGBByte[x.Length];
        //        for (int i = 0; i < x.Length; i++)
        //        {
        //            var color = x[i];
        //            values[i] = new PixelRGBByte(color.R, color.G, color.B);
        //        }
        //        lock (this.lockObject)
        //        {
        //            PixelOutputPort.SendPixelsValue(0, values);
        //        }
        //    });
        //    //logicalDevice.AddPixelDevice(startVirtualPosition, positions, (sender, e) =>
        //    //    {
        //    //        // Handles brightness as well
        //    //        var color = BaseLight.GetColorFromColorBrightness(e.NewColor, e.NewBrightness);
        //    //        lock (this.lockObject)
        //    //        {
        //    //            PixelOutputPort.SendPixelValue(e.Channel, new PhysicalDevice.PixelRGBByte(color.R, color.G, color.B));
        //    //        }
        //    //    }, (sender, e) =>
        //    //    {
        //    //        var values = new PhysicalDevice.PixelRGBByte[e.NewValues.Length];
        //    //        for (int i = 0; i < e.NewValues.Length; i++)
        //    //        {
        //    //            var color = BaseLight.GetColorFromColorBrightness(e.NewValues[i].Color, e.NewValues[i].Brightness);
        //    //            values[i] = new PixelRGBByte(color.R, color.G, color.B);
        //    //        }
        //    //        lock (this.lockObject)
        //    //        {
        //    //            PixelOutputPort.SendPixelsValue(e.StartChannel, values);
        //    //        }
        //    //    });
        //}
        public Pixel1D(VirtualPixel1D3 logicalDevice, int startVirtualPosition = 0, int? positions = null, bool reverse = false)
            : base(logicalDevice)
        {
            if (!positions.HasValue)
                positions = logicalDevice.Pixels;

            logicalDevice.AddPixelDevice(startVirtualPosition, positions.Value, reverse, pixels =>
            {
                lock (this.lockObject)
                {
                    PixelOutputPort.SendPixelsValue(0, pixels, pixels.Length);
                }
            });
        }