in Documents/Fixed Documents/DocumentSerialization/HtmlXmlConverter/htmltoxamlconverter.cs [1973:2215]
private static void ApplyLocalProperties(XmlElement xamlElement, Hashtable localProperties, bool isBlock)
{
bool marginSet = false;
string marginTop = "0";
string marginBottom = "0";
string marginLeft = "0";
string marginRight = "0";
bool paddingSet = false;
string paddingTop = "0";
string paddingBottom = "0";
string paddingLeft = "0";
string paddingRight = "0";
string borderColor = null;
bool borderThicknessSet = false;
string borderThicknessTop = "0";
string borderThicknessBottom = "0";
string borderThicknessLeft = "0";
string borderThicknessRight = "0";
IDictionaryEnumerator propertyEnumerator = localProperties.GetEnumerator();
while (propertyEnumerator.MoveNext())
{
switch ((string)propertyEnumerator.Key)
{
case "font-family":
// TODO: Convert from font-family value list into xaml FontFamily value
xamlElement.SetAttribute(Xaml_FontFamily, (string)propertyEnumerator.Value);
break;
case "font-style":
xamlElement.SetAttribute(Xaml_FontStyle, (string)propertyEnumerator.Value);
break;
case "font-variant":
// TODO: Convert from font-variant into xaml property
break;
case "font-weight":
xamlElement.SetAttribute(Xaml_FontWeight, (string)propertyEnumerator.Value);
break;
case "font-size":
// TODO: Convert from css size into FontSize
xamlElement.SetAttribute(Xaml_FontSize, (string)propertyEnumerator.Value);
break;
case "color":
SetPropertyValue(xamlElement, TextElement.ForegroundProperty, (string)propertyEnumerator.Value);
break;
case "background-color":
SetPropertyValue(xamlElement, TextElement.BackgroundProperty, (string)propertyEnumerator.Value);
break;
case "text-decoration-underline":
if (!isBlock)
{
if ((string)propertyEnumerator.Value == "true")
{
xamlElement.SetAttribute(Xaml_TextDecorations, Xaml_TextDecorations_Underline);
}
}
break;
case "text-decoration-none":
case "text-decoration-overline":
case "text-decoration-line-through":
case "text-decoration-blink":
// TODO: Convert from all other text-decorations values
if (!isBlock)
{
}
break;
case "text-transform":
// TODO: Convert from text-transform into xaml property
break;
case "text-indent":
if (isBlock)
{
xamlElement.SetAttribute(Xaml_TextIndent, (string)propertyEnumerator.Value);
}
break;
case "text-align":
if (isBlock)
{
xamlElement.SetAttribute(Xaml_TextAlignment, (string)propertyEnumerator.Value);
}
break;
case "width":
case "height":
// TODO: Decide what to do with width and height propeties
break;
case "margin-top":
marginSet = true;
marginTop = (string)propertyEnumerator.Value;
break;
case "margin-right":
marginSet = true;
marginRight = (string)propertyEnumerator.Value;
break;
case "margin-bottom":
marginSet = true;
marginBottom = (string)propertyEnumerator.Value;
break;
case "margin-left":
marginSet = true;
marginLeft = (string)propertyEnumerator.Value;
break;
case "padding-top":
paddingSet = true;
paddingTop = (string)propertyEnumerator.Value;
break;
case "padding-right":
paddingSet = true;
paddingRight = (string)propertyEnumerator.Value;
break;
case "padding-bottom":
paddingSet = true;
paddingBottom = (string)propertyEnumerator.Value;
break;
case "padding-left":
paddingSet = true;
paddingLeft = (string)propertyEnumerator.Value;
break;
// NOTE: css names for elementary border styles have side indications in the middle (top/bottom/left/right)
// In our internal notation we intentionally put them at the end - to unify processing in ParseCssRectangleProperty method
case "border-color-top":
borderColor = (string)propertyEnumerator.Value;
break;
case "border-color-right":
borderColor = (string)propertyEnumerator.Value;
break;
case "border-color-bottom":
borderColor = (string)propertyEnumerator.Value;
break;
case "border-color-left":
borderColor = (string)propertyEnumerator.Value;
break;
case "border-style-top":
case "border-style-right":
case "border-style-bottom":
case "border-style-left":
// TODO: Implement conversion from border style
break;
case "border-width-top":
borderThicknessSet = true;
borderThicknessTop = (string)propertyEnumerator.Value;
break;
case "border-width-right":
borderThicknessSet = true;
borderThicknessRight = (string)propertyEnumerator.Value;
break;
case "border-width-bottom":
borderThicknessSet = true;
borderThicknessBottom = (string)propertyEnumerator.Value;
break;
case "border-width-left":
borderThicknessSet = true;
borderThicknessLeft = (string)propertyEnumerator.Value;
break;
case "list-style-type":
if (xamlElement.LocalName == Xaml_List)
{
string markerStyle;
switch (((string)propertyEnumerator.Value).ToLower())
{
case "disc":
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_Disc;
break;
case "circle":
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_Circle;
break;
case "none":
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_None;
break;
case "square":
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_Square;
break;
case "box":
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_Box;
break;
case "lower-latin":
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_LowerLatin;
break;
case "upper-latin":
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_UpperLatin;
break;
case "lower-roman":
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_LowerRoman;
break;
case "upper-roman":
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_UpperRoman;
break;
case "decimal":
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_Decimal;
break;
default:
markerStyle = HtmlToXamlConverter.Xaml_List_MarkerStyle_Disc;
break;
}
xamlElement.SetAttribute(HtmlToXamlConverter.Xaml_List_MarkerStyle, markerStyle);
}
break;
case "float":
case "clear":
if (isBlock)
{
// TODO: Convert float and clear properties
}
break;
case "display":
break;
}
}
if (isBlock)
{
if (marginSet)
{
ComposeThicknessProperty(xamlElement, Xaml_Margin, marginLeft, marginRight, marginTop, marginBottom);
}
if (paddingSet)
{
ComposeThicknessProperty(xamlElement, Xaml_Padding, paddingLeft, paddingRight, paddingTop, paddingBottom);
}
if (borderColor != null)
{
// TODO: We currently ignore possible difference in brush colors on different border sides. Use the last colored side mentioned
xamlElement.SetAttribute(Xaml_BorderBrush, borderColor);
}
if (borderThicknessSet)
{
ComposeThicknessProperty(xamlElement, Xaml_BorderThickness, borderThicknessLeft, borderThicknessRight, borderThicknessTop, borderThicknessBottom);
}
}
}