DirectOutputR1
DirectOutput framework R1 for virtual pinball cabinets.
Go to:
Overview 
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros Pages
RGBAToy.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using DirectOutput.Cab.Out;
6 using DirectOutput.Cab.Color;
7 
8 namespace DirectOutput.Cab.Toys.Layer
9 {
19  {
20 
21  #region Layers
22 
23 
24 
25 
26 
27 
28  [System.Xml.Serialization.XmlIgnore]
29  public RGBALayerDictionary Layers { get; private set; }
30 
31 
32 
33  #endregion
34 
35 
36 
37  #region Outputs
38  private IOutput _OutputRed;
39 
43  public string OutputNameRed { get; set; }
44 
45  private IOutput _OutputGreen;
46 
50  public string OutputNameGreen { get; set; }
51 
52  private IOutput _OutputBlue;
53 
57  public string OutputNameBlue { get; set; }
58 
59  #endregion
60 
61 
62  private Cabinet _Cabinet;
63  #region Init
64 
65 
66 
67 
68  public override void Init(Cabinet Cabinet)
69  {
70  _Cabinet = Cabinet;
71  InitOutputs(Cabinet);
72  }
73 
74  private void InitOutputs(Cabinet Cabinet)
75  {
76  if (Cabinet.Outputs.Contains(OutputNameRed))
77  {
78  _OutputRed = Cabinet.Outputs[OutputNameRed];
79  }
80  else
81  {
82  _OutputRed = null;
83  }
84  if (Cabinet.Outputs.Contains(OutputNameGreen))
85  {
86  _OutputGreen = Cabinet.Outputs[OutputNameGreen];
87  }
88  else
89  {
90  _OutputGreen = null;
91  }
92  if (Cabinet.Outputs.Contains(OutputNameBlue))
93  {
94  _OutputBlue = Cabinet.Outputs[OutputNameBlue];
95  }
96  else
97  {
98  _OutputBlue = null;
99  }
100  }
101  #endregion
102 
103  #region Finish
104 
109  public override void Finish()
110  {
111  Reset();
112  _Cabinet = null;
113  _OutputRed = null;
114  _OutputGreen = null;
115  _OutputBlue = null;
116  }
117  #endregion
118 
119 
120 
121 
125  public override void UpdateOutputs()
126  {
127  RGBColor RGB = Layers.GetResultingColor();
128  if (_OutputRed != null)
129  {
130  _OutputRed.Value = (byte)RGB.Red;
131  }
132  if (_OutputGreen != null)
133  {
134  _OutputGreen.Value = (byte)RGB.Green;
135  }
136  if (_OutputBlue != null)
137  {
138  _OutputBlue.Value = (byte)RGB.Blue;
139  }
140  }
141 
142 
146  public override void Reset()
147  {
148  Layers.Clear();
149  _OutputRed.Value = 0;
150  _OutputGreen.Value = 0;
151  _OutputBlue.Value = 0;
152  }
153 
154 
158  public RGBAToy()
159  {
160  Layers = new RGBALayerDictionary();
161  }
162 
163 
164 
165 
166 
167  }
168 }