public virtual void AddChild(IRenderer renderer) { // https://www.webkit.org/blog/116/webcore-rendering-iii-layout-basics // "The rules can be summarized as follows:"... int?positioning = renderer.GetProperty <int?>(Property.POSITION); if (positioning == null || positioning == LayoutPosition.RELATIVE || positioning == LayoutPosition.STATIC) { childRenderers.Add(renderer); } else { if (positioning == LayoutPosition.FIXED) { iText.Layout.Renderer.AbstractRenderer root = this; while (root.parent is iText.Layout.Renderer.AbstractRenderer) { root = (iText.Layout.Renderer.AbstractRenderer)root.parent; } if (root == this) { positionedRenderers.Add(renderer); } else { root.AddChild(renderer); } } } }
protected internal AbstractRenderer(iText.Layout.Renderer.AbstractRenderer other ) { this.childRenderers = other.childRenderers; this.positionedRenderers = other.positionedRenderers; this.modelElement = other.modelElement; this.flushed = other.flushed; this.occupiedArea = other.occupiedArea.Clone(); this.parent = other.parent; this.properties.AddAll(other.properties); this.isLastRendererForModelElement = other.isLastRendererForModelElement; }