示例#1
0
        /// <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);
        }
示例#2
0
        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;
        }