Beispiel #1
0
        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 );
        }
Beispiel #3
0
        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);
        }