/** * Allocates new shape id for the new drawing group id. * * @return a new shape id. */ public int AllocateShapeId(short drawingGroupId, EscherDgRecord dg) { dgg.NumShapesSaved=(dgg.NumShapesSaved + 1); // Add to existing cluster if space available for (int i = 0; i < dgg.FileIdClusters.Length; i++) { EscherDggRecord.FileIdCluster c = dgg.FileIdClusters[i]; if (c.DrawingGroupId == drawingGroupId && c.NumShapeIdsUsed != 1024) { int result = c.NumShapeIdsUsed + (1024 * (i + 1)); c.IncrementShapeId(); dg.NumShapes=(dg.NumShapes + 1); dg.LastMSOSPID=(result); if (result >= dgg.ShapeIdMax) dgg.ShapeIdMax=(result + 1); return result; } } // Create new cluster dgg.AddCluster(drawingGroupId, 0); dgg.FileIdClusters[dgg.FileIdClusters.Length - 1].IncrementShapeId(); dg.NumShapes=(dg.NumShapes + 1); int result2 = (1024 * dgg.FileIdClusters.Length); dg.LastMSOSPID = (result2); if (result2 >= dgg.ShapeIdMax) dgg.ShapeIdMax = (result2 + 1); return result2; }
public EscherDgRecord CreateDgRecord() { EscherDgRecord dg = new EscherDgRecord(); dg.RecordId = EscherDgRecord.RECORD_ID; short dgId = FindNewDrawingGroupId(); dg.Options=(short)(dgId << 4); dg.NumShapes=0; dg.LastMSOSPID=(-1); drawingGroups.Add(dg); dgg.AddCluster(dgId, 0); dgg.DrawingsSaved=dgg.DrawingsSaved + 1; return dg; }
public EscherDgRecord CreateDgRecord() { EscherDgRecord dg = new EscherDgRecord(); dg.RecordId=(EscherDgRecord.RECORD_ID); short dgId = FindNewDrawingGroupId(); dg.Options=((short)(dgId << 4)); dg.NumShapes=(0); dg.LastMSOSPID=(-1); dgg.AddCluster(dgId, 0); dgg.DrawingsSaved=(dgg.DrawingsSaved + 1); dgMap[dgId]= dg; return dg; }