Exemplo n.º 1
0
 //インライン表示には対応してません。
 protected override void Write(MarkdownRenderer renderer, TaskList obj)
 {
     renderer?.AppendBlock(new CheckBox()
     {
         IsChecked = obj?.Checked ?? false
     });
 }
Exemplo n.º 2
0
        protected override void Write(MarkdownRenderer renderer, MathBlock obj)
        {
            if (renderer == null)
            {
                return;
            }

            var webview = new WebView();
            var source  = new HtmlWebViewSource();

            source.Html = @"<html><head><script src=""" + MathJaxPath + @""" type=""text/javascript""></script></head><body>" +
                          "\\[" + Helper.LeafToString(obj) + "\\]" + @"</body></html>";
            webview.Source          = source;
            webview.VerticalOptions = LayoutOptions.StartAndExpand;

            renderer.AppendBlock(new Frame()
            {
                Style   = renderer.Theme.GetStyleFromStyleId(Themes.Theme.StyleId.MathBlock).ToStyleFrame(),
                Content = webview
            });
        }
Exemplo n.º 3
0
        protected override void Write(MarkdownRenderer renderer, LinkInline obj)
        {
            if (obj == null)
            {
                return;
            }
            if (renderer == null)
            {
                return;
            }

            var url = obj.GetDynamicUrl?.Invoke() ?? obj.Url;
            Uri?uri = MarkdownRenderer.GetAbsoluteUri(renderer.BasePath, url);

            if (uri == null)
            {
                renderer.WriteChildren(obj);
                return;
            }

            var title = string.IsNullOrEmpty(obj.Title) ? obj.Url : obj.Title;

            if (obj.IsImage)
            {
                renderer.AppendBlock(new Image()
                {
                    Source            = ImageSource.FromUri(uri),
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                });
            }
            else
            {
                var restore = renderer.CurrentHyperlink;
                renderer.CurrentHyperlink = uri;
                renderer.HyperlinkStyleId = Theme.StyleId.Hyperlink;
                renderer.WriteChildren(obj);
                renderer.CurrentHyperlink = restore;
            }
        }
Exemplo n.º 4
0
        protected override void Write(MarkdownRenderer renderer, ListBlock obj)
        {
            int bulletCount = 1;

            if (obj == null)
            {
                return;
            }
            if (renderer == null)
            {
                return;
            }
            if (obj.IsOrdered)
            {
                if (obj.BulletType != '1')
                {
                    //throw new NotImplementedException();
                }
                if (obj.OrderedStart != null && obj.OrderedStart != "1")
                {
                    if (!int.TryParse(obj.OrderedStart, out bulletCount))
                    {
                        bulletCount = 1;
                    }
                }
            }

            var grid = new Grid()
            {
                ColumnDefinitions =
                {
                    new ColumnDefinition()
                    {
                        Width = GridLength.Auto
                    },
                    new ColumnDefinition()
                    {
                        Width = GridLength.Star
                    },
                }
            };

            var rows     = new RowDefinitionCollection();
            int rowCount = 0;

            foreach (ListItemBlock item in obj)
            {
                //"•"はBoxViewの方が良いかな?
                //• is bullet,not ・.
                grid.Children.Add(
                    new Label()
                {
                    Text = obj.IsOrdered ? bulletCount + "." : "•",
                    HorizontalOptions = LayoutOptions.Start,
                    VerticalOptions   = LayoutOptions.Start,
                    Style             = renderer.Theme.GetStyleFromStyleId(Themes.Theme.StyleId.ListItem).ToStyleLabel()
                }, 0, rowCount
                    );
                var stack = new StackLayout();
                grid.Children.Add(stack, 1, rowCount);
                rows.Add(new RowDefinition()
                {
                    Height = GridLength.Auto
                });
                var restoreTemp = renderer.TemporaryTargetLayout;
                renderer.TemporaryTargetLayout = stack;
                renderer.WriteChildren(item);
                renderer.TemporaryTargetLayout = restoreTemp;
                rowCount++;
            }
            grid.RowDefinitions = rows;
            renderer.AppendBlock(grid);
        }