DirectOutputR1
DirectOutput framework R1 for virtual pinball cabinets.
Go to:
Overview 
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros Pages
RGBLed.cs
Go to the documentation of this file.
1 
2 using System.Xml.Serialization;
3 using DirectOutput.Cab.Out;
4 using DirectOutput.Cab.Toys.Layer;
5 using DirectOutput.Cab.Color;
6 
7 namespace DirectOutput.Cab.Toys.Basic
8 {
9 
16  public class RGBLed : ToyBase, IRGBToy
17  {
18  private Cabinet _Cabinet;
19  #region Init
20 
21 
22 
23 
24  public override void Init(Cabinet Cabinet)
25  {
26  _Cabinet = Cabinet;
27  InitOutputs(Cabinet);
28  }
29 
30  private void InitOutputs(Cabinet Cabinet)
31  {
32  if (Cabinet.Outputs.Contains(OutputNameRed))
33  {
34  _OutputRed = Cabinet.Outputs[OutputNameRed];
35  }
36  else
37  {
38  _OutputRed = null;
39  }
40  if (Cabinet.Outputs.Contains(OutputNameGreen))
41  {
42  _OutputGreen = Cabinet.Outputs[OutputNameGreen];
43  }
44  else
45  {
46  _OutputGreen = null;
47  }
48  if (Cabinet.Outputs.Contains(OutputNameBlue))
49  {
50  _OutputBlue = Cabinet.Outputs[OutputNameBlue];
51  }
52  else
53  {
54  _OutputBlue = null;
55  }
56  }
57  #endregion
58 
59  #region Finish
60 
65  public override void Finish()
66  {
67  Reset();
68  _Cabinet = null;
69  _OutputRed = null;
70  _OutputGreen = null;
71  _OutputBlue = null;
72  }
73  #endregion
74 
75 
76  private IOutput _OutputRed;
77 
81 
82  public string OutputNameRed { get; set; }
83 
84  private IOutput _OutputGreen;
85 
89 
90  public string OutputNameGreen { get; set; }
91 
92  private IOutput _OutputBlue;
93 
97 
98  public string OutputNameBlue { get; set; }
99 
100 
101  private int _BrightnessRed;
102 
106  [XmlIgnoreAttribute]
107  public int Red
108  {
109  get { return _BrightnessRed; }
110  private set
111  {
112  _BrightnessRed = value.Limit(0, 255);
113  if (_OutputRed != null)
114  {
115  _OutputRed.Value = (byte)_BrightnessRed;
116  }
117  }
118  }
119  private int _BrightnessGreen;
120 
124  [XmlIgnoreAttribute]
125  public int Green
126  {
127  get { return _BrightnessGreen; }
128  private set
129  {
130  _BrightnessGreen = value.Limit(0, 255);
131  if (_OutputGreen != null)
132  {
133  _OutputGreen.Value = (byte)_BrightnessGreen;
134  }
135  }
136  }
137  private int _BrightnessBlue;
138 
142  [XmlIgnoreAttribute]
143  public int Blue
144  {
145  get { return _BrightnessBlue; }
146  private set
147  {
148  _BrightnessBlue = value.Limit(0, 255);
149  if (_OutputBlue != null)
150  {
151  _OutputBlue.Value = (byte)_BrightnessBlue;
152  }
153  }
154  }
155 
156 
157 
158 
163  public override void Reset()
164  {
165  Red = 0;
166  Blue = 0;
167  Green = 0;
168 
169  }
170 
177  public void SetColor(int Red, int Green, int Blue)
178  {
179  this.Red = Red;
180  this.Blue = Blue;
181  this.Green = Green;
182 
183  }
184 
185 
190  public void SetColor(RGBColor Color)
191  {
192  SetColor(Color.Red, Color.Green, Color.Blue);
193  }
194 
195 
201  public void SetColor(RGBAColor Color)
202  {
203  SetColor(Color.Red, Color.Green, Color.Blue);
204  }
205 
210  public void SetColor(string Color)
211  {
212  if (_Cabinet.Colors.Contains(Color))
213  {
214  SetColor(_Cabinet.Colors[Color]);
215  }
216  else
217  {
218  SetColor(new RGBColor(Color));
219  }
220  }
221  }
222 }