/// <summary> /// Appends an object to the document. /// </summary> /// <param name="obj">The object to append.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="obj"/> is null.</exception> public void AppendObject(EmbeddedObject obj) { if (obj == null) { throw new ArgumentNullException("obj"); } int styleIndex = CurrentStyleIndex; int paragraphIndex = CurrentParagraphIndex; InternalAppendObject(styleIndex, obj); RaiseParagraphChanged(paragraphIndex); }
private void InternalAppendObject(int styleIndex, EmbeddedObject obj) { int objectIndex = objectTable.AssignIndex(obj); int runIndex = runBuffer.Count; runBuffer.GrowBy(1); int charIndex = charBuffer.Count; charBuffer.GrowBy(1); currentRun = GetRunZero() + runIndex; currentRun->InitializeObjectRun(styleIndex, objectIndex); char *chars = GetCharZero() + charIndex; *chars = ObjectRunPlaceholderChar; currentParagraph->RunCount += 1; currentParagraph->CharCount += 1; }