Exemplo n.º 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
        //                this.log.Warning("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
        //                this.log.Warning("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);
                }
            });
        }