CalDavSynchronizer.Conversions.Msft.HtmlFromXamlConverter.WriteFormattingProperties C# (CSharp) Метод

WriteFormattingProperties() приватный статический Метод

Reads attributes of the current xaml element and converts them into appropriate html attributes or css styles.
private static WriteFormattingProperties ( XmlTextReader xamlReader, XmlTextWriter htmlWriter, StringBuilder inlineStyle ) : void
xamlReader System.Xml.XmlTextReader /// XmlTextReader which is expected to be at XmlNodeType.Element /// (opening element tag) position. /// The reader will remain at the same level after function complete. ///
htmlWriter System.Xml.XmlTextWriter /// XmlTextWriter for output html, which is expected to be in /// after WriteStartElement state. ///
inlineStyle StringBuilder /// String builder for collecting css properties for inline STYLE attribute. ///
Результат void
    private static void WriteFormattingProperties(XmlTextReader xamlReader, XmlTextWriter htmlWriter, StringBuilder inlineStyle)
    {
      Debug.Assert(xamlReader.NodeType == XmlNodeType.Element);

      // Clear string builder for the inline style
      inlineStyle.Remove(0, inlineStyle.Length);

      if (!xamlReader.HasAttributes)
      {
        return;
      }

      bool borderSet = false;

      while (xamlReader.MoveToNextAttribute())
      {
        string css = null;

        switch (xamlReader.Name)
        {
          // Character fomatting properties
          // ------------------------------
          case "Background":
            css = "background-color:" + ParseXamlColor(xamlReader.Value) + ";";
            break;
          case "FontFamily":
            css = "font-family:" + xamlReader.Value + ";";
            break;
          case "FontStyle":
            css = "font-style:" + xamlReader.Value.ToLower() + ";";
            break;
          case "FontWeight":
            css = "font-weight:" + xamlReader.Value.ToLower() + ";";
            break;
          case "FontStretch":
            break;
          case "FontSize":
            css = "font-size:" + xamlReader.Value + ";";
            break;
          case "Foreground":
            css = "color:" + ParseXamlColor(xamlReader.Value) + ";";
            break;
          case "TextDecorations":
            if (xamlReader.Value.ToLower() == "strikethrough")
              css = "text-decoration:line-through;";
            else
              css = "text-decoration:underline;";
            break;
          case "TextEffects":
            break;
          case "Emphasis":
            break;
          case "StandardLigatures":
            break;
          case "Variants":
            break;
          case "Capitals":
            break;
          case "Fraction":
            break;

          // Paragraph formatting properties
          // -------------------------------
          case "Padding":
            css = "padding:" + ParseXamlThickness(xamlReader.Value) + ";";
            break;
          case "Margin":
            css = "margin:" + ParseXamlThickness(xamlReader.Value) + ";";
            break;
          case "BorderThickness":
            css = "border-width:" + ParseXamlThickness(xamlReader.Value) + ";";
            borderSet = true;
            break;
          case "BorderBrush":
            css = "border-color:" + ParseXamlColor(xamlReader.Value) + ";";
            borderSet = true;
            break;
          case "LineHeight":
            break;
          case "TextIndent":
            css = "text-indent:" + xamlReader.Value + ";";
            break;
          case "TextAlignment":
            css = "text-align:" + xamlReader.Value + ";";
            break;
          case "IsKeptTogether":
            break;
          case "IsKeptWithNext":
            break;
          case "ColumnBreakBefore":
            break;
          case "PageBreakBefore":
            break;
          case "FlowDirection":
            break;

          // Table attributes
          // ----------------
          case "Width":
            css = "width:" + xamlReader.Value + ";";
            break;
          case "ColumnSpan":
            htmlWriter.WriteAttributeString("COLSPAN", xamlReader.Value);
            break;
          case "RowSpan":
            htmlWriter.WriteAttributeString("ROWSPAN", xamlReader.Value);
            break;

          // Hyperlink Attributes
          case "NavigateUri":
            htmlWriter.WriteAttributeString("HREF", xamlReader.Value);
            break;

          case "TargetName":
            htmlWriter.WriteAttributeString("TARGET", xamlReader.Value);
            break;
        }

        if (css != null)
        {
          inlineStyle.Append(css);
        }
      }

      if (borderSet)
      {
        inlineStyle.Append("border-style:solid;mso-element:para-border-div;");
      }

      // Return the xamlReader back to element level
      xamlReader.MoveToElement();
      Debug.Assert(xamlReader.NodeType == XmlNodeType.Element);
    }