Пример #1
0
 /// <summary>
 /// Constructs a Phrase with a certain Chunk and a certain leading.
 /// </summary>
 /// <param name="leading">the leading</param>
 /// <param name="chunk">a Chunk</param>
 public Phrase(float leading, Chunk chunk)
 {
     this.leading = leading;
     base.Add(chunk);
     font        = chunk.Font;
     hyphenation = chunk.GetHyphenation();
 }
Пример #2
0
        // overriding some of the ArrayList-methods

        /// <summary>
        /// Adds a Chunk, an Anchor or another Phrase
        /// to this Phrase.
        /// </summary>
        /// <param name="index">index at which the specified element is to be inserted</param>
        /// <param name="o">an object of type Chunk, Anchor, or Phrase</param>
        public virtual void Add(int index, Object o)
        {
            if (o == null)
            {
                return;
            }
            try {
                IElement element = (IElement)o;
                if (element.Type == Element.CHUNK)
                {
                    Chunk chunk = (Chunk)element;
                    if (!font.IsStandardFont())
                    {
                        chunk.Font = font.Difference(chunk.Font);
                    }
                    if (hyphenation != null && chunk.GetHyphenation() == null && !chunk.IsEmpty())
                    {
                        chunk.SetHyphenation(hyphenation);
                    }
                    base.Insert(index, chunk);
                }
                else if (element.Type == Element.PHRASE ||
                         element.Type == Element.ANCHOR ||
                         element.Type == Element.ANNOTATION ||
                         element.Type == Element.TABLE || // line added by David Freels
                         element.Type == Element.YMARK ||
                         element.Type == Element.MARKED)
                {
                    base.Insert(index, element);
                }
                else
                {
                    throw new Exception(element.Type.ToString());
                }
            }
            catch (Exception cce) {
                throw new Exception("Insertion of illegal Element: " + cce.Message);
            }
        }
Пример #3
0
        /// <summary>
        /// Adds a Chunk.
        /// </summary>
        /// <remarks>
        /// This method is a hack to solve a problem I had with phrases that were split between chunks
        /// in the wrong place.
        /// </remarks>
        /// <param name="chunk">a Chunk</param>
        /// <returns>a bool</returns>
        protected bool AddChunk(Chunk chunk)
        {
            Font   f = chunk.Font;
            String c = chunk.Content;

            if (font != null && !font.IsStandardFont())
            {
                f = font.Difference(chunk.Font);
            }
            if (Count > 0 && !chunk.HasAttributes())
            {
                try {
                    Chunk previous = (Chunk)this[Count - 1];
                    if (!previous.HasAttributes() &&
                        (f == null ||
                         f.CompareTo(previous.Font) == 0) &&
                        previous.Font.CompareTo(f) == 0 &&
                        !"".Equals(previous.Content.Trim()) &&
                        !"".Equals(c.Trim()))
                    {
                        previous.Append(c);
                        return(true);
                    }
                }
                catch {
                }
            }
            Chunk newChunk = new Chunk(c, f);

            newChunk.Attributes = chunk.Attributes;
            if (hyphenation != null && newChunk.GetHyphenation() == null && !newChunk.IsEmpty())
            {
                newChunk.SetHyphenation(hyphenation);
            }
            base.Add(newChunk);
            return(true);
        }
Пример #4
0
 /// <summary>
 /// Constructs a Phrase with a certain Chunk.
 /// </summary>
 /// <param name="chunk">a Chunk</param>
 public Phrase(Chunk chunk)
 {
     base.Add(chunk);
     font        = chunk.Font;
     hyphenation = chunk.GetHyphenation();
 }