b21bf66e033be0991fbba9eee5ab5fc60ba22db5
[mono.git] / mcs / class / referencesource / System.Activities.Presentation / System.Activities.Presentation / System / Activities / Presentation / Base / Core / Internal / PropertyEditing / PropertyInspectorFontAndColorDictionary.cs
1 //----------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation.  All rights reserved.
3 //----------------------------------------------------------------
4
5 namespace System.Activities.Presentation.Internal.PropertyEditing 
6 {
7     using System.Collections.Generic;
8     using System.Windows;
9     using System.Windows.Media;
10     using System.Diagnostics.CodeAnalysis;
11
12     internal class PropertyInspectorFontAndColorDictionary : ResourceDictionary 
13     {
14         [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
15         internal PropertyInspectorFontAndColorDictionary(Dictionary<string, object> fontAndColorData) 
16         {
17             try 
18             {
19                 BeginInit();
20
21                 foreach (KeyValuePair<string, object> keyValuePair in fontAndColorData)
22                 {
23                     if (keyValuePair.Value is System.Drawing.SolidBrush)
24                     {
25                         System.Drawing.SolidBrush drawingBrush = (System.Drawing.SolidBrush)(keyValuePair.Value);
26                         Color color = new Color();
27                         color.A = drawingBrush.Color.A;
28                         color.R = drawingBrush.Color.R;
29                         color.G = drawingBrush.Color.G;
30                         color.B = drawingBrush.Color.B;
31
32                         Add(keyValuePair.Key, new SolidColorBrush(color));
33                     }
34                     else if (keyValuePair.Value is System.Drawing.Drawing2D.LinearGradientBrush)
35                     {
36                         System.Drawing.Drawing2D.LinearGradientBrush drawingBrush = (System.Drawing.Drawing2D.LinearGradientBrush)keyValuePair.Value;
37                         Color startingColor = new Color();
38                         startingColor.A = drawingBrush.LinearColors[0].A;
39                         startingColor.R = drawingBrush.LinearColors[0].R;
40                         startingColor.G = drawingBrush.LinearColors[0].G;
41                         startingColor.B = drawingBrush.LinearColors[0].B;
42                         Color endingColor = new Color();
43                         endingColor.A = drawingBrush.LinearColors[1].A;
44                         endingColor.R = drawingBrush.LinearColors[1].R;
45                         endingColor.G = drawingBrush.LinearColors[1].G;
46                         endingColor.B = drawingBrush.LinearColors[1].B;
47                         Add(keyValuePair.Key, new System.Windows.Media.LinearGradientBrush(startingColor, endingColor, 90));
48                     }
49                     else if (keyValuePair.Value is System.Drawing.FontFamily)
50                     {
51                         System.Drawing.FontFamily drawingFontFamily = (System.Drawing.FontFamily)keyValuePair.Value;
52                         Add(keyValuePair.Key, new FontFamily(drawingFontFamily.Name));
53                     }
54                     else if (keyValuePair.Key == "FontWeightKey")
55                     {
56                         Add(keyValuePair.Key, System.Windows.FontWeights.Normal);
57                     }
58                     else
59                     {
60                         Add(keyValuePair.Key, keyValuePair.Value);
61                     }
62                 }
63             }
64             finally 
65             {
66                 EndInit();
67             }
68         }
69     }
70 }