public ControlledObserverRGB(IControlToken controlToken, ControlSubject<Color, IControlToken> control)
        {
            this.controlToken = controlToken;

            this.observerR = Observer.Create<double>(x =>
                {
                    Color newColor = Color.FromArgb(x.GetByteScale(), control.Value.G, control.Value.B);

                    control.OnNext(newColor, this.controlToken);
                });

            this.observerG = Observer.Create<double>(x =>
                {
                    Color newColor = Color.FromArgb(control.Value.R, x.GetByteScale(), control.Value.B);

                    control.OnNext(newColor, this.controlToken);
                });

            this.observerB = Observer.Create<double>(x =>
                {
                    Color newColor = Color.FromArgb(control.Value.R, control.Value.G, x.GetByteScale());

                    control.OnNext(newColor, this.controlToken);
                });
        }
        public ControlledObserverRGB(IControlToken controlToken, ControlSubject <Color, IControlToken> control)
        {
            this.controlToken = controlToken;

            this.observerR = Observer.Create <double>(x =>
            {
                Color newColor = Color.FromArgb(x.GetByteScale(), control.Value.G, control.Value.B);

                control.OnNext(newColor, this.controlToken);
            });

            this.observerG = Observer.Create <double>(x =>
            {
                Color newColor = Color.FromArgb(control.Value.R, x.GetByteScale(), control.Value.B);

                control.OnNext(newColor, this.controlToken);
            });

            this.observerB = Observer.Create <double>(x =>
            {
                Color newColor = Color.FromArgb(control.Value.R, control.Value.G, x.GetByteScale());

                control.OnNext(newColor, this.controlToken);
            });
        }
Example #3
0
        public IPushDataController GetDataObserver(IControlToken token)
        {
            if (token == null)
            {
                throw new ArgumentNullException("token");
            }

            var observers = new List <IPushDataController>();

            lock (this.members)
            {
                foreach (var member in this.members)
                {
                    observers.Add(member.GetDataObserver(token));
                }
            }

            var groupObserver = new ControlSubject <IData, IControlToken>(null, HasControl);

            groupObserver.Subscribe(x =>
            {
                foreach (var observer in observers)
                {
                    observer.SetDataFromIData(x);
                    observer.PushData();
                }
            });

            return(new ControlledGroupData(token, groupObserver));
        }
        public PoweredBaseModule([System.Runtime.CompilerServices.CallerMemberName] string name = "", bool defaultPower = true)
            : base(name)
        {
            this.inputPower = new ControlSubject <bool>(defaultPower);

            this.inputPower.Subscribe(x =>
            {
                this.log.Verbose("Power for {Name} changed to {Power}", Name, x);
            });
        }
Example #5
0
        public VirtualPixel1D(int pixels, [System.Runtime.CompilerServices.CallerMemberName] string name = "")
            : base(name)
        {
            if (pixels <= 0)
                throw new ArgumentOutOfRangeException("pixels");

            this.globalBrightness = new ControlSubject<double>(1.0);
            this.pixelCount = pixels;

            this.devices = new List<PixelDevice>();
            this.brightness = new double[pixels];
            this.color = new Color[pixels];
        }
Example #6
0
        public VirtualPixel1D(int pixels, [System.Runtime.CompilerServices.CallerMemberName] string name = "")
            : base(name)
        {
            if (pixels <= 0)
            {
                throw new ArgumentOutOfRangeException("pixels");
            }

            this.globalBrightness = new ControlSubject <double>(1.0);
            this.pixelCount       = pixels;

            this.devices    = new List <PixelDevice>();
            this.brightness = new double[pixels];
            this.color      = new Color[pixels];
        }
Example #7
0
        public VirtualPixel2D(int width, int height, [System.Runtime.CompilerServices.CallerMemberName] string name = "")
            : base(name)
        {
            if (width <= 0)
                throw new ArgumentOutOfRangeException("width");
            if (height <= 0)
                throw new ArgumentOutOfRangeException("height");

            this.showBuffer = new Subject<Color[,]>();
            this.globalBrightness = new ControlSubject<double>(1.0);
            this.pixelWidth = width;
            this.pixelHeight = height;

            this.brightness = new double[width, height];
            this.color = new Color[width, height];
        }
Example #8
0
        public SingleOwnerDevice(string name)
            : base(name)
        {
            this.owners = new List<IControlToken>();
            this.outputData = new ControlSubject<IData, IControlToken>(null, HasControl);
            this.outputChanged = new Subject<IData>();

            this.outputData.Subscribe(x =>
            {
                lock (this.lockObject)
                {
                    var data = PreprocessPushData(x);

                    var usedKeys = new HashSet<DataElements>();

                    var dataList = this.currentData.Copy();

                    foreach (var kvp in data.ToList())
                    {
                        usedKeys.Add(kvp.Key);

                        switch (kvp.Key)
                        {
                            case DataElements.PixelBitmap:
                                dataList[kvp.Key] = new System.Drawing.Bitmap((System.Drawing.Bitmap)kvp.Value);
                                break;

                            default:
                                dataList[kvp.Key] = kvp.Value;
                                break;
                        }
                    }

                    dataList.Where(k => !usedKeys.Contains(k.Key)).ToList()
                        .ForEach(k => this.currentData.Remove(k.Key));

                    this.currentData = dataList;

                    this.outputChanged.OnNext(CurrentData);
                }
            });
        }
        public SingleOwnerDevice(string name)
            : base(name)
        {
            this.owners        = new List <IControlToken>();
            this.outputData    = new ControlSubject <IData, IControlToken>(null, HasControl);
            this.outputChanged = new Subject <IData>();

            this.outputData.Subscribe(x =>
            {
                lock (this.lockObject)
                {
                    var data = PreprocessPushData(x);

                    var usedKeys = new HashSet <DataElements>();

                    var dataList = this.currentData.Copy();

                    foreach (var kvp in data.ToList())
                    {
                        usedKeys.Add(kvp.Key);

                        switch (kvp.Key)
                        {
                        case DataElements.PixelBitmap:
                            dataList[kvp.Key] = new System.Drawing.Bitmap((System.Drawing.Bitmap)kvp.Value);
                            break;

                        default:
                            dataList[kvp.Key] = kvp.Value;
                            break;
                        }
                    }

                    dataList.Where(k => !usedKeys.Contains(k.Key)).ToList()
                    .ForEach(k => this.currentData.Remove(k.Key));

                    this.currentData = dataList;

                    this.outputChanged.OnNext(CurrentData);
                }
            });
        }
        public VirtualPixel2D(int width, int height, [System.Runtime.CompilerServices.CallerMemberName] string name = "")
            : base(name)
        {
            if (width <= 0)
            {
                throw new ArgumentOutOfRangeException("width");
            }
            if (height <= 0)
            {
                throw new ArgumentOutOfRangeException("height");
            }

            this.showBuffer       = new Subject <Color[, ]>();
            this.globalBrightness = new ControlSubject <double>(1.0);
            this.pixelWidth       = width;
            this.pixelHeight      = height;

            this.brightness = new double[width, height];
            this.color      = new Color[width, height];
        }
 public ControlledObserverData(IControlToken controlToken, ControlSubject <IData, IControlToken> control, IData data)
 {
     this.controlToken = controlToken;
     this.control      = control;
     this.data         = data;
 }
 public ControlledObserverData(IControlToken controlToken, ControlSubject<IData, IControlToken> control, IData data)
 {
     this.controlToken = controlToken;
     this.control = control;
     this.data = data;
 }