Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ColorTranslator.cs
Go to the documentation of this file.
3
4namespace System.Drawing;
5
6public static class ColorTranslator
7{
9
10 internal static uint COLORREFToARGB(uint value)
11 {
12 return ((value & 0xFF) << 16) | (((value >> 8) & 0xFF) << 8) | ((value >> 16) & 0xFFu) | 0xFF000000u;
13 }
14
15 public static int ToWin32(Color c)
16 {
17 return c.R | (c.G << 8) | (c.B << 16);
18 }
19
20 public static int ToOle(Color c)
21 {
22 if (c.IsKnownColor && c.IsSystemColor)
23 {
24 switch (c.ToKnownColor())
25 {
26 case KnownColor.ActiveBorder:
27 return -2147483638;
28 case KnownColor.ActiveCaption:
29 return -2147483646;
30 case KnownColor.ActiveCaptionText:
31 return -2147483639;
32 case KnownColor.AppWorkspace:
33 return -2147483636;
34 case KnownColor.ButtonFace:
35 return -2147483633;
36 case KnownColor.ButtonHighlight:
37 return -2147483628;
38 case KnownColor.ButtonShadow:
39 return -2147483632;
40 case KnownColor.Control:
41 return -2147483633;
42 case KnownColor.ControlDark:
43 return -2147483632;
44 case KnownColor.ControlDarkDark:
45 return -2147483627;
46 case KnownColor.ControlLight:
47 return -2147483626;
48 case KnownColor.ControlLightLight:
49 return -2147483628;
50 case KnownColor.ControlText:
51 return -2147483630;
52 case KnownColor.Desktop:
53 return -2147483647;
54 case KnownColor.GradientActiveCaption:
55 return -2147483621;
56 case KnownColor.GradientInactiveCaption:
57 return -2147483620;
58 case KnownColor.GrayText:
59 return -2147483631;
60 case KnownColor.Highlight:
61 return -2147483635;
62 case KnownColor.HighlightText:
63 return -2147483634;
64 case KnownColor.HotTrack:
65 return -2147483622;
66 case KnownColor.InactiveBorder:
67 return -2147483637;
68 case KnownColor.InactiveCaption:
69 return -2147483645;
70 case KnownColor.InactiveCaptionText:
71 return -2147483629;
72 case KnownColor.Info:
73 return -2147483624;
74 case KnownColor.InfoText:
75 return -2147483625;
76 case KnownColor.Menu:
77 return -2147483644;
78 case KnownColor.MenuBar:
79 return -2147483618;
80 case KnownColor.MenuHighlight:
81 return -2147483619;
82 case KnownColor.MenuText:
83 return -2147483641;
84 case KnownColor.ScrollBar:
85 return int.MinValue;
86 case KnownColor.Window:
87 return -2147483643;
88 case KnownColor.WindowFrame:
89 return -2147483642;
90 case KnownColor.WindowText:
91 return -2147483640;
92 }
93 }
94 return ToWin32(c);
95 }
96
97 public static Color FromOle(int oleColor)
98 {
99 if (((uint)oleColor & 0x80000000u) != 0)
100 {
101 switch (oleColor)
102 {
103 case -2147483638:
104 return Color.FromKnownColor(KnownColor.ActiveBorder);
105 case -2147483646:
106 return Color.FromKnownColor(KnownColor.ActiveCaption);
107 case -2147483639:
108 return Color.FromKnownColor(KnownColor.ActiveCaptionText);
109 case -2147483636:
110 return Color.FromKnownColor(KnownColor.AppWorkspace);
111 case -2147483633:
112 return Color.FromKnownColor(KnownColor.Control);
113 case -2147483632:
114 return Color.FromKnownColor(KnownColor.ControlDark);
115 case -2147483627:
116 return Color.FromKnownColor(KnownColor.ControlDarkDark);
117 case -2147483626:
118 return Color.FromKnownColor(KnownColor.ControlLight);
119 case -2147483628:
120 return Color.FromKnownColor(KnownColor.ControlLightLight);
121 case -2147483630:
122 return Color.FromKnownColor(KnownColor.ControlText);
123 case -2147483647:
124 return Color.FromKnownColor(KnownColor.Desktop);
125 case -2147483621:
126 return Color.FromKnownColor(KnownColor.GradientActiveCaption);
127 case -2147483620:
128 return Color.FromKnownColor(KnownColor.GradientInactiveCaption);
129 case -2147483631:
130 return Color.FromKnownColor(KnownColor.GrayText);
131 case -2147483635:
132 return Color.FromKnownColor(KnownColor.Highlight);
133 case -2147483634:
134 return Color.FromKnownColor(KnownColor.HighlightText);
135 case -2147483622:
136 return Color.FromKnownColor(KnownColor.HotTrack);
137 case -2147483637:
138 return Color.FromKnownColor(KnownColor.InactiveBorder);
139 case -2147483645:
140 return Color.FromKnownColor(KnownColor.InactiveCaption);
141 case -2147483629:
142 return Color.FromKnownColor(KnownColor.InactiveCaptionText);
143 case -2147483624:
144 return Color.FromKnownColor(KnownColor.Info);
145 case -2147483625:
146 return Color.FromKnownColor(KnownColor.InfoText);
147 case -2147483644:
148 return Color.FromKnownColor(KnownColor.Menu);
149 case -2147483618:
150 return Color.FromKnownColor(KnownColor.MenuBar);
151 case -2147483619:
152 return Color.FromKnownColor(KnownColor.MenuHighlight);
153 case -2147483641:
154 return Color.FromKnownColor(KnownColor.MenuText);
155 case int.MinValue:
156 return Color.FromKnownColor(KnownColor.ScrollBar);
157 case -2147483643:
158 return Color.FromKnownColor(KnownColor.Window);
159 case -2147483642:
160 return Color.FromKnownColor(KnownColor.WindowFrame);
161 case -2147483640:
162 return Color.FromKnownColor(KnownColor.WindowText);
163 }
164 }
166 }
167
168 public static Color FromWin32(int win32Color)
169 {
170 return FromOle(win32Color);
171 }
172
173 public static Color FromHtml(string htmlColor)
174 {
176 if (htmlColor == null || htmlColor.Length == 0)
177 {
178 return value;
179 }
180 if (htmlColor[0] == '#' && (htmlColor.Length == 7 || htmlColor.Length == 4))
181 {
182 if (htmlColor.Length == 7)
183 {
184 value = Color.FromArgb(Convert.ToInt32(htmlColor.Substring(1, 2), 16), Convert.ToInt32(htmlColor.Substring(3, 2), 16), Convert.ToInt32(htmlColor.Substring(5, 2), 16));
185 }
186 else
187 {
188 string text = char.ToString(htmlColor[1]);
189 string text2 = char.ToString(htmlColor[2]);
190 string text3 = char.ToString(htmlColor[3]);
192 }
193 }
194 if (value.IsEmpty && string.Equals(htmlColor, "LightGrey", StringComparison.OrdinalIgnoreCase))
195 {
197 }
198 if (value.IsEmpty)
199 {
200 if (s_htmlSysColorTable == null)
201 {
203 }
204 s_htmlSysColorTable.TryGetValue(htmlColor.ToLowerInvariant(), out value);
205 }
206 if (value.IsEmpty)
207 {
208 try
209 {
211 }
212 catch (Exception ex)
213 {
214 throw new ArgumentException(ex.Message, "htmlColor", ex);
215 }
216 }
217 return value;
218 }
219
220 public static string ToHtml(Color c)
221 {
222 string result = string.Empty;
223 if (c.IsEmpty)
224 {
225 return result;
226 }
227 if (!c.IsSystemColor)
228 {
229 result = ((!c.IsNamedColor) ? $"#{c.R:X2}{c.G:X2}{c.B:X2}" : ((!(c == Color.LightGray)) ? c.Name : "LightGrey"));
230 }
231 else
232 {
233 switch (c.ToKnownColor())
234 {
235 case KnownColor.ActiveBorder:
236 result = "activeborder";
237 break;
238 case KnownColor.ActiveCaption:
239 case KnownColor.GradientActiveCaption:
240 result = "activecaption";
241 break;
242 case KnownColor.AppWorkspace:
243 result = "appworkspace";
244 break;
245 case KnownColor.Desktop:
246 result = "background";
247 break;
248 case KnownColor.Control:
249 case KnownColor.ControlLight:
250 result = "buttonface";
251 break;
252 case KnownColor.ControlDark:
253 result = "buttonshadow";
254 break;
255 case KnownColor.ControlText:
256 result = "buttontext";
257 break;
258 case KnownColor.ActiveCaptionText:
259 result = "captiontext";
260 break;
261 case KnownColor.GrayText:
262 result = "graytext";
263 break;
264 case KnownColor.Highlight:
265 case KnownColor.HotTrack:
266 result = "highlight";
267 break;
268 case KnownColor.HighlightText:
269 case KnownColor.MenuHighlight:
270 result = "highlighttext";
271 break;
272 case KnownColor.InactiveBorder:
273 result = "inactiveborder";
274 break;
275 case KnownColor.InactiveCaption:
276 case KnownColor.GradientInactiveCaption:
277 result = "inactivecaption";
278 break;
279 case KnownColor.InactiveCaptionText:
280 result = "inactivecaptiontext";
281 break;
282 case KnownColor.Info:
283 result = "infobackground";
284 break;
285 case KnownColor.InfoText:
286 result = "infotext";
287 break;
288 case KnownColor.Menu:
289 case KnownColor.MenuBar:
290 result = "menu";
291 break;
292 case KnownColor.MenuText:
293 result = "menutext";
294 break;
295 case KnownColor.ScrollBar:
296 result = "scrollbar";
297 break;
298 case KnownColor.ControlDarkDark:
299 result = "threeddarkshadow";
300 break;
301 case KnownColor.ControlLightLight:
302 result = "buttonhighlight";
303 break;
304 case KnownColor.Window:
305 result = "window";
306 break;
307 case KnownColor.WindowFrame:
308 result = "windowframe";
309 break;
310 case KnownColor.WindowText:
311 result = "windowtext";
312 break;
313 }
314 }
315 return result;
316 }
317
318 private static void InitializeHtmlSysColorTable()
319 {
321 {
322 ["activeborder"] = Color.FromKnownColor(KnownColor.ActiveBorder),
323 ["activecaption"] = Color.FromKnownColor(KnownColor.ActiveCaption),
324 ["appworkspace"] = Color.FromKnownColor(KnownColor.AppWorkspace),
325 ["background"] = Color.FromKnownColor(KnownColor.Desktop),
326 ["buttonface"] = Color.FromKnownColor(KnownColor.Control),
327 ["buttonhighlight"] = Color.FromKnownColor(KnownColor.ControlLightLight),
328 ["buttonshadow"] = Color.FromKnownColor(KnownColor.ControlDark),
329 ["buttontext"] = Color.FromKnownColor(KnownColor.ControlText),
330 ["captiontext"] = Color.FromKnownColor(KnownColor.ActiveCaptionText),
331 ["graytext"] = Color.FromKnownColor(KnownColor.GrayText),
332 ["highlight"] = Color.FromKnownColor(KnownColor.Highlight),
333 ["highlighttext"] = Color.FromKnownColor(KnownColor.HighlightText),
334 ["inactiveborder"] = Color.FromKnownColor(KnownColor.InactiveBorder),
335 ["inactivecaption"] = Color.FromKnownColor(KnownColor.InactiveCaption),
336 ["inactivecaptiontext"] = Color.FromKnownColor(KnownColor.InactiveCaptionText),
337 ["infobackground"] = Color.FromKnownColor(KnownColor.Info),
338 ["infotext"] = Color.FromKnownColor(KnownColor.InfoText),
339 ["menu"] = Color.FromKnownColor(KnownColor.Menu),
340 ["menutext"] = Color.FromKnownColor(KnownColor.MenuText),
341 ["scrollbar"] = Color.FromKnownColor(KnownColor.ScrollBar),
342 ["threeddarkshadow"] = Color.FromKnownColor(KnownColor.ControlDarkDark),
343 ["threedface"] = Color.FromKnownColor(KnownColor.Control),
344 ["threedhighlight"] = Color.FromKnownColor(KnownColor.ControlLight),
345 ["threedlightshadow"] = Color.FromKnownColor(KnownColor.ControlLightLight),
346 ["window"] = Color.FromKnownColor(KnownColor.Window),
347 ["windowframe"] = Color.FromKnownColor(KnownColor.WindowFrame),
348 ["windowtext"] = Color.FromKnownColor(KnownColor.WindowText)
349 };
350 }
351}
static int ToInt32(object? value)
Definition Convert.cs:1320
static Color ConvertFromString(string strValue, CultureInfo culture)
static string ToHtml(Color c)
static Color FromWin32(int win32Color)
static Color FromOle(int oleColor)
static uint COLORREFToARGB(uint value)
static Dictionary< string, Color > s_htmlSysColorTable
static Color FromHtml(string htmlColor)
static Color ArgbToKnownColor(uint argb)
static CultureInfo CurrentCulture
static Color FromArgb(uint argb)
Definition Color.cs:412
static Color FromKnownColor(KnownColor color)
Definition Color.cs:442
static readonly Color Empty
Definition Color.cs:15
static Color LightGray
Definition Color.cs:163
KnownColor ToKnownColor()
Definition Color.cs:538