added SSCLI 1.0
[windows-sources.git] / sdk / samples / WPFSamples / DocumentSerialize / csharp / util.cs
blobd255ac1ef5a02f59d1927b3b3163957838932f42
1 // DocumentSerialize SDK Sample - Util.cs
2 // Copyright (c) Microsoft Corporation. All rights reserved.
4 using System;
5 using System.Collections.Generic;
6 using System.Text;
7 using System.IO;
8 using System.Windows.Markup;
9 using System.Windows.Threading;
10 using System.Windows.Documents;
11 using System.Windows.Media;
12 using System.Windows;
13 using System.Xml;
14 using System.Security;
16 namespace SdkSample
18 public static class Util
20 public static Stream ConvertTextToStream(string text)
22 System.Text.Encoding encoding = System.Text.Encoding.Unicode;
23 byte[] encodedBytes = encoding.GetBytes(text);
24 byte[] preamble = encoding.GetPreamble();
25 byte[] identifiableContent;
27 if (preamble.Length == 0)
29 identifiableContent = encodedBytes;
31 else
33 identifiableContent = new byte[preamble.Length + encodedBytes.Length];
34 preamble.CopyTo(identifiableContent, 0);
35 encodedBytes.CopyTo(identifiableContent, preamble.Length);
38 return new MemoryStream(identifiableContent);
41 public static object DeSerializeObjectTree(string xaml)
43 Stream stream = ConvertTextToStream(xaml);
44 ParserContext parserContext = new ParserContext();
45 parserContext.BaseUri = new Uri("pack://siteoforigin:,,,/");
46 return XamlReader.Load(stream, parserContext);
49 public static string SerializeObjectTree(object objectTree, XamlWriterMode expressionMode)
51 StringBuilder sb = new StringBuilder();
52 TextWriter writer = new StringWriter(sb);
53 XmlTextWriter xmlWriter = null;
55 try
57 // Create XmlTextWriter
58 xmlWriter = new XmlTextWriter(writer);
60 // Set serialization mode
61 XamlDesignerSerializationManager manager = new XamlDesignerSerializationManager(xmlWriter);
62 manager.XamlWriterMode = expressionMode;
63 // Serialize
64 System.Windows.Markup.XamlWriter.Save(objectTree, manager);
66 finally
68 if (xmlWriter != null)
69 xmlWriter.Close();
72 return sb.ToString();
75 public static string GetSavedDataPath(string savedXamlFileName)
77 string path = null;
79 path = Directory.GetCurrentDirectory();
81 path = System.IO.Path.Combine(path, savedXamlFileName);
82 return path;
85 public static FileStream GetStreamForSavedXamlFile(string savedDataPath, FileMode mode)
87 #if XamlPadExpressApp
88 // Get a store from Isolated Storage and see if xamlpad_saved.xaml exists
89 // for this user/application.
90 IsolatedStorageFile isoStore;
91 try
93 isoStore = IsolatedStorageFile.GetUserStoreForApplication();
96 catch (SecurityException)
98 // Just return null as if the saved file wasn't there.
99 return null;
102 // Get a stream for this file
105 IsolatedStorageFileStream stream = new IsolatedStorageFileStream(
106 savedXamlFileName,
107 mode,
108 isoStore);
110 return stream;
113 catch (FileNotFoundException)
115 // We are trying to open an existing file but it's not there.
116 // Just return null and we'll default to the initial content.
117 return null;
120 catch (IsolatedStorageException e)
122 // Isolated Storage permissions may not be granted to this user.
123 return null;
126 #else
127 // Use the rules for reading/writing the saved file -- if the app was deployed
128 // with ClickOnce, it goes to/from the user's desktop, otherwise the current
129 // directory is used.
132 FileStream stream = new FileStream(savedDataPath, mode);
133 return stream;
136 catch (UnauthorizedAccessException)
138 return null;
141 catch (SecurityException)
143 return null;
146 catch (FileNotFoundException)
148 return null;
150 catch (IOException)
152 return null;
154 #endif
157 public static void FlushDispatcher()
159 FlushDispatcher(Dispatcher.CurrentDispatcher);
162 /// <summary></summary>
163 /// <param name="ctx"></param>
164 public static void FlushDispatcher(Dispatcher ctx)
166 FlushDispatcher(ctx, DispatcherPriority.SystemIdle);
169 /// <summary></summary>
170 /// <param name="ctx"></param>
171 /// <param name="priority"></param>
172 public static void FlushDispatcher(Dispatcher ctx, DispatcherPriority priority)
174 ctx.Invoke(priority, new DispatcherOperationCallback(delegate { return null; }), null);
177 public static string GetIndentedXAML(string designXAML)
179 if (designXAML.Trim() == "") return "";
180 TextReader treader = new StringReader(designXAML);
181 XmlReader xmlReader = XmlReader.Create(treader);
182 xmlReader.Read();
183 string indentedXAML = "";
185 while (!xmlReader.EOF)
187 switch (xmlReader.NodeType)
189 case XmlNodeType.Element:
190 string tabs = "";
191 for (int i = 0; i < xmlReader.Depth; i++) tabs += " ";
193 if ((xmlReader.XmlSpace == XmlSpace.Preserve))
195 indentedXAML += "\n" + tabs + xmlReader.ReadOuterXml();
196 continue;
199 indentedXAML += "\n" + tabs + "<" + xmlReader.Name;
200 bool emptyElement = xmlReader.IsEmptyElement;
201 if (xmlReader.HasAttributes)
203 for (int i = 0; i < xmlReader.AttributeCount; i++)
205 xmlReader.MoveToAttribute(i);
206 indentedXAML += " " + xmlReader.Name + "=\"" + xmlReader.Value + "\"";
210 if (emptyElement) indentedXAML += "/";
211 indentedXAML += ">";
212 xmlReader.Read();
213 break;
214 case XmlNodeType.Text:
215 string origValue = xmlReader.Value;
216 origValue = origValue.Replace("&", "&amp;");
217 origValue = origValue.Replace("<", "&lt;");
218 origValue = origValue.Replace(">", "&gt;");
219 origValue = origValue.Replace("\"", "&quot;");
220 indentedXAML += origValue;
221 xmlReader.Read();
222 break;
223 case XmlNodeType.EndElement:
224 tabs = "";
225 for (int i = 0; i < xmlReader.Depth; i++) tabs += " ";
226 indentedXAML += "\n" + tabs + "</" + xmlReader.Name + ">";
227 xmlReader.Read();
228 break;
229 case XmlNodeType.Whitespace:
230 //indentedXAML += xmlReader.Value;
231 xmlReader.Read();
232 break;
233 default:
234 xmlReader.Read();
235 break;
239 // remove the first \n
240 string realText = indentedXAML.Substring(1, indentedXAML.Length - 1);
241 indentedXAML = realText;
242 return indentedXAML;
245 private static void InsertBlockWithinParagraph(Paragraph origP, TextPointer _caretPosition, Block objectToInsert)
247 if (IsParagraphEmpty(origP))
249 FlowDocument fd = origP.Parent as FlowDocument;
250 if (fd != null)
252 fd.Blocks.InsertAfter(origP, objectToInsert);
253 fd.Blocks.Remove(origP);
254 return;
257 ListItem li = origP.Parent as ListItem;
258 if (li != null)
260 li.Blocks.InsertAfter(origP, objectToInsert);
261 li.Blocks.Remove(origP);
262 return;
266 _caretPosition.InsertParagraphBreak();
267 origP.SiblingBlocks.InsertAfter(origP, objectToInsert);
270 public static string GetFileName(string path)
272 string[] values = path.Split('/');
274 foreach (string s in values)
276 if (s.ToLower().Contains(".jpg") || s.ToLower().Contains(".bmp") || s.ToLower().Contains(".png") || s.ToLower().Contains(".gif"))
278 return s;
281 return "";
284 public static string FindNumeric(string content)
286 string[] values = content.Split(' ');
287 if (values != null)
289 return values[0];
292 return "none";
295 public static string GetBrushesFromString(string value)
297 if (string.Compare(value, Brushes.AliceBlue.ToString()) == 0) return "AliceBlue";
298 if (string.Compare(value, Brushes.AntiqueWhite.ToString()) == 0) return "AntiqueWhite";
299 if (string.Compare(value, Brushes.Aqua.ToString()) == 0) return "Aqua";
300 if (string.Compare(value, Brushes.Aquamarine.ToString()) == 0) return "Aquamarine";
301 if (string.Compare(value, Brushes.Azure.ToString()) == 0) return "Azure";
302 if (string.Compare(value, Brushes.Beige.ToString()) == 0) return "Beige";
303 if (string.Compare(value, Brushes.Bisque.ToString()) == 0) return "Bisque";
304 if (string.Compare(value, Brushes.Black.ToString()) == 0) return "Black";
305 if (string.Compare(value, Brushes.BlanchedAlmond.ToString()) == 0) return "BlanchedAlmond";
306 if (string.Compare(value, Brushes.Blue.ToString()) == 0) return "Blue";
307 if (string.Compare(value, Brushes.BlueViolet.ToString()) == 0) return "BlueViolet";
308 if (string.Compare(value, Brushes.Brown.ToString()) == 0) return "Brown";
309 if (string.Compare(value, Brushes.BurlyWood.ToString()) == 0) return "BurlyWood";
310 if (string.Compare(value, Brushes.CadetBlue.ToString()) == 0) return "CadetBlue";
311 if (string.Compare(value, Brushes.Chartreuse.ToString()) == 0) return "Chartreuse";
312 if (string.Compare(value, Brushes.Chocolate.ToString()) == 0) return "Chocolate";
313 if (string.Compare(value, Brushes.Coral.ToString()) == 0) return "Coral";
314 if (string.Compare(value, Brushes.CornflowerBlue.ToString()) == 0) return "CornflowerBlue";
315 if (string.Compare(value, Brushes.Cornsilk.ToString()) == 0) return "Cornsilk";
316 if (string.Compare(value, Brushes.Crimson.ToString()) == 0) return "Crimson";
317 if (string.Compare(value, Brushes.Cyan.ToString()) == 0) return "Cyan";
318 if (string.Compare(value, Brushes.DarkBlue.ToString()) == 0) return "DarkBlue";
319 if (string.Compare(value, Brushes.DarkCyan.ToString()) == 0) return "DarkCyan";
320 if (string.Compare(value, Brushes.DarkGoldenrod.ToString()) == 0) return "DarkGoldenrod";
321 if (string.Compare(value, Brushes.DarkGray.ToString()) == 0) return "DarkGray";
322 if (string.Compare(value, Brushes.DarkGreen.ToString()) == 0) return "DarkGreen";
323 if (string.Compare(value, Brushes.DarkKhaki.ToString()) == 0) return "DarkKhaki";
324 if (string.Compare(value, Brushes.DarkMagenta.ToString()) == 0) return "DarkMagenta";
325 if (string.Compare(value, Brushes.DarkOliveGreen.ToString()) == 0) return "DarkOliveGreen";
326 if (string.Compare(value, Brushes.DarkOrange.ToString()) == 0) return "DarkOrange";
327 if (string.Compare(value, Brushes.DarkOrchid.ToString()) == 0) return "DarkOrchid";
328 if (string.Compare(value, Brushes.DarkRed.ToString()) == 0) return "DarkRed";
329 if (string.Compare(value, Brushes.DarkSalmon.ToString()) == 0) return "DarkSalmon";
330 if (string.Compare(value, Brushes.DarkSeaGreen.ToString()) == 0) return "DarkSeaGreen";
331 if (string.Compare(value, Brushes.DarkSlateBlue.ToString()) == 0) return "DarkSlateBlue";
332 if (string.Compare(value, Brushes.DarkSlateGray.ToString()) == 0) return "DarkSlateGray";
333 if (string.Compare(value, Brushes.DarkTurquoise.ToString()) == 0) return "DarkTurquoise";
334 if (string.Compare(value, Brushes.DarkViolet.ToString()) == 0) return "DarkViolet";
335 if (string.Compare(value, Brushes.DeepPink.ToString()) == 0) return "DeepPink";
336 if (string.Compare(value, Brushes.DeepSkyBlue.ToString()) == 0) return "DeepSkyBlue";
337 if (string.Compare(value, Brushes.DimGray.ToString()) == 0) return "DimGray";
338 if (string.Compare(value, Brushes.DodgerBlue.ToString()) == 0) return "DodgerBlue";
339 if (string.Compare(value, Brushes.Firebrick.ToString()) == 0) return "Firebrick";
340 if (string.Compare(value, Brushes.FloralWhite.ToString()) == 0) return "FloralWhite";
341 if (string.Compare(value, Brushes.ForestGreen.ToString()) == 0) return "ForestGreen";
342 if (string.Compare(value, Brushes.Fuchsia.ToString()) == 0) return "Fuchsia";
343 if (string.Compare(value, Brushes.Gainsboro.ToString()) == 0) return "Gainsboro";
344 if (string.Compare(value, Brushes.GhostWhite.ToString()) == 0) return "GhostWhite";
345 if (string.Compare(value, Brushes.Gold.ToString()) == 0) return "Gold";
346 if (string.Compare(value, Brushes.Goldenrod.ToString()) == 0) return "Goldenrod";
347 if (string.Compare(value, Brushes.Gray.ToString()) == 0) return "Gray";
348 if (string.Compare(value, Brushes.Green.ToString()) == 0) return "Green";
349 if (string.Compare(value, Brushes.GreenYellow.ToString()) == 0) return "GreenYellow";
350 if (string.Compare(value, Brushes.Honeydew.ToString()) == 0) return "Honeydew";
351 if (string.Compare(value, Brushes.HotPink.ToString()) == 0) return "HotPink";
352 if (string.Compare(value, Brushes.IndianRed.ToString()) == 0) return "IndianRed";
353 if (string.Compare(value, Brushes.Indigo.ToString()) == 0) return "Indigo";
354 if (string.Compare(value, Brushes.Ivory.ToString()) == 0) return "Ivory";
355 if (string.Compare(value, Brushes.Khaki.ToString()) == 0) return "Khaki";
356 if (string.Compare(value, Brushes.Lavender.ToString()) == 0) return "Lavender";
357 if (string.Compare(value, Brushes.LavenderBlush.ToString()) == 0) return "LavenderBlush";
358 if (string.Compare(value, Brushes.LawnGreen.ToString()) == 0) return "LawnGreen";
359 if (string.Compare(value, Brushes.LemonChiffon.ToString()) == 0) return "LemonChiffon";
360 if (string.Compare(value, Brushes.LightBlue.ToString()) == 0) return "LightBlue";
361 if (string.Compare(value, Brushes.LightCoral.ToString()) == 0) return "LightCoral";
362 if (string.Compare(value, Brushes.LightCyan.ToString()) == 0) return "LightCyan";
363 if (string.Compare(value, Brushes.LightGoldenrodYellow.ToString()) == 0) return "LightGoldenrodYellow";
364 if (string.Compare(value, Brushes.LightGray.ToString()) == 0) return "LightGray";
365 if (string.Compare(value, Brushes.LightGreen.ToString()) == 0) return "LightGreen";
366 if (string.Compare(value, Brushes.LightPink.ToString()) == 0) return "LightPink";
367 if (string.Compare(value, Brushes.LightSalmon.ToString()) == 0) return "LightSalmon";
368 if (string.Compare(value, Brushes.LightSeaGreen.ToString()) == 0) return "LightSeaGreen";
369 if (string.Compare(value, Brushes.LightSkyBlue.ToString()) == 0) return "LightSkyBlue";
370 if (string.Compare(value, Brushes.LightSlateGray.ToString()) == 0) return "LightSlateGray";
371 if (string.Compare(value, Brushes.LightSteelBlue.ToString()) == 0) return "LightSteelBlue";
372 if (string.Compare(value, Brushes.LightYellow.ToString()) == 0) return "LightYellow";
373 if (string.Compare(value, Brushes.Lime.ToString()) == 0) return "Lime";
374 if (string.Compare(value, Brushes.LimeGreen.ToString()) == 0) return "LimeGreen";
375 if (string.Compare(value, Brushes.Linen.ToString()) == 0) return "Linen";
376 if (string.Compare(value, Brushes.Magenta.ToString()) == 0) return "Magenta";
377 if (string.Compare(value, Brushes.Maroon.ToString()) == 0) return "Maroon";
378 if (string.Compare(value, Brushes.MediumAquamarine.ToString()) == 0) return "MediumAquamarine";
379 if (string.Compare(value, Brushes.MediumBlue.ToString()) == 0) return "MediumBlue";
380 if (string.Compare(value, Brushes.MediumOrchid.ToString()) == 0) return "MediumOrchid";
381 if (string.Compare(value, Brushes.MediumPurple.ToString()) == 0) return "MediumPurple";
382 if (string.Compare(value, Brushes.MediumSeaGreen.ToString()) == 0) return "MediumSeaGreen";
383 if (string.Compare(value, Brushes.MediumSlateBlue.ToString()) == 0) return "MediumSlateBlue";
384 if (string.Compare(value, Brushes.MediumSpringGreen.ToString()) == 0) return "MediumSpringGreen";
385 if (string.Compare(value, Brushes.MediumTurquoise.ToString()) == 0) return "MediumTurquoise";
386 if (string.Compare(value, Brushes.MediumVioletRed.ToString()) == 0) return "MediumVioletRed";
387 if (string.Compare(value, Brushes.MidnightBlue.ToString()) == 0) return "MidnightBlue";
388 if (string.Compare(value, Brushes.MintCream.ToString()) == 0) return "MintCream";
389 if (string.Compare(value, Brushes.MistyRose.ToString()) == 0) return "MistyRose";
390 if (string.Compare(value, Brushes.Moccasin.ToString()) == 0) return "Moccasin";
391 if (string.Compare(value, Brushes.NavajoWhite.ToString()) == 0) return "NavajoWhite";
392 if (string.Compare(value, Brushes.Navy.ToString()) == 0) return "Navy";
393 if (string.Compare(value, Brushes.OldLace.ToString()) == 0) return "OldLace";
394 if (string.Compare(value, Brushes.Olive.ToString()) == 0) return "Olive";
395 if (string.Compare(value, Brushes.OliveDrab.ToString()) == 0) return "OliveDrab";
396 if (string.Compare(value, Brushes.Orange.ToString()) == 0) return "Orange";
397 if (string.Compare(value, Brushes.OrangeRed.ToString()) == 0) return "OrangeRed";
398 if (string.Compare(value, Brushes.Orchid.ToString()) == 0) return "Orchid";
399 if (string.Compare(value, Brushes.PaleGoldenrod.ToString()) == 0) return "PaleGoldenrod";
400 if (string.Compare(value, Brushes.PaleGreen.ToString()) == 0) return "AntiqueWhite";
401 if (string.Compare(value, Brushes.PaleTurquoise.ToString()) == 0) return "PaleGreen";
402 if (string.Compare(value, Brushes.PaleVioletRed.ToString()) == 0) return "PaleVioletRed";
403 if (string.Compare(value, Brushes.PapayaWhip.ToString()) == 0) return "PapayaWhip";
404 if (string.Compare(value, Brushes.PeachPuff.ToString()) == 0) return "PeachPuff";
405 if (string.Compare(value, Brushes.Peru.ToString()) == 0) return "Peru";
406 if (string.Compare(value, Brushes.Pink.ToString()) == 0) return "Pink";
407 if (string.Compare(value, Brushes.Plum.ToString()) == 0) return "Plum";
408 if (string.Compare(value, Brushes.PowderBlue.ToString()) == 0) return "PowderBlue";
409 if (string.Compare(value, Brushes.Purple.ToString()) == 0) return "Purple";
410 if (string.Compare(value, Brushes.Red.ToString()) == 0) return "Red";
411 if (string.Compare(value, Brushes.RosyBrown.ToString()) == 0) return "RosyBrown";
412 if (string.Compare(value, Brushes.RoyalBlue.ToString()) == 0) return "RoyalBlue";
413 if (string.Compare(value, Brushes.SaddleBrown.ToString()) == 0) return "SaddleBrown";
414 if (string.Compare(value, Brushes.Salmon.ToString()) == 0) return "Salmon";
415 if (string.Compare(value, Brushes.SandyBrown.ToString()) == 0) return "SandyBrown";
416 if (string.Compare(value, Brushes.SeaGreen.ToString()) == 0) return "SeaGreen";
417 if (string.Compare(value, Brushes.SeaShell.ToString()) == 0) return "SeaShell";
418 if (string.Compare(value, Brushes.Sienna.ToString()) == 0) return "Sienna";
419 if (string.Compare(value, Brushes.Silver.ToString()) == 0) return "Silver";
420 if (string.Compare(value, Brushes.SkyBlue.ToString()) == 0) return "SkyBlue";
421 if (string.Compare(value, Brushes.SlateBlue.ToString()) == 0) return "SlateBlue";
422 if (string.Compare(value, Brushes.SlateGray.ToString()) == 0) return "SlateGray";
423 if (string.Compare(value, Brushes.Snow.ToString()) == 0) return "Snow";
424 if (string.Compare(value, Brushes.SpringGreen.ToString()) == 0) return "SpringGreen";
425 if (string.Compare(value, Brushes.SteelBlue.ToString()) == 0) return "SteelBlue";
426 if (string.Compare(value, Brushes.Tan.ToString()) == 0) return "Tan";
427 if (string.Compare(value, Brushes.Teal.ToString()) == 0) return "Teal";
428 if (string.Compare(value, Brushes.Thistle.ToString()) == 0) return "Thistle";
429 if (string.Compare(value, Brushes.Tomato.ToString()) == 0) return "Tomato";
430 if (string.Compare(value, Brushes.Transparent.ToString()) == 0) return "Transparent";
431 if (string.Compare(value, Brushes.Turquoise.ToString()) == 0) return "Turquoise";
432 if (string.Compare(value, Brushes.Violet.ToString()) == 0) return "Violet";
433 if (string.Compare(value, Brushes.Wheat.ToString()) == 0) return "Wheat";
434 if (string.Compare(value, Brushes.White.ToString()) == 0) return "White";
435 if (string.Compare(value, Brushes.WhiteSmoke.ToString()) == 0) return "WhiteSmoke";
436 if (string.Compare(value, Brushes.Yellow.ToString()) == 0) return "Yellow";
437 if (string.Compare(value, Brushes.YellowGreen.ToString()) == 0) return "YellowGreen";
439 return "color not specified";
442 public static SolidColorBrush ColorStringToBrushes(string colorString)
444 colorString = colorString.Trim();
445 if (null != colorString)
447 // We use invariant culture because we don't globalize our color names
448 string colorUpper = colorString.ToUpper(System.Globalization.CultureInfo.InvariantCulture);
450 // Use String.Equals because it does explicit equality
451 // StartsWith/EndsWith are culture sensitive and are 4-7 times slower than Equals
453 switch (colorUpper.Length)
455 case 3:
456 if (colorUpper.Equals("RED")) return Brushes.Red;
457 if (colorUpper.Equals("TAN")) return Brushes.Tan;
458 break;
459 case 4:
460 switch (colorUpper[0])
462 case 'A':
463 if (colorUpper.Equals("AQUA")) return Brushes.Aqua;
464 break;
465 case 'B':
466 if (colorUpper.Equals("BLUE")) return Brushes.Blue;
467 break;
468 case 'C':
469 if (colorUpper.Equals("CYAN")) return Brushes.Cyan;
470 break;
471 case 'G':
472 if (colorUpper.Equals("GOLD")) return Brushes.Gold;
473 if (colorUpper.Equals("GRAY")) return Brushes.Gray;
474 break;
475 case 'L':
476 if (colorUpper.Equals("LIME")) return Brushes.Lime;
477 break;
478 case 'N':
479 if (colorUpper.Equals("NAVY")) return Brushes.Navy;
480 break;
481 case 'P':
482 if (colorUpper.Equals("PERU")) return Brushes.Peru;
483 if (colorUpper.Equals("PINK")) return Brushes.Pink;
484 if (colorUpper.Equals("PLUM")) return Brushes.Plum;
485 break;
486 case 'S':
487 if (colorUpper.Equals("SNOW")) return Brushes.Snow;
488 break;
489 case 'T':
490 if (colorUpper.Equals("TEAL")) return Brushes.Teal;
491 break;
493 break;
494 case 5:
495 switch (colorUpper[0])
497 case 'A':
498 if (colorUpper.Equals("AZURE")) return Brushes.Azure;
499 break;
500 case 'B':
501 if (colorUpper.Equals("BEIGE")) return Brushes.Beige;
502 if (colorUpper.Equals("BLACK")) return Brushes.Black;
503 if (colorUpper.Equals("BROWN")) return Brushes.Brown;
504 break;
505 case 'C':
506 if (colorUpper.Equals("CORAL")) return Brushes.Coral;
507 break;
508 case 'G':
509 if (colorUpper.Equals("GREEN")) return Brushes.Green;
510 break;
511 case 'I':
512 if (colorUpper.Equals("IVORY")) return Brushes.Ivory;
513 break;
514 case 'K':
515 if (colorUpper.Equals("KHAKI")) return Brushes.Khaki;
516 break;
517 case 'L':
518 if (colorUpper.Equals("LINEN")) return Brushes.Linen;
519 break;
520 case 'O':
521 if (colorUpper.Equals("OLIVE")) return Brushes.Olive;
522 break;
523 case 'W':
524 if (colorUpper.Equals("WHEAT")) return Brushes.Wheat;
525 if (colorUpper.Equals("WHITE")) return Brushes.White;
526 break;
528 break;
529 case 6:
530 switch (colorUpper[0])
532 case 'B':
533 if (colorUpper.Equals("BISQUE")) return Brushes.Bisque;
534 break;
535 case 'I':
536 if (colorUpper.Equals("INDIGO")) return Brushes.Indigo;
537 break;
538 case 'M':
539 if (colorUpper.Equals("MAROON")) return Brushes.Maroon;
540 break;
541 case 'O':
542 if (colorUpper.Equals("ORANGE")) return Brushes.Orange;
543 if (colorUpper.Equals("ORCHID")) return Brushes.Orchid;
544 break;
545 case 'P':
546 if (colorUpper.Equals("PURPLE")) return Brushes.Purple;
547 break;
548 case 'S':
549 if (colorUpper.Equals("SALMON")) return Brushes.Salmon;
550 if (colorUpper.Equals("SIENNA")) return Brushes.Sienna;
551 if (colorUpper.Equals("SILVER")) return Brushes.Silver;
552 break;
553 case 'T':
554 if (colorUpper.Equals("TOMATO")) return Brushes.Tomato;
555 break;
556 case 'V':
557 if (colorUpper.Equals("VIOLET")) return Brushes.Violet;
558 break;
559 case 'Y':
560 if (colorUpper.Equals("YELLOW")) return Brushes.Yellow;
561 break;
563 break;
564 case 7:
565 switch (colorUpper[0])
567 case 'C':
568 if (colorUpper.Equals("CRIMSON")) return Brushes.Crimson;
569 break;
570 case 'D':
571 if (colorUpper.Equals("DARKRED")) return Brushes.DarkRed;
572 if (colorUpper.Equals("DIMGRAY")) return Brushes.DimGray;
573 break;
574 case 'F':
575 if (colorUpper.Equals("FUCHSIA")) return Brushes.Fuchsia;
576 break;
577 case 'H':
578 if (colorUpper.Equals("HOTPINK")) return Brushes.HotPink;
579 break;
580 case 'M':
581 if (colorUpper.Equals("MAGENTA")) return Brushes.Magenta;
582 break;
583 case 'O':
584 if (colorUpper.Equals("OLDLACE")) return Brushes.OldLace;
585 break;
586 case 'S':
587 if (colorUpper.Equals("SKYBLUE")) return Brushes.SkyBlue;
588 break;
589 case 'T':
590 if (colorUpper.Equals("THISTLE")) return Brushes.Thistle;
591 break;
593 break;
594 case 8:
595 switch (colorUpper[0])
597 case 'C':
598 if (colorUpper.Equals("CORNSILK")) return Brushes.Cornsilk;
599 break;
600 case 'D':
601 if (colorUpper.Equals("DARKBLUE")) return Brushes.DarkBlue;
602 if (colorUpper.Equals("DARKCYAN")) return Brushes.DarkCyan;
603 if (colorUpper.Equals("DARKGRAY")) return Brushes.DarkGray;
604 if (colorUpper.Equals("DEEPPINK")) return Brushes.DeepPink;
605 break;
606 case 'H':
607 if (colorUpper.Equals("HONEYDEW")) return Brushes.Honeydew;
608 break;
609 case 'L':
610 if (colorUpper.Equals("LAVENDER")) return Brushes.Lavender;
611 break;
612 case 'M':
613 if (colorUpper.Equals("MOCCASIN")) return Brushes.Moccasin;
614 break;
615 case 'S':
616 if (colorUpper.Equals("SEAGREEN")) return Brushes.SeaGreen;
617 if (colorUpper.Equals("SEASHELL")) return Brushes.SeaShell;
618 break;
620 break;
621 case 9:
622 switch (colorUpper[0])
624 case 'A':
625 if (colorUpper.Equals("ALICEBLUE")) return Brushes.AliceBlue;
626 break;
627 case 'B':
628 if (colorUpper.Equals("BURLYWOOD")) return Brushes.BurlyWood;
629 break;
630 case 'C':
631 if (colorUpper.Equals("CADETBLUE")) return Brushes.CadetBlue;
632 if (colorUpper.Equals("CHOCOLATE")) return Brushes.Chocolate;
633 break;
634 case 'D':
635 if (colorUpper.Equals("DARKGREEN")) return Brushes.DarkGreen;
636 if (colorUpper.Equals("DARKKHAKI")) return Brushes.DarkKhaki;
637 break;
638 case 'F':
639 if (colorUpper.Equals("FIREBRICK")) return Brushes.Firebrick;
640 break;
641 case 'G':
642 if (colorUpper.Equals("GAINSBORO")) return Brushes.Gainsboro;
643 if (colorUpper.Equals("GOLDENROD")) return Brushes.Goldenrod;
644 break;
645 case 'I':
646 if (colorUpper.Equals("INDIANRED")) return Brushes.IndianRed;
647 break;
648 case 'L':
649 if (colorUpper.Equals("LAWNGREEN")) return Brushes.LawnGreen;
650 if (colorUpper.Equals("LIGHTBLUE")) return Brushes.LightBlue;
651 if (colorUpper.Equals("LIGHTCYAN")) return Brushes.LightCyan;
652 if (colorUpper.Equals("LIGHTGRAY")) return Brushes.LightGray;
653 if (colorUpper.Equals("LIGHTPINK")) return Brushes.LightPink;
654 if (colorUpper.Equals("LIMEGREEN")) return Brushes.LimeGreen;
655 break;
656 case 'M':
657 if (colorUpper.Equals("MINTCREAM")) return Brushes.MintCream;
658 if (colorUpper.Equals("MISTYROSE")) return Brushes.MistyRose;
659 break;
660 case 'O':
661 if (colorUpper.Equals("OLIVEDRAB")) return Brushes.OliveDrab;
662 if (colorUpper.Equals("ORANGERED")) return Brushes.OrangeRed;
663 break;
664 case 'P':
665 if (colorUpper.Equals("PALEGREEN")) return Brushes.PaleGreen;
666 if (colorUpper.Equals("PEACHPUFF")) return Brushes.PeachPuff;
667 break;
668 case 'R':
669 if (colorUpper.Equals("ROSYBROWN")) return Brushes.RosyBrown;
670 if (colorUpper.Equals("ROYALBLUE")) return Brushes.RoyalBlue;
671 break;
672 case 'S':
673 if (colorUpper.Equals("SLATEBLUE")) return Brushes.SlateBlue;
674 if (colorUpper.Equals("SLATEGRAY")) return Brushes.SlateGray;
675 if (colorUpper.Equals("STEELBLUE")) return Brushes.SteelBlue;
676 break;
677 case 'T':
678 if (colorUpper.Equals("TURQUOISE")) return Brushes.Turquoise;
679 break;
681 break;
682 case 10:
683 switch (colorUpper[0])
685 case 'A':
686 if (colorUpper.Equals("AQUAMARINE")) return Brushes.Aquamarine;
687 break;
688 case 'B':
689 if (colorUpper.Equals("BLUEVIOLET")) return Brushes.BlueViolet;
690 break;
691 case 'C':
692 if (colorUpper.Equals("CHARTREUSE")) return Brushes.Chartreuse;
693 break;
694 case 'D':
695 if (colorUpper.Equals("DARKORANGE")) return Brushes.DarkOrange;
696 if (colorUpper.Equals("DARKORCHID")) return Brushes.DarkOrchid;
697 if (colorUpper.Equals("DARKSALMON")) return Brushes.DarkSalmon;
698 if (colorUpper.Equals("DARKVIOLET")) return Brushes.DarkViolet;
699 if (colorUpper.Equals("DODGERBLUE")) return Brushes.DodgerBlue;
700 break;
701 case 'G':
702 if (colorUpper.Equals("GHOSTWHITE")) return Brushes.GhostWhite;
703 break;
704 case 'L':
705 if (colorUpper.Equals("LIGHTCORAL")) return Brushes.LightCoral;
706 if (colorUpper.Equals("LIGHTGREEN")) return Brushes.LightGreen;
707 break;
708 case 'M':
709 if (colorUpper.Equals("MEDIUMBLUE")) return Brushes.MediumBlue;
710 break;
711 case 'P':
712 if (colorUpper.Equals("PAPAYAWHIP")) return Brushes.PapayaWhip;
713 if (colorUpper.Equals("POWDERBLUE")) return Brushes.PowderBlue;
714 break;
715 case 'S':
716 if (colorUpper.Equals("SANDYBROWN")) return Brushes.SandyBrown;
717 break;
718 case 'W':
719 if (colorUpper.Equals("WHITESMOKE")) return Brushes.WhiteSmoke;
720 break;
722 break;
723 case 11:
724 switch (colorUpper[0])
726 case 'D':
727 if (colorUpper.Equals("DARKMAGENTA")) return Brushes.DarkMagenta;
728 if (colorUpper.Equals("DEEPSKYBLUE")) return Brushes.DeepSkyBlue;
729 break;
730 case 'F':
731 if (colorUpper.Equals("FLORALWHITE")) return Brushes.FloralWhite;
732 if (colorUpper.Equals("FORESTGREEN")) return Brushes.ForestGreen;
733 break;
734 case 'G':
735 if (colorUpper.Equals("GREENYELLOW")) return Brushes.GreenYellow;
736 break;
737 case 'L':
738 if (colorUpper.Equals("LIGHTSALMON")) return Brushes.LightSalmon;
739 if (colorUpper.Equals("LIGHTYELLOW")) return Brushes.LightYellow;
740 break;
741 case 'N':
742 if (colorUpper.Equals("NAVAJOWHITE")) return Brushes.NavajoWhite;
743 break;
744 case 'S':
745 if (colorUpper.Equals("SADDLEBROWN")) return Brushes.SaddleBrown;
746 if (colorUpper.Equals("SPRINGGREEN")) return Brushes.SpringGreen;
747 break;
748 case 'T':
749 if (colorUpper.Equals("TRANSPARENT")) return Brushes.Transparent;
750 break;
751 case 'Y':
752 if (colorUpper.Equals("YELLOWGREEN")) return Brushes.YellowGreen;
753 break;
755 break;
756 case 12:
757 switch (colorUpper[0])
759 case 'A':
760 if (colorUpper.Equals("ANTIQUEWHITE")) return Brushes.AntiqueWhite;
761 break;
762 case 'D':
763 if (colorUpper.Equals("DARKSEAGREEN")) return Brushes.DarkSeaGreen;
764 break;
765 case 'L':
766 if (colorUpper.Equals("LIGHTSKYBLUE")) return Brushes.LightSkyBlue;
767 if (colorUpper.Equals("LEMONCHIFFON")) return Brushes.LemonChiffon;
768 break;
769 case 'M':
770 if (colorUpper.Equals("MEDIUMORCHID")) return Brushes.MediumOrchid;
771 if (colorUpper.Equals("MEDIUMPURPLE")) return Brushes.MediumPurple;
772 if (colorUpper.Equals("MIDNIGHTBLUE")) return Brushes.MidnightBlue;
773 break;
775 break;
776 case 13:
777 switch (colorUpper[0])
779 case 'D':
780 if (colorUpper.Equals("DARKSLATEBLUE")) return Brushes.DarkSlateBlue;
781 if (colorUpper.Equals("DARKSLATEGRAY")) return Brushes.DarkSlateGray;
782 if (colorUpper.Equals("DARKGOLDENROD")) return Brushes.DarkGoldenrod;
783 if (colorUpper.Equals("DARKTURQUOISE")) return Brushes.DarkTurquoise;
784 break;
785 case 'L':
786 if (colorUpper.Equals("LIGHTSEAGREEN")) return Brushes.LightSeaGreen;
787 if (colorUpper.Equals("LAVENDERBLUSH")) return Brushes.LavenderBlush;
788 break;
789 case 'P':
790 if (colorUpper.Equals("PALEGOLDENROD")) return Brushes.PaleGoldenrod;
791 if (colorUpper.Equals("PALETURQUOISE")) return Brushes.PaleTurquoise;
792 if (colorUpper.Equals("PALEVIOLETRED")) return Brushes.PaleVioletRed;
793 break;
795 break;
796 case 14:
797 switch (colorUpper[0])
799 case 'B':
800 if (colorUpper.Equals("BLANCHEDALMOND")) return Brushes.BlanchedAlmond;
801 break;
802 case 'C':
803 if (colorUpper.Equals("CORNFLOWERBLUE")) return Brushes.CornflowerBlue;
804 break;
805 case 'D':
806 if (colorUpper.Equals("DARKOLIVEGREEN")) return Brushes.DarkOliveGreen;
807 break;
808 case 'L':
809 if (colorUpper.Equals("LIGHTSLATEGRAY")) return Brushes.LightSlateGray;
810 if (colorUpper.Equals("LIGHTSTEELBLUE")) return Brushes.LightSteelBlue;
811 break;
812 case 'M':
813 if (colorUpper.Equals("MEDIUMSEAGREEN")) return Brushes.MediumSeaGreen;
814 break;
816 break;
817 case 15:
818 if (colorUpper.Equals("MEDIUMSLATEBLUE")) return Brushes.MediumSlateBlue;
819 if (colorUpper.Equals("MEDIUMTURQUOISE")) return Brushes.MediumTurquoise;
820 if (colorUpper.Equals("MEDIUMVIOLETRED")) return Brushes.MediumVioletRed;
821 break;
822 case 16:
823 if (colorUpper.Equals("MEDIUMAQUAMARINE")) return Brushes.MediumAquamarine;
824 break;
825 case 17:
826 if (colorUpper.Equals("MEDIUMSPRINGGREEN")) return Brushes.MediumSpringGreen;
827 break;
828 case 20:
829 if (colorUpper.Equals("LIGHTGOLDENRODYELLOW")) return Brushes.LightGoldenrodYellow;
830 break;
833 return null;
836 public static List<UIElement> UIElementsInElement(FrameworkContentElement parent)
838 List<UIElement> UIEresults = new List<UIElement>();
839 GetUIElementsRecursively(parent as DependencyObject, UIEresults);
841 return UIEresults;
844 static void GetUIElementsRecursively(DependencyObject dObj, List<UIElement> UIresults)
846 if (dObj == null)
848 return;
851 UIElement uiElement = dObj as UIElement;
852 if (uiElement != null)
854 UIresults.Add(uiElement);
857 foreach (object o in LogicalTreeHelper.GetChildren(dObj))
859 GetUIElementsRecursively(o as DependencyObject, UIresults);
863 static void GetContentElementsRecursively(DependencyObject dObj, List<ContentElement> CEresults)
865 if (dObj == null)
867 return;
870 ContentElement ceElement = dObj as ContentElement;
871 if (ceElement != null)
873 CEresults.Add(ceElement);
876 foreach (object o in LogicalTreeHelper.GetChildren(dObj))
878 GetContentElementsRecursively(o as DependencyObject, CEresults);
882 static public bool IsParagraphEmpty(Paragraph suspect)
884 if (suspect.Inlines.Count == 0)
885 return true;
887 if (suspect.Inlines.Count == 1)
889 Run r = suspect.Inlines.FirstInline as Run;
890 if (r != null)
892 if (r.Text == "")
894 return true;
899 return false;
902 static void FindParentParagraph(Span child, ref Paragraph parent)
904 if (child.Parent is Paragraph)
906 parent = child.Parent as Paragraph;
907 return;
909 else
911 FindParentParagraph(child.Parent as Span, ref parent);