3using System.Collections.Generic;
5using System.Threading.Tasks;
76 this.XmlOutput = XmlWriter.Create(this.
Output, XmlSettings);
89 this.XmlOutput = XmlWriter.Create(this.Output, XmlSettings);
97 this.XmlOutput.Dispose();
109 return base.RenderDocument(
Document, Inclusion);
117 this.XmlOutput.WriteStartElement(
"StackPanel",
"http://schemas.microsoft.com/winfx/2006/xaml/presentation");
118 this.XmlOutput.WriteAttributeString(
"xmlns",
"x",
null,
"http://schemas.microsoft.com/winfx/2006/xaml");
120 return Task.CompletedTask;
129 string FootnoteMargin =
"0," + this.XamlSettings.ParagraphMarginTop.
ToString() +
"," +
130 this.XamlSettings.FootnoteSeparator.ToString() +
"," +
131 this.XamlSettings.ParagraphMarginBottom.ToString();
133 string Offset = this.XamlSettings.SuperscriptOffset.ToString();
137 this.XmlOutput.WriteElementString(
"Separator",
string.Empty);
139 this.XmlOutput.WriteStartElement(
"Grid");
140 this.XmlOutput.WriteStartElement(
"Grid.ColumnDefinitions");
142 this.XmlOutput.WriteStartElement(
"ColumnDefinition");
143 this.XmlOutput.WriteAttributeString(
"Width",
"Auto");
144 this.XmlOutput.WriteEndElement();
146 this.XmlOutput.WriteStartElement(
"ColumnDefinition");
147 this.XmlOutput.WriteAttributeString(
"Width",
"*");
148 this.XmlOutput.WriteEndElement();
150 this.XmlOutput.WriteEndElement();
151 this.XmlOutput.WriteStartElement(
"Grid.RowDefinitions");
155 if ((this.
Document?.TryGetFootnoteNumber(Key, out Nr) ??
false) &&
159 this.XmlOutput.WriteStartElement(
"RowDefinition");
160 this.XmlOutput.WriteAttributeString(
"Height",
"Auto");
161 this.XmlOutput.WriteEndElement();
165 this.XmlOutput.WriteEndElement();
169 if ((this.
Document?.TryGetFootnoteNumber(Key, out Nr) ??
false) &&
173 this.XmlOutput.WriteStartElement(
"TextBlock");
174 this.XmlOutput.WriteAttributeString(
"Text", Nr.ToString());
175 this.XmlOutput.WriteAttributeString(
"Margin", FootnoteMargin);
176 this.XmlOutput.WriteAttributeString(
"Grid.Column",
"0");
177 this.XmlOutput.WriteAttributeString(
"Grid.Row", Row.ToString());
179 this.XmlOutput.WriteStartElement(
"TextBlock.LayoutTransform");
180 this.XmlOutput.WriteStartElement(
"TransformGroup");
182 this.XmlOutput.WriteStartElement(
"ScaleTransform");
183 this.XmlOutput.WriteAttributeString(
"ScaleX", Scale);
184 this.XmlOutput.WriteAttributeString(
"ScaleY", Scale);
185 this.XmlOutput.WriteEndElement();
187 this.XmlOutput.WriteStartElement(
"TranslateTransform");
188 this.XmlOutput.WriteAttributeString(
"Y", Offset);
189 this.XmlOutput.WriteEndElement();
191 this.XmlOutput.WriteEndElement();
192 this.XmlOutput.WriteEndElement();
193 this.XmlOutput.WriteEndElement();
197 this.XmlOutput.WriteStartElement(
"TextBlock");
198 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
201 this.XmlOutput.WriteStartElement(
"StackPanel");
203 this.XmlOutput.WriteAttributeString(
"Grid.Column",
"1");
204 this.XmlOutput.WriteAttributeString(
"Grid.Row", Row.ToString());
210 this.Alignment = Bak;
212 this.XmlOutput.WriteEndElement();
218 this.XmlOutput.WriteEndElement();
226 this.XmlOutput.WriteEndElement();
227 this.XmlOutput.Flush();
229 return Task.CompletedTask;
232 #region Span Elements
249 this.XmlOutput.WriteStartElement(
"Hyperlink");
250 this.XmlOutput.WriteAttributeString(
"NavigateUri",
"mailto:" + Element.
EMail);
251 this.XmlOutput.WriteValue(Element.
EMail);
252 this.XmlOutput.WriteEndElement();
254 return Task.CompletedTask;
263 this.XmlOutput.WriteStartElement(
"Hyperlink");
264 this.XmlOutput.WriteAttributeString(
"NavigateUri", this.
Document.
CheckURL(Element.
URL,
null));
265 this.XmlOutput.WriteValue(Element.
URL);
266 this.XmlOutput.WriteEndElement();
268 return Task.CompletedTask;
277 this.XmlOutput.WriteStartElement(
"TextBlock");
278 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
281 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
283 this.XmlOutput.WriteStartElement(
"TextBlock.TextDecorations");
284 this.XmlOutput.WriteStartElement(
"TextDecoration");
285 this.XmlOutput.WriteAttributeString(
"Location",
"Strikethrough");
286 this.XmlOutput.WriteEndElement();
287 this.XmlOutput.WriteEndElement();
291 this.XmlOutput.WriteEndElement();
314 if (EmojiSource is
null)
316 this.XmlOutput.WriteValue(Element.
Delimiter);
318 this.XmlOutput.WriteValue(Element.
Delimiter);
335 this.XmlOutput.WriteStartElement(
"Italic");
337 this.XmlOutput.WriteEndElement();
350 await this.
Render(Footnote);
351 else if (this.
Document?.TryGetFootnoteNumber(Element.
Key, out
int Nr) ??
false)
355 this.XmlOutput.WriteStartElement(
"TextBlock");
356 this.XmlOutput.WriteAttributeString(
"Text", Nr.ToString());
358 this.XmlOutput.WriteStartElement(
"TextBlock.LayoutTransform");
359 this.XmlOutput.WriteStartElement(
"TransformGroup");
361 this.XmlOutput.WriteStartElement(
"ScaleTransform");
362 this.XmlOutput.WriteAttributeString(
"ScaleX", s =
CommonTypes.
Encode(
this.XamlSettings.SuperscriptScale));
363 this.XmlOutput.WriteAttributeString(
"ScaleY", s);
364 this.XmlOutput.WriteEndElement();
366 this.XmlOutput.WriteStartElement(
"TranslateTransform");
367 this.XmlOutput.WriteAttributeString(
"Y", this.XamlSettings.SuperscriptOffset.ToString());
368 this.XmlOutput.WriteEndElement();
370 this.XmlOutput.WriteEndElement();
371 this.XmlOutput.WriteEndElement();
372 this.XmlOutput.WriteEndElement();
375 Footnote.Referenced =
true;
385 this.XmlOutput.WriteValue(Element.
Tag);
387 return Task.CompletedTask;
396 string s = Html.HtmlEntity.EntityToCharacter(Element.
Entity);
398 this.XmlOutput.WriteRaw(
"&" + Element.
Entity +
";");
400 this.XmlOutput.WriteValue(s);
402 return Task.CompletedTask;
411 this.XmlOutput.WriteValue(
new string((
char)Element.
Code, 1));
413 return Task.CompletedTask;
422 this.XmlOutput.WriteStartElement(
"TextBlock");
423 this.XmlOutput.WriteAttributeString(
"xml",
"space",
null,
"preserve");
424 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
425 this.XmlOutput.WriteAttributeString(
"FontFamily",
"Courier New");
427 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
429 this.XmlOutput.WriteValue(Element.
Code);
431 this.XmlOutput.WriteEndElement();
433 return Task.CompletedTask;
442 this.XmlOutput.WriteComment(Element.
HTML);
444 return Task.CompletedTask;
470 if (Result is XmlDocument Xml)
475 if (Result is
Graph G)
480 s =
"data:image/png;base64," + Convert.ToBase64String(Bin, 0, Bin.Length);
485 Width = Pixels.
Width,
486 Height = Pixels.Height
489 else if (Result is SKImage Img)
491 using (SKData Data = Img.Encode(SKEncodedImageFormat.Png, 100))
493 byte[] Bin = Data.ToArray();
495 s =
"data:image/png;base64," + Convert.ToBase64String(Bin, 0, Bin.Length);
508 Doc.ProcessAsyncTasks();
514 Doc.ProcessAsyncTasks();
516 else if (Result is Exception ex)
520 if (ex is AggregateException ex2)
522 foreach (Exception ex3
in ex2.InnerExceptions)
524 this.XmlOutput.WriteStartElement(
"TextBlock");
525 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
526 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
529 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
531 this.XmlOutput.WriteAttributeString(
"Foreground",
"Red");
532 this.XmlOutput.WriteValue(ex3.Message);
533 this.XmlOutput.WriteEndElement();
538 if (AloneInParagraph)
540 this.XmlOutput.WriteStartElement(
"TextBlock");
541 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
542 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
544 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
547 this.XmlOutput.WriteStartElement(
"Run");
549 this.XmlOutput.WriteAttributeString(
"Foreground",
"Red");
550 this.XmlOutput.WriteValue(ex.Message);
551 this.XmlOutput.WriteEndElement();
556 if (AloneInParagraph)
558 this.XmlOutput.WriteStartElement(
"TextBlock");
559 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
560 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
562 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
565 this.XmlOutput.WriteValue(Result.ToString());
567 if (AloneInParagraph)
568 this.XmlOutput.WriteEndElement();
578 this.XmlOutput.WriteValue(Element.
Value);
580 return Task.CompletedTask;
589 this.XmlOutput.WriteStartElement(
"Underline");
591 this.XmlOutput.WriteEndElement();
600 this.XmlOutput.WriteElementString(
"LineBreak",
string.Empty);
602 return Task.CompletedTask;
623 this.XmlOutput.WriteStartElement(
"Hyperlink");
624 this.XmlOutput.WriteAttributeString(
"NavigateUri",
Document.
CheckURL(Url,
null));
626 if (!
string.IsNullOrEmpty(Title))
627 this.XmlOutput.WriteAttributeString(
"ToolTip", Title);
632 this.XmlOutput.WriteEndElement();
655 bool FirstOnRow =
true;
657 if (Element.
TryGetMetaData(out KeyValuePair<string, bool>[] Values))
659 foreach (KeyValuePair<string, bool> P
in Values)
664 this.XmlOutput.WriteValue(
' ');
666 this.XmlOutput.WriteValue(P.Key);
669 this.XmlOutput.WriteElementString(
"LineBreak",
string.Empty);
675 return Task.CompletedTask;
682 public override Task
Render(Model.SpanElements.Multimedia Element)
688 return Renderer.RenderWpfXaml(
this, Element.Items, Element.Children, Element.AloneInParagraph, Element.Document);
715 this.XmlOutput.WriteStartElement(
"TextBlock");
716 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
718 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
720 this.XmlOutput.WriteStartElement(
"TextBlock.TextDecorations");
721 this.XmlOutput.WriteStartElement(
"TextDecoration");
722 this.XmlOutput.WriteAttributeString(
"Location",
"Strikethrough");
723 this.XmlOutput.WriteEndElement();
724 this.XmlOutput.WriteEndElement();
728 this.XmlOutput.WriteEndElement();
737 this.XmlOutput.WriteStartElement(
"Bold");
739 this.XmlOutput.WriteEndElement();
748 this.XmlOutput.WriteStartElement(
"Run");
749 this.XmlOutput.WriteAttributeString(
"Typography.Variants",
"Subscript");
753 this.XmlOutput.WriteEndElement();
762 this.XmlOutput.WriteStartElement(
"Run");
763 this.XmlOutput.WriteAttributeString(
"Typography.Variants",
"Superscript");
767 this.XmlOutput.WriteEndElement();
776 this.XmlOutput.WriteStartElement(
"Underline");
778 this.XmlOutput.WriteEndElement();
783 #region Block elements
791 this.XmlOutput.WriteStartElement(
"Border");
792 this.XmlOutput.WriteAttributeString(
"BorderThickness", this.XamlSettings.BlockQuoteBorderThickness.ToString() +
",0,0,0");
793 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.BlockQuoteMargin.ToString() +
"," +
794 this.XamlSettings.ParagraphMarginTop.ToString() +
",0," +
this.XamlSettings.ParagraphMarginBottom.ToString());
795 this.XmlOutput.WriteAttributeString(
"Padding", this.XamlSettings.BlockQuotePadding.ToString() +
",0,0,0");
796 this.XmlOutput.WriteAttributeString(
"BorderBrush", this.XamlSettings.BlockQuoteBorderColor);
797 this.XmlOutput.WriteStartElement(
"StackPanel");
801 this.XmlOutput.WriteEndElement();
802 this.XmlOutput.WriteEndElement();
812 bool ParagraphBullet;
814 this.XmlOutput.WriteStartElement(
"Grid");
815 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
816 this.XmlOutput.WriteStartElement(
"Grid.ColumnDefinitions");
818 this.XmlOutput.WriteStartElement(
"ColumnDefinition");
819 this.XmlOutput.WriteAttributeString(
"Width",
"Auto");
820 this.XmlOutput.WriteEndElement();
822 this.XmlOutput.WriteStartElement(
"ColumnDefinition");
823 this.XmlOutput.WriteAttributeString(
"Width",
"*");
824 this.XmlOutput.WriteEndElement();
826 this.XmlOutput.WriteEndElement();
827 this.XmlOutput.WriteStartElement(
"Grid.RowDefinitions");
831 this.XmlOutput.WriteStartElement(
"RowDefinition");
832 this.XmlOutput.WriteAttributeString(
"Height",
"Auto");
833 this.XmlOutput.WriteEndElement();
836 this.XmlOutput.WriteEndElement();
841 this.GetMargins(E, out
int TopMargin, out
int BottomMargin);
843 this.XmlOutput.WriteStartElement(
"TextBlock");
844 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
845 this.XmlOutput.WriteAttributeString(
"Grid.Column",
"0");
846 this.XmlOutput.WriteAttributeString(
"Grid.Row", Row.ToString());
848 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
850 this.XmlOutput.WriteAttributeString(
"Margin",
"0," + TopMargin.ToString() +
"," +
851 this.XamlSettings.ListContentMargin.ToString() +
"," + BottomMargin.ToString());
853 this.XmlOutput.WriteValue(
"•");
854 this.XmlOutput.WriteEndElement();
856 this.XmlOutput.WriteStartElement(
"StackPanel");
857 this.XmlOutput.WriteAttributeString(
"Grid.Column",
"1");
858 this.XmlOutput.WriteAttributeString(
"Grid.Row", Row.ToString());
864 this.XmlOutput.WriteStartElement(
"TextBlock");
865 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
867 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
871 this.XmlOutput.WriteEndElement();
874 this.XmlOutput.WriteEndElement();
879 this.XmlOutput.WriteEndElement();
888 private void GetMargins(
MarkdownElement Element, out
int TopMargin, out
int BottomMargin)
899 TopMargin = BottomMargin = 0;
906 this.GetMargins(E, out TopMargin, out BottomMargin);
909 this.GetMargins(E, out
int _, out BottomMargin);
913 this.GetMargins(SingleChild.Child, out TopMargin, out BottomMargin);
916 TopMargin = this.XamlSettings.ParagraphMarginTop;
917 BottomMargin = this.XamlSettings.ParagraphMarginBottom;
927 this.XmlOutput.WriteStartElement(
"StackPanel");
934 this.Alignment = Bak;
935 this.XmlOutput.WriteEndElement();
957 if (ex is AggregateException ex2)
959 foreach (Exception ex3
in ex2.InnerExceptions)
961 this.XmlOutput.WriteStartElement(
"TextBlock");
962 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
963 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
966 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
968 this.XmlOutput.WriteAttributeString(
"Foreground",
"Red");
969 this.XmlOutput.WriteValue(ex3.Message);
970 this.XmlOutput.WriteEndElement();
975 this.XmlOutput.WriteStartElement(
"TextBlock");
976 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
977 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
979 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
981 this.XmlOutput.WriteAttributeString(
"Foreground",
"Red");
982 this.XmlOutput.WriteValue(ex.Message);
983 this.XmlOutput.WriteEndElement();
991 this.XmlOutput.WriteStartElement(
"TextBlock");
992 this.XmlOutput.WriteAttributeString(
"xml",
"space",
null,
"preserve");
993 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"NoWrap");
994 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
995 this.XmlOutput.WriteAttributeString(
"FontFamily",
"Courier New");
997 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
999 for (i = Element.
Start; i <= Element.
End; i++)
1004 this.XmlOutput.WriteElementString(
"LineBreak",
string.Empty);
1006 this.XmlOutput.WriteValue(Element.
Rows[i]);
1009 this.XmlOutput.WriteEndElement();
1018 return Task.CompletedTask;
1036 this.XmlOutput.WriteStartElement(
"TextBlock");
1037 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1040 this.XmlOutput.WriteStartElement(
"StackPanel");
1042 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.DefinitionMargin.ToString() +
",0,0," +
1043 (Description == Last ?
this.XamlSettings.DefinitionSeparator : 0).ToString());
1045 await Description.
Render(
this);
1046 this.XmlOutput.WriteEndElement();
1065 int TopMargin = this.XamlSettings.ParagraphMarginTop;
1069 this.XmlOutput.WriteStartElement(
"TextBlock");
1070 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1071 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMarginLeft.ToString() +
"," +
1072 TopMargin.ToString() +
"," +
this.XamlSettings.ParagraphMarginRight.ToString() +
",0");
1073 this.XmlOutput.WriteAttributeString(
"FontWeight",
"Bold");
1077 this.XmlOutput.WriteEndElement();
1088 this.XmlOutput.WriteStartElement(
"Border");
1089 this.XmlOutput.WriteAttributeString(
"BorderThickness", this.XamlSettings.BlockQuoteBorderThickness.ToString() +
",0,0,0");
1090 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.BlockQuoteMargin.ToString() +
"," +
1091 this.XamlSettings.ParagraphMarginTop.ToString() +
",0," +
this.XamlSettings.ParagraphMarginBottom.ToString());
1092 this.XmlOutput.WriteAttributeString(
"Padding", this.XamlSettings.BlockQuotePadding.ToString() +
",0,0,0");
1093 this.XmlOutput.WriteAttributeString(
"BorderBrush", this.XamlSettings.DeletedBlockQuoteBorderColor);
1094 this.XmlOutput.WriteStartElement(
"StackPanel");
1099 this.XmlOutput.WriteEndElement();
1100 this.XmlOutput.WriteEndElement();
1118 this.XmlOutput.WriteStartElement(
"TextBlock");
1119 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1120 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
1122 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
1124 if (Element.
Level > 0 && Element.
Level <=
this.XamlSettings.HeaderFontSize.Length)
1126 this.XmlOutput.WriteAttributeString(
"FontSize", this.XamlSettings.HeaderFontSize[Element.
Level - 1].ToString());
1127 this.XmlOutput.WriteAttributeString(
"Foreground", this.XamlSettings.HeaderForegroundColor[Element.
Level - 1].ToString());
1132 this.XmlOutput.WriteEndElement();
1141 this.XmlOutput.WriteElementString(
"Separator",
string.Empty);
1143 return Task.CompletedTask;
1152 this.XmlOutput.WriteStartElement(
"TextBlock");
1153 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1154 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
1156 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
1160 this.XmlOutput.WriteEndElement();
1169 this.XmlOutput.WriteStartElement(
"Border");
1170 this.XmlOutput.WriteAttributeString(
"BorderThickness", this.XamlSettings.BlockQuoteBorderThickness.ToString() +
",0,0,0");
1171 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.BlockQuoteMargin.ToString() +
"," +
1172 this.XamlSettings.ParagraphMarginTop.ToString() +
",0," +
this.XamlSettings.ParagraphMarginBottom.ToString());
1173 this.XmlOutput.WriteAttributeString(
"Padding", this.XamlSettings.BlockQuotePadding.ToString() +
",0,0,0");
1174 this.XmlOutput.WriteAttributeString(
"BorderBrush", this.XamlSettings.InsertedBlockQuoteBorderColor);
1175 this.XmlOutput.WriteStartElement(
"StackPanel");
1179 this.XmlOutput.WriteEndElement();
1180 this.XmlOutput.WriteEndElement();
1189 return Task.CompletedTask;
1198 this.XmlOutput.WriteStartElement(
"StackPanel");
1205 this.Alignment = Bak;
1206 this.XmlOutput.WriteEndElement();
1215 this.XmlOutput.WriteStartElement(
"StackPanel");
1222 this.Alignment = Bak;
1223 this.XmlOutput.WriteEndElement();
1236 bool SpanOpen =
false;
1244 this.XmlOutput.WriteStartElement(
"TextBlock");
1245 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1247 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
1255 this.XmlOutput.WriteEndElement();
1264 this.XmlOutput.WriteEndElement();
1286 bool ParagraphBullet;
1288 this.XmlOutput.WriteStartElement(
"Grid");
1289 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
1290 this.XmlOutput.WriteStartElement(
"Grid.ColumnDefinitions");
1292 this.XmlOutput.WriteStartElement(
"ColumnDefinition");
1293 this.XmlOutput.WriteAttributeString(
"Width",
"Auto");
1294 this.XmlOutput.WriteEndElement();
1296 this.XmlOutput.WriteStartElement(
"ColumnDefinition");
1297 this.XmlOutput.WriteAttributeString(
"Width",
"*");
1298 this.XmlOutput.WriteEndElement();
1300 this.XmlOutput.WriteEndElement();
1301 this.XmlOutput.WriteStartElement(
"Grid.RowDefinitions");
1305 this.XmlOutput.WriteStartElement(
"RowDefinition");
1306 this.XmlOutput.WriteAttributeString(
"Height",
"Auto");
1307 this.XmlOutput.WriteEndElement();
1310 this.XmlOutput.WriteEndElement();
1318 this.GetMargins(E, out
int TopMargin, out
int BottomMargin);
1320 this.XmlOutput.WriteStartElement(
"TextBlock");
1321 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1322 this.XmlOutput.WriteAttributeString(
"Grid.Column",
"0");
1323 this.XmlOutput.WriteAttributeString(
"Grid.Row", Row.ToString());
1325 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
1327 this.XmlOutput.WriteAttributeString(
"Margin",
"0," + TopMargin.ToString() +
"," +
1328 this.XamlSettings.ListContentMargin.ToString() +
"," + BottomMargin.ToString());
1330 if (!(Item is
null))
1331 this.XmlOutput.WriteValue((Expected = Item.Number).ToString());
1333 this.XmlOutput.WriteValue(Expected.ToString());
1335 this.XmlOutput.WriteValue(
".");
1336 this.XmlOutput.WriteEndElement();
1338 this.XmlOutput.WriteStartElement(
"StackPanel");
1339 this.XmlOutput.WriteAttributeString(
"Grid.Column",
"1");
1340 this.XmlOutput.WriteAttributeString(
"Grid.Row", Row.ToString());
1342 if (ParagraphBullet)
1346 this.XmlOutput.WriteStartElement(
"TextBlock");
1347 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1349 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
1353 this.XmlOutput.WriteEndElement();
1356 this.XmlOutput.WriteEndElement();
1361 this.XmlOutput.WriteEndElement();
1372 this.XmlOutput.WriteStartElement(
"TextBlock");
1373 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1374 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
1376 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
1382 this.XmlOutput.WriteStartElement(
"InlineUIContainer");
1383 this.XmlOutput.WriteAttributeString(
"BaselineAlignment", s.ToString());
1387 this.XmlOutput.WriteEndElement();
1393 this.XmlOutput.WriteEndElement();
1402 this.XmlOutput.WriteStartElement(
"StackPanel");
1409 this.Alignment = Bak;
1410 this.XmlOutput.WriteEndElement();
1428 this.XmlOutput.WriteElementString(
"Separator",
string.Empty);
1430 return Task.CompletedTask;
1442 int NrColumns = Element.
Columns;
1444 this.XmlOutput.WriteStartElement(
"Grid");
1445 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
1446 if (!
string.IsNullOrEmpty(Element.
Caption))
1447 this.XmlOutput.WriteAttributeString(
"ToolTip", Element.
Caption);
1449 this.XmlOutput.WriteStartElement(
"Grid.ColumnDefinitions");
1451 for (Column = 0; Column < NrColumns; Column++)
1453 this.XmlOutput.WriteStartElement(
"ColumnDefinition");
1454 this.XmlOutput.WriteAttributeString(
"Width",
"Auto");
1455 this.XmlOutput.WriteEndElement();
1458 this.XmlOutput.WriteEndElement();
1459 this.XmlOutput.WriteStartElement(
"Grid.RowDefinitions");
1461 for (Row = 0, NrRows = Element.
Rows.Length + Element.
Headers.Length; Row < NrRows; Row++)
1463 this.XmlOutput.WriteStartElement(
"RowDefinition");
1464 this.XmlOutput.WriteAttributeString(
"Height",
"Auto");
1465 this.XmlOutput.WriteEndElement();
1468 this.XmlOutput.WriteEndElement();
1470 for (Row = 0, NrRows = Element.
Headers.Length; Row < NrRows; Row++, RowNr++)
1473 for (Row = 0, NrRows = Element.
Rows.Length; Row < NrRows; Row++, RowNr++)
1476 this.XmlOutput.WriteEndElement();
1483 int NrColumns = Element.
Columns;
1487 for (Column = 0; Column < NrColumns; Column++)
1489 E = CurrentRow[Column];
1493 this.Alignment = CellAlignments[Column] ?? Element.
ColumnAlignments[Column];
1494 ColSpan = Column + 1;
1495 while (ColSpan < NrColumns && CurrentRow[ColSpan] is
null)
1500 this.XmlOutput.WriteStartElement(
"Border");
1501 this.XmlOutput.WriteAttributeString(
"BorderBrush", this.XamlSettings.TableCellBorderColor);
1502 this.XmlOutput.WriteAttributeString(
"BorderThickness",
CommonTypes.
Encode(
this.XamlSettings.TableCellBorderThickness));
1504 if ((RowNr & 1) == 0)
1506 if (!
string.IsNullOrEmpty(this.XamlSettings.TableCellRowBackgroundColor1))
1507 this.XmlOutput.WriteAttributeString(
"Background", this.XamlSettings.TableCellRowBackgroundColor1);
1511 if (!
string.IsNullOrEmpty(this.XamlSettings.TableCellRowBackgroundColor2))
1512 this.XmlOutput.WriteAttributeString(
"Background", this.XamlSettings.TableCellRowBackgroundColor2);
1515 this.XmlOutput.WriteAttributeString(
"Grid.Column", Column.ToString());
1516 this.XmlOutput.WriteAttributeString(
"Grid.Row", RowNr.ToString());
1519 this.XmlOutput.WriteAttributeString(
"Grid.ColumnSpan", ColSpan.ToString());
1523 this.XmlOutput.WriteStartElement(
"TextBlock");
1524 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1525 this.XmlOutput.WriteAttributeString(
"Padding", this.XamlSettings.TableCellPadding);
1528 this.XmlOutput.WriteAttributeString(
"FontWeight",
"Bold");
1531 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
1535 this.XmlOutput.WriteStartElement(
"StackPanel");
1536 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.TableCellPadding);
1540 this.XmlOutput.WriteEndElement();
1541 this.XmlOutput.WriteEndElement();
1544 this.Alignment = Bak;
1563 bool ParagraphBullet;
1565 this.XmlOutput.WriteStartElement(
"Grid");
1566 this.XmlOutput.WriteAttributeString(
"Margin", this.XamlSettings.ParagraphMargins);
1567 this.XmlOutput.WriteStartElement(
"Grid.ColumnDefinitions");
1569 this.XmlOutput.WriteStartElement(
"ColumnDefinition");
1570 this.XmlOutput.WriteAttributeString(
"Width",
"Auto");
1571 this.XmlOutput.WriteEndElement();
1573 this.XmlOutput.WriteStartElement(
"ColumnDefinition");
1574 this.XmlOutput.WriteAttributeString(
"Width",
"*");
1575 this.XmlOutput.WriteEndElement();
1577 this.XmlOutput.WriteEndElement();
1578 this.XmlOutput.WriteStartElement(
"Grid.RowDefinitions");
1582 this.XmlOutput.WriteStartElement(
"RowDefinition");
1583 this.XmlOutput.WriteAttributeString(
"Height",
"Auto");
1584 this.XmlOutput.WriteEndElement();
1587 this.XmlOutput.WriteEndElement();
1592 this.GetMargins(E, out
int TopMargin, out
int BottomMargin);
1596 this.XmlOutput.WriteStartElement(
"TextBlock");
1597 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1598 this.XmlOutput.WriteAttributeString(
"Grid.Column",
"0");
1599 this.XmlOutput.WriteAttributeString(
"Grid.Row", Row.ToString());
1601 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
1603 this.XmlOutput.WriteAttributeString(
"Margin",
"0," + TopMargin.ToString() +
"," +
1604 this.XamlSettings.ListContentMargin.ToString() +
"," + BottomMargin.ToString());
1606 this.XmlOutput.WriteValue(
"✓");
1607 this.XmlOutput.WriteEndElement();
1610 this.XmlOutput.WriteStartElement(
"StackPanel");
1611 this.XmlOutput.WriteAttributeString(
"Grid.Column",
"1");
1612 this.XmlOutput.WriteAttributeString(
"Grid.Row", Row.ToString());
1614 if (ParagraphBullet)
1618 this.XmlOutput.WriteStartElement(
"TextBlock");
1619 this.XmlOutput.WriteAttributeString(
"TextWrapping",
"Wrap");
1621 this.XmlOutput.WriteAttributeString(
"TextAlignment", this.Alignment.ToString());
1625 this.XmlOutput.WriteEndElement();
1628 this.XmlOutput.WriteEndElement();
1633 this.XmlOutput.WriteEndElement();
Helps with parsing of commong data types.
static string Encode(bool x)
Encodes a Boolean for use in XML and other formats.
string ShortName
Emoji short name.
string Unicode
Unicode representation of emoji.
string Description
Short description of emoji.
Contains information about an emoji image.
int? Width
Width of image, if available.
Class that can be used to encapsulate Markdown to be returned from a Web Service, bypassing any encod...
Contains a markdown document. This markdown document class supports original markdown,...
static async Task< object > TransformXml(XmlDocument Xml, Variables Variables)
Transforms XML to an object that is easier to visualize.
string CheckURL(string Url, string URL)
Checks the URL if it needs redirection to a proxy.
IEnumerable< string > FootnoteOrder
Order of footnotes.
IEmojiSource EmojiSource
Source for emojis in the document.
MarkdownDocument Detail
Detail document of a master document.
Multimedia GetReference(string Label)
Gets the multimedia information referenced by a label.
static Task< MarkdownDocument > CreateAsync(string MarkdownText, params Type[] TransparentExceptionTypes)
Contains a markdown document. This markdown document class supports original markdown,...
Contains settings that the Markdown parser uses to customize its behavior.
Represents a block quote in a markdown document.
Represents a bullet list in a markdown document.
Represents a center-aligned set of blocks in a markdown document.
Represents a code block in a markdown document.
int Indent
Code block indentation.
string[] Rows
Rows in code block
Represents a definition list in a markdown document.
Represents inserted blocks in a markdown document.
Represents a block of HTML in a markdown document.
Represents inserted blocks in a markdown document.
Represents a left-aligned set of blocks in a markdown document.
Represents a margin-aligned set of blocks in a markdown document.
Represents a nested block with no special formatting rules in a markdown document.
Represents a numbered item in an ordered list.
Represents a numbered list in a markdown document.
Represents a paragraph in a markdown document.
Represents a right-aligned set of blocks in a markdown document.
Represents a sequence of sections.
Represents a table in a markdown document.
TextAlignment[] ColumnAlignments
Table column alignments.
string Caption
Table caption.
override IEnumerable< MarkdownElement > Children
Any children of the element.
MarkdownElement[][] Headers
Headers in table.
int Columns
Number of columns.
TextAlignment?[][] RowCellAlignments
Row cell alignments in table.
TextAlignment?[][] HeaderCellAlignments
Header cell alignments in table.
MarkdownElement[][] Rows
Rows in table.
Represents a task item in a task list.
bool IsChecked
If the item is checked or not.
Represents a task list in a markdown document.
Represents an unnumbered item in an ordered list.
override IEnumerable< MarkdownElement > Children
Any children of the element.
bool HasOneChild
If the element has only one child.
MarkdownElement FirstChild
First child, or null if none.
Abstract base class for all markdown elements.
abstract Task Render(IRenderer Output)
Renders the element.
virtual IEnumerable< MarkdownElement > Children
Any children of the element.
abstract bool InlineSpanElement
If the element is an inline span element.
virtual bool OutsideParagraph
If element, parsed as a span element, can stand outside of a paragraph if alone in it.
MarkdownDocument Document
Markdown document.
virtual BaselineAlignment BaselineAlignment
Baseline alignment
Abstract base class for all markdown elements with one child element.
string Title
Optional title.
string Delimiter
Delimiter string used to identify emoji.
int Level
Level (number of colons used to define the emoji)
EmojiInfo Emoji
Emoji information.
Represents an HTML entity.
Represents an HTML entity in Unicode format.
int Code
Unicode character
bool AloneInParagraph
If the element is alone in a paragraph.
Variables Variables
Variables.
async Task< object > EvaluateExpression()
Evaluates the script expression.
string Value
Unformatted text.
string Title
Optional Link title.
bool TryGetMetaData(out KeyValuePair< string, bool >[] Values)
Tries to get meta-data from the document.
MultimediaItem[] Items
Multimedia items.
bool AloneInParagraph
If the element is alone in a paragraph.
Abstract base class for Markdown renderers.
readonly StringBuilder Output
Renderer output.
Task RenderChild(MarkdownElementSingleChild Element)
Renders the child of Element .
async Task RenderChildren(MarkdownElementChildren Element)
Renders the children of Element .
MarkdownDocument Document
Reference to Markdown document being processed.
Renders XAML (WPF flavour) from a Markdown document.
override async Task Render(HtmlBlock Element)
Renders Element .
async Task RenderObject(object Result, bool AloneInParagraph, Variables Variables)
Generates WPF XAML from Script output.
override Task Render(InvisibleBreak Element)
Renders Element .
override async Task Render(Insert Element)
Renders Element .
override Task Render(SectionSeparator Element)
Renders Element .
override async Task RenderFootnotes()
Renders footnotes.
TextAlignment Alignment
Current text-alignment.
override void Dispose()
Disposes of the renderer.
override Task Render(HorizontalRule Element)
Renders Element .
override async Task Render(BulletList Element)
Renders Element .
override async Task Render(DefinitionTerms Element)
Renders Element .
WpfXamlRenderer(XmlWriterSettings XmlSettings)
Renders XAML (WPF flavour) from a Markdown document.
override async Task Render(CodeBlock Element)
Renders Element .
override Task Render(Sections Element)
Renders Element .
override async Task Render(SuperScript Element)
Renders Element .
WpfXamlRenderer(XamlSettings XamlSettings)
Renders XAML (WPF flavour) from a Markdown document.
override async Task Render(Table Element)
Renders Element .
override Task RenderDocumentHeader()
Renders the document header.
override Task Render(Link Element)
Renders Element .
WpfXamlRenderer()
Renders XAML (WPF flavour) from a Markdown document.
override async Task Render(Underline Element)
Renders Element .
override async Task Render(RightAligned Element)
Renders Element .
override async Task Render(BlockQuote Element)
Renders Element .
readonly XmlWriter XmlOutput
XML output
override async Task Render(StrikeThrough Element)
Renders Element .
WpfXamlRenderer(StringBuilder Output, XmlWriterSettings XmlSettings, XamlSettings XamlSettings)
Renders XAML (WPF flavour) from a Markdown document.
override Task Render(Footnote Element)
Renders Element .
override async Task Render(FootnoteReference Element)
Renders Element .
override async Task Render(InlineScript Element)
Renders Element .
override async Task Render(DeleteBlocks Element)
Renders Element .
override Task Render(LinkReference Element)
Renders Element .
override Task Render(MultimediaReference Element)
Renders Element .
override Task Render(Abbreviation Element)
Renders Element .
override Task Render(UnnumberedItem Element)
Renders Element .
override Task Render(Model.SpanElements.Multimedia Element)
Renders Element .
override Task Render(HashTag Element)
Renders Element .
override async Task Render(NestedBlock Element)
Renders Element .
override async Task Render(SubScript Element)
Renders Element .
readonly XamlSettings XamlSettings
XAML settings.
override async Task Render(CenterAligned Element)
Renders Element .
override Task Render(TaskItem Element)
Renders Element .
override Task Render(NumberedItem Element)
Renders Element .
async Task Render(string Url, string Title, IEnumerable< MarkdownElement > ChildNodes, MarkdownDocument Document)
Generates XAML for a link.
override async Task Render(TaskList Element)
Renders Element .
override Task Render(HtmlEntity Element)
Renders Element .
override Task Render(AutomaticLinkUrl Element)
Renders Element .
override Task Render(LineBreak Element)
Renders Element .
override async Task Render(Paragraph Element)
Renders Element .
override async Task Render(MarginAligned Element)
Renders Element .
override Task Render(MetaReference Element)
Renders Element .
override async Task Render(Emphasize Element)
Renders Element .
override Task RenderDocumentFooter()
Renders the document header.
override async Task Render(NumberedList Element)
Renders Element .
override Task Render(InlineCode Element)
Renders Element .
override async Task Render(InsertBlocks Element)
Renders Element .
override async Task Render(DefinitionDescriptions Element)
Renders Element .
override async Task Render(Delete Element)
Renders Element .
override Task Render(AutomaticLinkMail Element)
Renders Element .
override Task Render(InlineHTML Element)
Renders Element .
override Task Render(HtmlEntityUnicode Element)
Renders Element .
WpfXamlRenderer(XmlWriterSettings XmlSettings, XamlSettings XamlSettings)
Renders XAML (WPF flavour) from a Markdown document.
override Task Render(DefinitionList Element)
Renders Element .
override Task Render(InlineText Element)
Renders Element .
override async Task Render(LeftAligned Element)
Renders Element .
override async Task Render(EmojiReference Element)
Renders Element .
override async Task Render(Strong Element)
Renders Element .
override async Task Render(Header Element)
Renders Element .
override Task Render(DetailsReference Element)
Renders Element .
override Task Render(CommentBlock Element)
Renders Element .
override Task RenderDocument(MarkdownDocument Document, bool Inclusion)
Renders a document.
Contains settings that the XAML export uses to customize XAML output.
Helps with common XML-related tasks.
Static class managing the application event log. Applications and services log events on this static ...
static Exception UnnestException(Exception Exception)
Unnests an exception, to extract the relevant inner exception.
ToMatrix(ScriptNode Operand, bool NullCheck, int Start, int Length, Expression Expression)
To-Matrix operator.
Interface for Emoji sources. Emoji sources provide emojis to content providers.
Task< IImageSource > GetImageSource(EmojiInfo Emoji)
Gets the image source of an emoji.
bool EmojiSupported(EmojiInfo Emoji)
If the emoji is supported by the emoji source.
Contains information about an emoji image.
Interface for code content WPF XAML renderers.
Interface for multimedia content WPF XAML renderers.
Interface for objects that can be converted into matrices.
TextAlignment
Text alignment of contents.
BaselineAlignment
Where baselign of horizontally organized elements are rendered.