/// <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) + ")"); }
/// <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()); }
/// <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); }
/// <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); }