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); }); }
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); }); }
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]; }
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]; }
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 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; }