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