ShapeRecord class
Inheritance: SizeStruct, ISwfSerializer
 /// <summary>
 /// Removes the specified value.
 /// </summary>
 /// <param name="value">Value.</param>
 public void Remove(ShapeRecord value)
 {
     if (List.Contains(value))
     {
         List.Remove(value as object);
     }
 }
        /// <summary>
        /// Writes to a binary writer.
        /// </summary>
        /// <param name="writer">Writer.</param>
        public void WriteTo(BufferedBinaryWriter writer)
        {
            writer.SynchBits();
            writer.WriteUBits(ShapeWithStyle.NumFillBits, 4);
            writer.WriteUBits(ShapeWithStyle.NumLineBits, 4);

            ShapeRecord lastShape = this.GetLastOne();

            if (lastShape != null && !(lastShape is EndShapeRecord))
            {
                this.Add(new EndShapeRecord());
            }

            IEnumerator shapes = this.GetEnumerator();

            while (shapes.MoveNext())
            {
                ((ShapeRecord)shapes.Current).WriteTo(writer);
            }
        }
        /// <summary>
        /// Gets the size of.
        /// </summary>
        /// <returns>Size of this object.</returns>
        public int GetSizeOf()
        {
            int res = 8;

            IEnumerator shapes = this.GetEnumerator();

            while (shapes.MoveNext())
            {
                res += ((ShapeRecord)shapes.Current).GetBitSizeOf(res);
            }

            ShapeRecord lastShape = this.GetLastOne();

            if (lastShape != null && !(lastShape is EndShapeRecord))
            {
                EndShapeRecord end = new EndShapeRecord();
                res += end.GetBitSizeOf(res);
            }

            return(Convert.ToInt32(Math.Ceiling((double)res / 8.0)));
        }
 /// <summary>
 /// Adds the specified value.
 /// </summary>
 /// <param name="value">Value.</param>
 /// <returns></returns>
 public ShapeRecord Add(ShapeRecord value)
 {
     List.Add(value as object);
     return value;
 }
 /// <summary>
 /// Creates a new <see cref="ShapeRecordCollection"/> instance.
 /// </summary>
 /// <param name="shapes">Shapes.</param>
 public ShapeRecordCollection(ShapeRecord[] shapes)
 {
     if (shapes != null)
         AddRange(shapes);
 }
 /// <summary>
 /// Removes the specified value.
 /// </summary>
 /// <param name="value">Value.</param>
 public void Remove(ShapeRecord value)
 {
     if (List.Contains(value))
         List.Remove(value as object);
 }
 /// <summary>
 /// Inserts the specified index.
 /// </summary>
 /// <param name="index">Index.</param>
 /// <param name="value">Value.</param>
 public void Insert(int index, ShapeRecord value)
 {
     List.Insert(index, value as object);
 }
 /// <summary>
 /// Get the index of.
 /// </summary>
 /// <param name="value">Value.</param>
 /// <returns></returns>
 public int IndexOf(ShapeRecord value)
 {
     return List.IndexOf(value);
 }
 /// <summary>
 /// Containses the specified value.
 /// </summary>
 /// <param name="value">Value.</param>
 /// <returns></returns>
 public bool Contains(ShapeRecord value)
 {
     return List.Contains(value as object);
 }
 /// <summary>
 /// Adds the range.
 /// </summary>
 /// <param name="values">Values.</param>
 public void AddRange(ShapeRecord[] values)
 {
     foreach(ShapeRecord ip in values)
         Add(ip);
 }
 /// <summary>
 /// Get the index of.
 /// </summary>
 /// <param name="value">Value.</param>
 /// <returns></returns>
 public int IndexOf(ShapeRecord value)
 {
     return(List.IndexOf(value));
 }
 /// <summary>
 /// Containses the specified value.
 /// </summary>
 /// <param name="value">Value.</param>
 /// <returns></returns>
 public bool Contains(ShapeRecord value)
 {
     return(List.Contains(value as object));
 }
 /// <summary>
 /// Inserts the specified index.
 /// </summary>
 /// <param name="index">Index.</param>
 /// <param name="value">Value.</param>
 public void Insert(int index, ShapeRecord value)
 {
     List.Insert(index, value as object);
 }
 /// <summary>
 /// Adds the specified value.
 /// </summary>
 /// <param name="value">Value.</param>
 /// <returns></returns>
 public ShapeRecord Add(ShapeRecord value)
 {
     List.Add(value as object);
     return(value);
 }