コード例 #1
0
        /**
 * 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;
        }
コード例 #2
0
ファイル: HSSFTestHelper.cs プロジェクト: Reinakumiko/npoi
 public override EscherDgRecord CreateDgRecord()
 {
     EscherDgRecord dg = new EscherDgRecord();
     dg.RecordId = (EscherDgRecord.RECORD_ID);
     dg.Options = ((short)(16));
     dg.NumShapes = (1);
     dg.LastMSOSPID = (1024);
     return dg;
 }
コード例 #3
0
ファイル: TestEscherDgRecord.cs プロジェクト: xoposhiy/npoi
 private EscherDgRecord CreateRecord()
 {
     EscherDgRecord r = new EscherDgRecord();
     r.Options=(short)0x0010;
     r.RecordId=EscherDgRecord.RECORD_ID;
     r.NumShapes=2;
     r.LastMSOSPID=1025;
     return r;
 }
コード例 #4
0
ファイル: DrawingManager.cs プロジェクト: 89sos98/npoi
 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;
 }
コード例 #5
0
 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;
 }
コード例 #6
0
ファイル: TestEscherDgRecord.cs プロジェクト: xoposhiy/npoi
        public void TestFillFields()
        {
            String hexData = "10 00 " +
                    "08 F0 " +
                    "08 00 00 00 " +
                    "02 00 00 00 " +
                    "01 04 00 00 ";
            byte[] data = HexRead.ReadFromString(hexData);
            EscherDgRecord r = new EscherDgRecord();
            int bytesWritten = r.FillFields(data, new DefaultEscherRecordFactory());

            Assert.AreEqual(16, bytesWritten);
            Assert.AreEqual(2, r.NumShapes);
            Assert.AreEqual(1025, r.LastMSOSPID);
        }
コード例 #7
0
ファイル: HSSFTestHelper.cs プロジェクト: Reinakumiko/npoi
 public override int AllocateShapeId(short drawingGroupId, EscherDgRecord dg)
 {
     return 1025;
 }
コード例 #8
0
ファイル: EscherAggregate.cs プロジェクト: Reinakumiko/npoi
        /**
         * create base tree with such structure:
         * EscherDgContainer
         * -EscherSpgrContainer
         * --EscherSpContainer
         * ---EscherSpRecord
         * ---EscherSpgrRecord
         * ---EscherSpRecord
         * -EscherDgRecord
         *
         * id of DgRecord and SpRecord are empty and must be set later by HSSFPatriarch
         */
        private void BuildBaseTree()
        {
            EscherContainerRecord dgContainer = new EscherContainerRecord();
            EscherContainerRecord spgrContainer = new EscherContainerRecord();
            EscherContainerRecord spContainer1 = new EscherContainerRecord();
            EscherSpgrRecord spgr = new EscherSpgrRecord();
            EscherSpRecord sp1 = new EscherSpRecord();
            dgContainer.RecordId = (EscherContainerRecord.DG_CONTAINER);
            dgContainer.Options = ((short)0x000F);
            EscherDgRecord dg = new EscherDgRecord();
            dg.RecordId = EscherDgRecord.RECORD_ID;
            short dgId = 1;
            dg.Options = ((short)(dgId << 4));
            dg.NumShapes = (0);
            dg.LastMSOSPID=(1024);
            spgrContainer.RecordId=(EscherContainerRecord.SPGR_CONTAINER);
            spgrContainer.Options=((short)0x000F);
            spContainer1.RecordId=(EscherContainerRecord.SP_CONTAINER);
            spContainer1.Options=((short)0x000F);
            spgr.RecordId=(EscherSpgrRecord.RECORD_ID);
            spgr.Options=((short)0x0001);    // version
            spgr.RectX1=(0);
            spgr.RectY1=(0);
            spgr.RectX2=(1023);
            spgr.RectY2=(255);
            sp1.RecordId=(EscherSpRecord.RECORD_ID);

            sp1.Options=((short)0x0002);
            sp1.Version=((short)0x2);
            sp1.ShapeId=(-1);
            sp1.Flags=(EscherSpRecord.FLAG_GROUP | EscherSpRecord.FLAG_PATRIARCH);
            dgContainer.AddChildRecord(dg);
            dgContainer.AddChildRecord(spgrContainer);
            spgrContainer.AddChildRecord(spContainer1);
            spContainer1.AddChildRecord(spgr);
            spContainer1.AddChildRecord(sp1);
            AddEscherRecord(dgContainer);
        }
コード例 #9
0
ファイル: HSSFTestHelper.cs プロジェクト: 89sos98/npoi
 public virtual int AllocateShapeId(short drawingGroupId, EscherDgRecord dg)
 {
     return 1025;
 }