static public void RenderChildren <DOCUMENT_NODE_TYPE, CANVAS_TYPE>(this DocumentNodeContainer <DOCUMENT_NODE_TYPE, CANVAS_TYPE> item, CANVAS_TYPE canvas) where DOCUMENT_NODE_TYPE : DocumentNode <CANVAS_TYPE> { item.GetChildren().Narrow(c => c.IsVisible()).Process(c => c.Render(canvas)); }
static public IEnumerable <DOCUMENT_NODE_TYPE> GetDeepChildren <DOCUMENT_NODE_TYPE, CANVAS_TYPE>(this DocumentNodeContainer <DOCUMENT_NODE_TYPE, CANVAS_TYPE> item) where DOCUMENT_NODE_TYPE : DocumentNode <CANVAS_TYPE> { foreach (DOCUMENT_NODE_TYPE child in item.GetChildren()) { yield return(child); DocumentNodeContainer <DOCUMENT_NODE_TYPE, CANVAS_TYPE> child_container; if (child.Convert <DocumentNodeContainer <DOCUMENT_NODE_TYPE, CANVAS_TYPE> >(out child_container)) { foreach (DOCUMENT_NODE_TYPE sub_child in child_container.GetDeepChildren()) { yield return(sub_child); } } } }
static public bool HasVisibleChild <DOCUMENT_NODE_TYPE, CANVAS_TYPE>(this DocumentNodeContainer <DOCUMENT_NODE_TYPE, CANVAS_TYPE> item) where DOCUMENT_NODE_TYPE : DocumentNode <CANVAS_TYPE> { return(item.GetChildren().Has(c => c.IsVisible())); }
static public void Add <DOCUMENT_NODE_TYPE, CANVAS_TYPE>(this DocumentNodeContainer <DOCUMENT_NODE_TYPE, CANVAS_TYPE> item, params DOCUMENT_NODE_TYPE[] to_add) where DOCUMENT_NODE_TYPE : DocumentNode <CANVAS_TYPE> { item.Add <DOCUMENT_NODE_TYPE, CANVAS_TYPE>((IEnumerable <DOCUMENT_NODE_TYPE>)to_add); }
static public void Add <DOCUMENT_NODE_TYPE, CANVAS_TYPE>(this DocumentNodeContainer <DOCUMENT_NODE_TYPE, CANVAS_TYPE> item, IEnumerable <DOCUMENT_NODE_TYPE> to_add) where DOCUMENT_NODE_TYPE : DocumentNode <CANVAS_TYPE> { to_add.Process(n => item.Add(n)); }
static public J AddAndGet <DOCUMENT_NODE_TYPE, CANVAS_TYPE, J>(this DocumentNodeContainer <DOCUMENT_NODE_TYPE, CANVAS_TYPE> item, J to_add) where J : DOCUMENT_NODE_TYPE where DOCUMENT_NODE_TYPE : DocumentNode <CANVAS_TYPE> { item.Add(to_add); return(to_add); }
public DocumentBuilder(DocumentNodeContainer <DOCUMENT_NODE_TYPE, CANVAS_TYPE> c) { root_container = c; active_container = root_container; }