/// <summary> /// This method deSerializes the record from a byte array. /// </summary> /// <param name="data">The byte array containing the escher record information</param> /// <param name="offset">The starting offset into data</param> /// <param name="recordFactory">May be null since this is not a container record.</param> /// <returns>The number of bytes Read from the byte array.</returns> public override int FillFields(byte[] data, int offset, IEscherRecordFactory recordFactory) { int bytesRemaining = ReadHeader(data, offset); int pos = offset + 8; int size = 0; field_1_shapeIdMax = LittleEndian.GetInt(data, pos + size); size += 4; int field_2_numIdClusters = LittleEndian.GetInt(data, pos + size); size += 4; field_3_numShapesSaved = LittleEndian.GetInt(data, pos + size); size += 4; field_4_drawingsSaved = LittleEndian.GetInt(data, pos + size); size += 4; field_5_fileIdClusters = new FileIdCluster[(bytesRemaining - size) / 8]; // Can't rely on field_2_numIdClusters for (int i = 0; i < field_5_fileIdClusters.Length; i++) { field_5_fileIdClusters[i] = new FileIdCluster(LittleEndian.GetInt(data, pos + size), LittleEndian.GetInt(data, pos + size + 4)); maxDgId = Math.Max(maxDgId, field_5_fileIdClusters[i].DrawingGroupId); size += 8; } bytesRemaining -= size; if (bytesRemaining != 0) { throw new RecordFormatException("Expecting no remaining data but got " + bytesRemaining + " byte(s)."); } return(8 + size + bytesRemaining); }
public int Compare(object o1, object o2) { FileIdCluster f1 = (FileIdCluster)o1; FileIdCluster f2 = (FileIdCluster)o2; if (f1.DrawingGroupId == f2.DrawingGroupId) { return(0); } if (f1.DrawingGroupId < f2.DrawingGroupId) { return(-1); } else { return(+1); } }
/// <summary> /// This method deSerializes the record from a byte array. /// </summary> /// <param name="data">The byte array containing the escher record information</param> /// <param name="offset">The starting offset into data</param> /// <param name="recordFactory">May be null since this is not a container record.</param> /// <returns>The number of bytes Read from the byte array.</returns> public override int FillFields(byte[] data, int offset, EscherRecordFactory recordFactory) { int bytesRemaining = ReadHeader(data, offset); int pos = offset + 8; int size = 0; field_1_shapeIdMax = LittleEndian.GetInt(data, pos + size); size += 4; int field_2_numIdClusters = LittleEndian.GetInt(data, pos + size); size += 4; field_3_numShapesSaved = LittleEndian.GetInt(data, pos + size); size += 4; field_4_drawingsSaved = LittleEndian.GetInt(data, pos + size); size += 4; field_5_fileIdClusters = new FileIdCluster[(bytesRemaining - size) / 8]; // Can't rely on field_2_numIdClusters for (int i = 0; i < field_5_fileIdClusters.Length; i++) { field_5_fileIdClusters[i] = new FileIdCluster(LittleEndian.GetInt(data, pos + size), LittleEndian.GetInt(data, pos + size + 4)); maxDgId = Math.Max(maxDgId, field_5_fileIdClusters[i].DrawingGroupId); size += 8; } bytesRemaining -= size; if (bytesRemaining != 0) throw new RecordFormatException("Expecting no remaining data but got " + bytesRemaining + " byte(s)."); return 8 + size + bytesRemaining; }