internal int NewShapeId() { DrawingManager2 dm = ((HSSFWorkbook)_sheet.Workbook).Workbook.DrawingManager; EscherDgRecord dg = (EscherDgRecord)_boundAggregate.GetEscherContainer().GetChildById(EscherDgRecord.RECORD_ID); short drawingGroupId = dg.DrawingGroupId; return(dm.AllocateShapeId(drawingGroupId, dg)); }
private void ConvertShapes(HSSFShapeContainer parent, EscherContainerRecord escherParent, Hashtable shapeToObj) { if (escherParent == null) { throw new ArgumentException("Parent record required"); } IList shapes = parent.Children; for (IEnumerator iterator = shapes.GetEnumerator(); iterator.MoveNext();) { HSSFShape shape = (HSSFShape)iterator.Current; if (shape is HSSFShapeGroup) { ConvertGroup((HSSFShapeGroup)shape, escherParent, shapeToObj); } else { AbstractShape shapeModel = AbstractShape.CreateShape( shape, drawingManager.AllocateShapeId(drawingGroupId)); shapeToObj[FindClientData(shapeModel.SpContainer)] = shapeModel.ObjRecord; if (shapeModel is TextboxShape) { EscherRecord escherTextbox = ((TextboxShape)shapeModel).EscherTextbox; shapeToObj[escherTextbox] = ((TextboxShape)shapeModel).TextObjectRecord; // escherParent.AddChildRecord(escherTextbox); if (shapeModel is CommentShape) { CommentShape comment = (CommentShape)shapeModel; tailRec.Add(comment.NoteRecord); } } escherParent.AddChildRecord(shapeModel.SpContainer); } } // drawingManager.newCluster( (short)1 ); // drawingManager.newCluster( (short)2 ); }
public void TestAllocateShapeId() { EscherDgRecord dgRecord1 = drawingManager2.CreateDgRecord(); EscherDgRecord dgRecord2 = drawingManager2.CreateDgRecord(); Assert.AreEqual(1024, drawingManager2.AllocateShapeId((short)1)); Assert.AreEqual(1024, dgRecord1.LastMSOSPID); Assert.AreEqual(1025, dgg.ShapeIdMax); Assert.AreEqual(1025, drawingManager2.AllocateShapeId((short)1)); Assert.AreEqual(1025, dgRecord1.LastMSOSPID); Assert.AreEqual(1026, dgg.ShapeIdMax); Assert.AreEqual(1026, drawingManager2.AllocateShapeId((short)1)); Assert.AreEqual(1026, dgRecord1.LastMSOSPID); Assert.AreEqual(1027, dgg.ShapeIdMax); Assert.AreEqual(2048, drawingManager2.AllocateShapeId((short)2)); Assert.AreEqual(2048, dgRecord2.LastMSOSPID); Assert.AreEqual(2049, dgg.ShapeIdMax); for (int i = 0; i < 1021; i++) { drawingManager2.AllocateShapeId((short)1); Assert.AreEqual(2049, dgg.ShapeIdMax); } Assert.AreEqual(3072, drawingManager2.AllocateShapeId((short)1)); Assert.AreEqual(3073, dgg.ShapeIdMax); Assert.AreEqual(2, dgg.DrawingsSaved); Assert.AreEqual(4, dgg.NumIdClusters); Assert.AreEqual(1026, dgg.NumShapesSaved); }