/// <summary>
 /// Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
 /// </summary>
 /// <returns>
 /// A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
 /// </returns>
 public override String ToString()
 {
     return("propNum: " + PropertyNumber
            + ", RAW: 0x" + HexDump.ToHex(Id)
            + ", propName: " + EscherProperties.GetPropertyName(PropertyNumber)
            + ", complex: " + IsComplex
            + ", blipId: " + IsBlipId
            + ", value: " + propertyValue + " (0x" + HexDump.ToHex(propertyValue) + ")");
 }
Пример #2
0
        /// <summary>
        /// Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
        /// </summary>
        /// <returns>
        /// A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
        /// </returns>
        public override String ToString()
        {
            String dataStr;

            using (MemoryStream b = new MemoryStream())
            {
                try
                {
                    HexDump.Dump(this.complexData, 0, b, 0);
                    dataStr = b.ToString();
                }
                catch (Exception e)
                {
                    dataStr = e.ToString();
                }
            }
            return("propNum: " + PropertyNumber
                   + ", propName: " + EscherProperties.GetPropertyName(PropertyNumber)
                   + ", complex: " + IsComplex
                   + ", blipId: " + IsBlipId
                   + ", data: " + Environment.NewLine + dataStr);
        }
Пример #3
0
        /// <summary>
        /// Retrieves the string representation for this property.
        /// </summary>
        /// <returns></returns>
        public override String ToString()
        {
            String nl = Environment.NewLine;

            StringBuilder results = new StringBuilder();

            results.Append("    {EscherArrayProperty:" + nl);
            results.Append("     Num Elements: " + NumberOfElementsInArray + nl);
            results.Append("     Num Elements In Memory: " + NumberOfElementsInMemory + nl);
            results.Append("     Size of elements: " + SizeOfElements + nl);
            for (int i = 0; i < NumberOfElementsInArray; i++)
            {
                results.Append("     Element " + i + ": " + HexDump.ToHex(GetElement(i)) + nl);
            }
            results.Append("}" + nl);

            return("propNum: " + PropertyNumber
                   + ", propName: " + EscherProperties.GetPropertyName(PropertyNumber)
                   + ", complex: " + IsComplex
                   + ", blipId: " + IsBlipId
                   + ", data: " + nl + results.ToString());
        }
Пример #4
0
        /// <summary>
        /// Create new properties from a byte array.
        /// </summary>
        /// <param name="data">The byte array containing the property</param>
        /// <param name="offset">The starting offset into the byte array</param>
        /// <param name="numProperties">The new properties</param>
        /// <returns></returns>
        public List <EscherProperty> CreateProperties(byte[] data, int offset, short numProperties)
        {
            List <EscherProperty> results = new List <EscherProperty>();

            int pos = offset;

            //        while ( bytesRemaining >= 6 )
            for (int i = 0; i < numProperties; i++)
            {
                short propId;
                int   propData;
                propId   = LittleEndian.GetShort(data, pos);
                propData = LittleEndian.GetInt(data, pos + 2);
                short propNumber = (short)(propId & (short)0x3FFF);
                bool  isComplex  = (propId & unchecked ((short)0x8000)) != 0;
                bool  isBlipId   = (propId & (short)0x4000) != 0;

                byte propertyType = EscherProperties.GetPropertyType((short)propNumber);
                if (propertyType == EscherPropertyMetaData.TYPE_bool)
                {
                    results.Add(new EscherBoolProperty(propId, propData));
                }
                else if (propertyType == EscherPropertyMetaData.TYPE_RGB)
                {
                    results.Add(new EscherRGBProperty(propId, propData));
                }
                else if (propertyType == EscherPropertyMetaData.TYPE_SHAPEPATH)
                {
                    results.Add(new EscherShapePathProperty(propId, propData));
                }
                else
                {
                    if (!isComplex)
                    {
                        results.Add(new EscherSimpleProperty(propId, propData));
                    }
                    else
                    {
                        if (propertyType == EscherPropertyMetaData.TYPE_ARRAY)
                        {
                            results.Add(new EscherArrayProperty(propId, new byte[propData]));
                        }
                        else
                        {
                            results.Add(new EscherComplexProperty(propId, new byte[propData]));
                        }
                    }
                }
                pos += 6;
                //            bytesRemaining -= 6 + complexBytes;
            }

            // Get complex data
            for (IEnumerator iterator = results.GetEnumerator(); iterator.MoveNext();)
            {
                EscherProperty p = (EscherProperty)iterator.Current;
                if (p is EscherComplexProperty)
                {
                    if (p is EscherArrayProperty)
                    {
                        pos += ((EscherArrayProperty)p).SetArrayData(data, pos);
                    }
                    else
                    {
                        byte[] complexData = ((EscherComplexProperty)p).ComplexData;
                        Array.Copy(data, pos, complexData, 0, complexData.Length);
                        pos += complexData.Length;
                    }
                }
            }

            return(results);
        }