コード例 #1
0
        /// <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);
        }
コード例 #2
0
ファイル: EscherDggRecord.cs プロジェクト: thinhmascot/NPOI
            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);
                }
            }
コード例 #3
0
ファイル: EscherDggRecord.cs プロジェクト: babywzazy/Server
 /// <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;
 }