use of org.apache.poi.ddf.EscherDgRecord in project poi by apache.
the class TestDrawingManager2 method testCreateDgRecord.
public void testCreateDgRecord() {
EscherDgRecord dgRecord1 = drawingManager2.createDgRecord();
assertEquals(1, dgRecord1.getDrawingGroupId());
assertEquals(-1, dgRecord1.getLastMSOSPID());
EscherDgRecord dgRecord2 = drawingManager2.createDgRecord();
assertEquals(2, dgRecord2.getDrawingGroupId());
assertEquals(-1, dgRecord2.getLastMSOSPID());
assertEquals(2, dgg.getDrawingsSaved());
assertEquals(2, dgg.getFileIdClusters().length);
assertEquals(3, dgg.getNumIdClusters());
assertEquals(0, dgg.getNumShapesSaved());
}
use of org.apache.poi.ddf.EscherDgRecord in project poi by apache.
the class TestCloneSheet method testCloneSheetWithEmptyDrawingAggregate.
@Test
public void testCloneSheetWithEmptyDrawingAggregate() {
HSSFWorkbook b = new HSSFWorkbook();
HSSFSheet s = b.createSheet("Test");
HSSFPatriarch patriarch = s.createDrawingPatriarch();
EscherAggregate agg1 = patriarch.getBoundAggregate();
HSSFSheet s2 = s.cloneSheet(b);
patriarch = s2.getDrawingPatriarch();
EscherAggregate agg2 = patriarch.getBoundAggregate();
EscherSpRecord sp1 = (EscherSpRecord) agg1.getEscherContainer().getChild(1).getChild(0).getChild(1);
EscherSpRecord sp2 = (EscherSpRecord) agg2.getEscherContainer().getChild(1).getChild(0).getChild(1);
assertEquals(sp1.getShapeId(), 1024);
assertEquals(sp2.getShapeId(), 2048);
EscherDgRecord dg = (EscherDgRecord) agg2.getEscherContainer().getChild(0);
assertEquals(dg.getLastMSOSPID(), 2048);
assertEquals(dg.getInstance(), 0x2);
//everything except id and DgRecord.lastMSOSPID and DgRecord.Instance must be the same
sp2.setShapeId(1024);
dg.setLastMSOSPID(1024);
dg.setInstance((short) 0x1);
assertEquals(agg1.serialize().length, agg2.serialize().length);
assertEquals(agg1.toXml(""), agg2.toXml(""));
assertArrayEquals(agg1.serialize(), agg2.serialize());
}
use of org.apache.poi.ddf.EscherDgRecord in project poi by apache.
the class TestShapes method shapeId.
@Test
public void shapeId() throws IOException {
HSLFSlideShow ss = new HSLFSlideShow();
HSLFSlide slide = ss.createSlide();
HSLFShape shape = null;
//EscherDgg is a document-level record which keeps track of the drawing groups
EscherDggRecord dgg = ss.getDocumentRecord().getPPDrawingGroup().getEscherDggRecord();
EscherDgRecord dg = slide.getSheetContainer().getPPDrawing().getEscherDgRecord();
//total number of shapes in the ppt
int dggShapesUsed = dgg.getNumShapesSaved();
//max number of shapeId
int dggMaxId = dgg.getShapeIdMax();
//max shapeId in the slide
int dgMaxId = dg.getLastMSOSPID();
// number of shapes in the slide
int dgShapesUsed = dg.getNumShapes();
//insert 3 shapes and make sure the Ids are properly incremented
for (int i = 0; i < 3; i++) {
shape = new HSLFLine();
assertEquals(0, shape.getShapeId());
slide.addShape(shape);
assertTrue(shape.getShapeId() > 0);
//check that EscherDgRecord is updated
assertEquals(shape.getShapeId(), dg.getLastMSOSPID());
assertEquals(dgMaxId + 1, dg.getLastMSOSPID());
assertEquals(dgShapesUsed + 1, dg.getNumShapes());
//check that EscherDggRecord is updated
assertEquals(shape.getShapeId() + 1, dgg.getShapeIdMax());
assertEquals(dggMaxId + 1, dgg.getShapeIdMax());
assertEquals(dggShapesUsed + 1, dgg.getNumShapesSaved());
dggShapesUsed = dgg.getNumShapesSaved();
dggMaxId = dgg.getShapeIdMax();
dgMaxId = dg.getLastMSOSPID();
dgShapesUsed = dg.getNumShapes();
}
//For each drawing group PPT allocates clusters with size=1024
//if the number of shapes is greater that 1024 a new cluster is allocated
//make sure it is so
int numClusters = dgg.getNumIdClusters();
for (int i = 0; i < 1025; i++) {
shape = new HSLFLine();
slide.addShape(shape);
}
assertEquals(numClusters + 1, dgg.getNumIdClusters());
ss.close();
}
Aggregations