Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
Color.cs
1using System.Globalization;
2using SkiaSharp;
7
9{
14 {
23 : base(Name, Start, Length, Expression)
24 {
25 }
26
30 public override string[] DefaultArgumentNames
31 {
32 get
33 {
34 return new string[] { "Name" };
35 }
36 }
37
41 public override string FunctionName
42 {
43 get
44 {
45 return "Color";
46 }
47 }
48
56 {
57 if (TryParse(Argument, out SKColor Color))
58 return new ObjectValue(Color);
59 else
60 throw new ScriptRuntimeException("Unable to parse color: " + Argument, this);
61 }
62
69 public static bool TryParse(string s, out SKColor Color)
70 {
71 switch (s.ToLower())
72 {
73 case "aliceblue": Color = SKColors.AliceBlue; break;
74 case "palegreen": Color = SKColors.PaleGreen; break;
75 case "palegoldenrod": Color = SKColors.PaleGoldenrod; break;
76 case "orchid": Color = SKColors.Orchid; break;
77 case "orangered": Color = SKColors.OrangeRed; break;
78 case "orange": Color = SKColors.Orange; break;
79 case "olivedrab": Color = SKColors.OliveDrab; break;
80 case "olive": Color = SKColors.Olive; break;
81 case "oldlace": Color = SKColors.OldLace; break;
82 case "navy": Color = SKColors.Navy; break;
83 case "navajowhite": Color = SKColors.NavajoWhite; break;
84 case "moccasin": Color = SKColors.Moccasin; break;
85 case "mistyrose": Color = SKColors.MistyRose; break;
86 case "mintcream": Color = SKColors.MintCream; break;
87 case "midnightblue": Color = SKColors.MidnightBlue; break;
88 case "mediumvioletred": Color = SKColors.MediumVioletRed; break;
89 case "mediumturquoise": Color = SKColors.MediumTurquoise; break;
90 case "mediumspringgreen": Color = SKColors.MediumSpringGreen; break;
91 case "lightslategray": Color = SKColors.LightSlateGray; break;
92 case "lightsteelblue": Color = SKColors.LightSteelBlue; break;
93 case "lightyellow": Color = SKColors.LightYellow; break;
94 case "lime": Color = SKColors.Lime; break;
95 case "limegreen": Color = SKColors.LimeGreen; break;
96 case "linen": Color = SKColors.Linen; break;
97 case "paleturquoise": Color = SKColors.PaleTurquoise; break;
98 case "magenta": Color = SKColors.Magenta; break;
99 case "mediumaquamarine": Color = SKColors.MediumAquamarine; break;
100 case "mediumblue": Color = SKColors.MediumBlue; break;
101 case "mediumorchid": Color = SKColors.MediumOrchid; break;
102 case "mediumpurple": Color = SKColors.MediumPurple; break;
103 case "mediumseagreen": Color = SKColors.MediumSeaGreen; break;
104 case "mediumslateblue": Color = SKColors.MediumSlateBlue; break;
105 case "maroon": Color = SKColors.Maroon; break;
106 case "palevioletred": Color = SKColors.PaleVioletRed; break;
107 case "papayawhip": Color = SKColors.PapayaWhip; break;
108 case "peachpuff": Color = SKColors.PeachPuff; break;
109 case "snow": Color = SKColors.Snow; break;
110 case "springgreen": Color = SKColors.SpringGreen; break;
111 case "steelblue": Color = SKColors.SteelBlue; break;
112 case "tan": Color = SKColors.Tan; break;
113 case "teal": Color = SKColors.Teal; break;
114 case "thistle": Color = SKColors.Thistle; break;
115 case "slategray": Color = SKColors.SlateGray; break;
116 case "tomato": Color = SKColors.Tomato; break;
117 case "violet": Color = SKColors.Violet; break;
118 case "wheat": Color = SKColors.Wheat; break;
119 case "white": Color = SKColors.White; break;
120 case "whitesmoke": Color = SKColors.WhiteSmoke; break;
121 case "yellow": Color = SKColors.Yellow; break;
122 case "yellowgreen": Color = SKColors.YellowGreen; break;
123 case "turquoise": Color = SKColors.Turquoise; break;
124 case "lightskyblue": Color = SKColors.LightSkyBlue; break;
125 case "slateblue": Color = SKColors.SlateBlue; break;
126 case "silver": Color = SKColors.Silver; break;
127 case "peru": Color = SKColors.Peru; break;
128 case "pink": Color = SKColors.Pink; break;
129 case "plum": Color = SKColors.Plum; break;
130 case "powderblue": Color = SKColors.PowderBlue; break;
131 case "purple": Color = SKColors.Purple; break;
132 case "red": Color = SKColors.Red; break;
133 case "skyblue": Color = SKColors.SkyBlue; break;
134 case "rosybrown": Color = SKColors.RosyBrown; break;
135 case "saddlebrown": Color = SKColors.SaddleBrown; break;
136 case "salmon": Color = SKColors.Salmon; break;
137 case "sandybrown": Color = SKColors.SandyBrown; break;
138 case "seagreen": Color = SKColors.SeaGreen; break;
139 case "seashell": Color = SKColors.SeaShell; break;
140 case "sienna": Color = SKColors.Sienna; break;
141 case "royalblue": Color = SKColors.RoyalBlue; break;
142 case "lightseagreen": Color = SKColors.LightSeaGreen; break;
143 case "lightsalmon": Color = SKColors.LightSalmon; break;
144 case "lightpink": Color = SKColors.LightPink; break;
145 case "crimson": Color = SKColors.Crimson; break;
146 case "cyan": Color = SKColors.Cyan; break;
147 case "darkblue": Color = SKColors.DarkBlue; break;
148 case "darkcyan": Color = SKColors.DarkCyan; break;
149 case "darkgoldenrod": Color = SKColors.DarkGoldenrod; break;
150 case "darkgray": Color = SKColors.DarkGray; break;
151 case "cornsilk": Color = SKColors.Cornsilk; break;
152 case "darkgreen": Color = SKColors.DarkGreen; break;
153 case "darkmagenta": Color = SKColors.DarkMagenta; break;
154 case "darkolivegreen": Color = SKColors.DarkOliveGreen; break;
155 case "darkorange": Color = SKColors.DarkOrange; break;
156 case "darkorchid": Color = SKColors.DarkOrchid; break;
157 case "darkred": Color = SKColors.DarkRed; break;
158 case "darksalmon": Color = SKColors.DarkSalmon; break;
159 case "darkkhaki": Color = SKColors.DarkKhaki; break;
160 case "darkseagreen": Color = SKColors.DarkSeaGreen; break;
161 case "cornflowerblue": Color = SKColors.CornflowerBlue; break;
162 case "chocolate": Color = SKColors.Chocolate; break;
163 case "antiquewhite": Color = SKColors.AntiqueWhite; break;
164 case "aqua": Color = SKColors.Aqua; break;
165 case "aquamarine": Color = SKColors.Aquamarine; break;
166 case "azure": Color = SKColors.Azure; break;
167 case "beige": Color = SKColors.Beige; break;
168 case "bisque": Color = SKColors.Bisque; break;
169 case "coral": Color = SKColors.Coral; break;
170 case "black": Color = SKColors.Black; break;
171 case "blue": Color = SKColors.Blue; break;
172 case "blueviolet": Color = SKColors.BlueViolet; break;
173 case "brown": Color = SKColors.Brown; break;
174 case "burlywood": Color = SKColors.BurlyWood; break;
175 case "cadetblue": Color = SKColors.CadetBlue; break;
176 case "chartreuse": Color = SKColors.Chartreuse; break;
177 case "blanchedalmond": Color = SKColors.BlanchedAlmond; break;
178 case "transparent": Color = SKColors.Transparent; break;
179 case "darkslateblue": Color = SKColors.DarkSlateBlue; break;
180 case "darkturquoise": Color = SKColors.DarkTurquoise; break;
181 case "indianred": Color = SKColors.IndianRed; break;
182 case "indigo": Color = SKColors.Indigo; break;
183 case "ivory": Color = SKColors.Ivory; break;
184 case "khaki": Color = SKColors.Khaki; break;
185 case "lavender": Color = SKColors.Lavender; break;
186 case "lavenderblush": Color = SKColors.LavenderBlush; break;
187 case "hotpink": Color = SKColors.HotPink; break;
188 case "lawngreen": Color = SKColors.LawnGreen; break;
189 case "lightblue": Color = SKColors.LightBlue; break;
190 case "lightcoral": Color = SKColors.LightCoral; break;
191 case "lightcyan": Color = SKColors.LightCyan; break;
192 case "lightgoldenrodyellow": Color = SKColors.LightGoldenrodYellow; break;
193 case "lightgray": Color = SKColors.LightGray; break;
194 case "lightgreen": Color = SKColors.LightGreen; break;
195 case "lemonchiffon": Color = SKColors.LemonChiffon; break;
196 case "darkslategray": Color = SKColors.DarkSlateGray; break;
197 case "honeydew": Color = SKColors.Honeydew; break;
198 case "green": Color = SKColors.Green; break;
199 case "darkviolet": Color = SKColors.DarkViolet; break;
200 case "deeppink": Color = SKColors.DeepPink; break;
201 case "deepskyblue": Color = SKColors.DeepSkyBlue; break;
202 case "dimgray": Color = SKColors.DimGray; break;
203 case "dodgerblue": Color = SKColors.DodgerBlue; break;
204 case "firebrick": Color = SKColors.Firebrick; break;
205 case "greenyellow": Color = SKColors.GreenYellow; break;
206 case "floralwhite": Color = SKColors.FloralWhite; break;
207 case "fuchsia": Color = SKColors.Fuchsia; break;
208 case "gainsboro": Color = SKColors.Gainsboro; break;
209 case "ghostwhite": Color = SKColors.GhostWhite; break;
210 case "gold": Color = SKColors.Gold; break;
211 case "goldenrod": Color = SKColors.Goldenrod; break;
212 case "gray": Color = SKColors.Gray; break;
213 case "forestgreen": Color = SKColors.ForestGreen; break;
214 case "empty": Color = SKColors.Empty; break;
215 default:
216 byte R, G, B;
217
218 if (s.Length == 6)
219 {
220 if (byte.TryParse(s.Substring(0, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out R) &&
221 byte.TryParse(s.Substring(2, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out G) &&
222 byte.TryParse(s.Substring(4, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out B))
223 {
224 Color = new SKColor(R, G, B);
225 return true;
226 }
227 }
228 else if (s.Length == 8)
229 {
230 if (byte.TryParse(s.Substring(0, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out R) &&
231 byte.TryParse(s.Substring(2, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out G) &&
232 byte.TryParse(s.Substring(4, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out B) &&
233 byte.TryParse(s.Substring(6, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out byte A))
234 {
235 Color = new SKColor(R, G, B, A);
236 return true;
237 }
238 }
239 else if (s.Length == 7 && s[0] == '#')
240 {
241 if (byte.TryParse(s.Substring(1, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out R) &&
242 byte.TryParse(s.Substring(3, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out G) &&
243 byte.TryParse(s.Substring(5, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out B))
244 {
245 Color = new SKColor(R, G, B);
246 return true;
247 }
248 }
249 else if (s.Length == 9 && s[0] == '#')
250 {
251 if (byte.TryParse(s.Substring(1, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out R) &&
252 byte.TryParse(s.Substring(3, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out G) &&
253 byte.TryParse(s.Substring(5, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out B) &&
254 byte.TryParse(s.Substring(7, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out byte A))
255 {
256 Color = new SKColor(R, G, B, A);
257 return true;
258 }
259 }
260
261 Color = SKColors.Empty;
262 return false;
263 }
264
265 return true;
266 }
267 }
268}
Class managing a script expression.
Definition: Expression.cs:39
Returns a color value from a string.
Definition: Color.cs:14
override string FunctionName
Name of the function
Definition: Color.cs:42
override string[] DefaultArgumentNames
Default Argument names
Definition: Color.cs:31
Color(ScriptNode Name, int Start, int Length, Expression Expression)
Returns a color value from a string.
Definition: Color.cs:22
override IElement EvaluateScalar(string Argument, Variables Variables)
Evaluates the function on a scalar argument.
Definition: Color.cs:55
static bool TryParse(string s, out SKColor Color)
Tries to parse a string containing a color name.
Definition: Color.cs:69
Base class for funcions of one scalar string variable.
ScriptNode Argument
Function argument.
Base class for all nodes in a parsed script tree.
Definition: ScriptNode.cs:69
int Length
Length of expression covered by node.
Definition: ScriptNode.cs:101
int Start
Start position in script expression.
Definition: ScriptNode.cs:92
Collection of variables.
Definition: Variables.cs:25
Basic interface for all types of elements.
Definition: IElement.cs:20