*
* @author Glen Stampoultzis (glens at apache.org)
*/
+@Deprecated
public abstract class AbstractShape
{
/**
*
* @author Yegor Kozlov
*/
+@Deprecated
public class ComboboxShape
extends AbstractShape {
private EscherContainerRecord spContainer;
*
* @author Yegor Kozlov
*/
+@Deprecated
public final class CommentShape extends TextboxShape {
private NoteRecord _note;
*
* @author Glen Stampoultzis (glens at apache.org)
*/
+@Deprecated
public class LineShape
extends AbstractShape
{
import org.apache.poi.hssf.usermodel.HSSFPolygon;
import org.apache.poi.util.LittleEndian;
+@Deprecated
public class PolygonShape
extends AbstractShape
{
import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
import org.apache.poi.hssf.usermodel.HSSFShape;
+@Deprecated
public class SimpleFilledShape
extends AbstractShape
{
*
* @author Glen Stampoultzis (glens at apache.org)
*/
+@Deprecated
public class TextboxShape
extends AbstractShape
{
_sheet.getDrawingPatriarch().removeShape(comment);
}
- /**
- * Cell comment finder.
- * Returns cell comment for the specified sheet, row and column.
- *
- * @return cell comment or <code>null</code> if not found
- */
- protected static HSSFComment findCellComment(InternalSheet sheet, int row, int column) {
- // TODO - optimise this code by searching backwards, find NoteRecord first, quit if not found. Find one TXO by id
- HSSFComment comment = null;
- Map<Integer, TextObjectRecord> noteTxo =
- new HashMap<Integer, TextObjectRecord>();
- int i = 0;
- for (Iterator<RecordBase> it = sheet.getRecords().iterator(); it.hasNext();) {
- RecordBase rec = it.next();
- if (rec instanceof NoteRecord) {
- NoteRecord note = (NoteRecord) rec;
- if (note.getRow() == row && note.getColumn() == column) {
- if(i < noteTxo.size()) {
- TextObjectRecord txo = noteTxo.get(note.getShapeId());
- if(txo != null){
- comment = new HSSFComment(note, txo);
- comment.setRow(note.getRow());
- comment.setColumn(note.getColumn());
- comment.setAuthor(note.getAuthor());
- comment.setVisible(note.getFlags() == NoteRecord.NOTE_VISIBLE);
- comment.setString(txo.getStr());
- } else{
- log.log(POILogger.WARN, "Failed to match NoteRecord and TextObjectRecord, row: " + row + ", column: " + column);
- }
- } else {
- log.log(POILogger.WARN, "Failed to match NoteRecord and TextObjectRecord, row: " + row + ", column: " + column);
- }
- break;
- }
- i++;
- } else if (rec instanceof ObjRecord) {
- ObjRecord obj = (ObjRecord) rec;
- SubRecord sub = obj.getSubRecords().get(0);
- if (sub instanceof CommonObjectDataSubRecord) {
- CommonObjectDataSubRecord cmo = (CommonObjectDataSubRecord) sub;
- if (cmo.getObjectType() == CommonObjectDataSubRecord.OBJECT_TYPE_COMMENT) {
- //map ObjectId and corresponding TextObjectRecord,
- //it will be used to match NoteRecord and TextObjectRecord
- while (it.hasNext()) {
- rec = it.next();
- if (rec instanceof TextObjectRecord) {
- noteTxo.put(cmo.getObjectId(), (TextObjectRecord) rec);
- break;
- }
- }
- }
- }
- }
- }
- return comment;
- }
-
/**
* @return hyperlink associated with this cell or <code>null</code> if not found
*/
*
* @author Daniel Noll
*/
-public final class HSSFObjectData extends HSSFShape {
+public final class HSSFObjectData extends HSSFPicture {
/**
* Reference to the filesystem root, required for retrieving the object data.
*/
EscherAggregate agg = patriarch._getBoundAggregate();
agg.associateShapeToObjRecord(getEscherContainer().getChildById(EscherClientDataRecord.RECORD_ID), getObjRecord());
EscherBSERecord bse =
- patriarch._sheet.getWorkbook().getWorkbook().getBSERecord(getPictureIndex());
+ patriarch.getSheet().getWorkbook().getWorkbook().getBSERecord(getPictureIndex());
bse.setRef(bse.getRef() + 1);
}
ObjRecord obj = (ObjRecord) getObjRecord().cloneViaReserialise();
return new HSSFObjectData(spContainer, obj, _root);
}
-
- public int getPictureIndex() {
- EscherSimpleProperty property = getOptRecord().lookup(EscherProperties.BLIP__BLIPTODISPLAY);
- if (null == property) {
- return -1;
- }
- return property.getPropertyValue();
- }
-
- public void setPictureIndex(int pictureIndex) {
- setPropertyValue(new EscherSimpleProperty(EscherProperties.BLIP__BLIPTODISPLAY, false, true, pictureIndex));
- }
-
- @Override
- void setShapeId(int shapeId) {
- EscherSpRecord spRecord = getEscherContainer().getChildById(EscherSpRecord.RECORD_ID);
- spRecord.setShapeId(shapeId);
- CommonObjectDataSubRecord cod = (CommonObjectDataSubRecord) getObjRecord().getSubRecords().get(0);
- cod.setObjectId((short) (shapeId % 1024));
- }
}
package org.apache.poi.hssf.usermodel;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
* and building up our shapes from the records)
*/
private EscherAggregate _boundAggregate;
- final HSSFSheet _sheet; // TODO make private
+ private final HSSFSheet _sheet;
/**
* Creates the patriarch.
addShape(shape);
//open existing file
onCreate(shape);
- EscherSpRecord sp = shape.getEscherContainer().getChildById(EscherSpRecord.RECORD_ID);
- if (shape.anchor.isHorizontallyFlipped()) {
- sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPHORIZ);
- }
- if (shape.anchor.isVerticallyFlipped()) {
- sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPVERT);
- }
return shape;
}
addShape(shape);
//open existing file
onCreate(shape);
-
- EscherSpRecord sp = shape.getEscherContainer().getChildById(EscherSpRecord.RECORD_ID);
- if (shape.anchor.isHorizontallyFlipped()) {
- sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPHORIZ);
- }
- if (shape.anchor.isVerticallyFlipped()) {
- sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPVERT);
- }
return shape;
}
* Returns a list of all shapes contained by the patriarch.
*/
public List<HSSFShape> getChildren() {
- return _shapes;
+ return Collections.unmodifiableList(_shapes);
}
/**
spgrContainer.addChildRecord(spContainer);
shape.afterInsert(this);
+ setFlipFlags(shape);
}
/**
_spgrRecord.setRectX2(x2);
}
+ public void clear() {
+ ArrayList <HSSFShape> copy = new ArrayList<HSSFShape>(_shapes);
+ for (HSSFShape shape: copy){
+ removeShape(shape);
+ }
+ }
+
int newShapeId() {
DrawingManager2 dm = _sheet.getWorkbook().getWorkbook().getDrawingManager();
EscherDgRecord dg =
}
}
}
+
+ private void setFlipFlags(HSSFShape shape){
+ EscherSpRecord sp = shape.getEscherContainer().getChildById(EscherSpRecord.RECORD_ID);
+ if (shape.anchor.isHorizontallyFlipped()) {
+ sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPHORIZ);
+ }
+ if (shape.anchor.isVerticallyFlipped()) {
+ sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPVERT);
+ }
+ }
+
+ public Iterator<HSSFShape> iterator() {
+ return _shapes.iterator();
+ }
+
+ protected HSSFSheet getSheet() {
+ return _sheet;
+ }
}
* @author Glen Stampoultzis
* @author Yegor Kozlov (yegor at apache.org)
*/
-public final class HSSFPicture extends HSSFSimpleShape implements Picture {
+public class HSSFPicture extends HSSFSimpleShape implements Picture {
public static final int PICTURE_TYPE_EMF = HSSFWorkbook.PICTURE_TYPE_EMF; // Windows Enhanced Metafile
public static final int PICTURE_TYPE_WMF = HSSFWorkbook.PICTURE_TYPE_WMF; // Windows Metafile
public static final int PICTURE_TYPE_PICT = HSSFWorkbook.PICTURE_TYPE_PICT; // Macintosh PICT
private float getColumnWidthInPixels(int column){
- int cw = _patriarch._sheet.getColumnWidth(column);
+ int cw = _patriarch.getSheet().getColumnWidth(column);
float px = getPixelWidth(column);
return cw/px;
private float getRowHeightInPixels(int i){
- HSSFRow row = _patriarch._sheet.getRow(i);
+ HSSFRow row = _patriarch.getSheet().getRow(i);
float height;
if(row != null) height = row.getHeight();
- else height = _patriarch._sheet.getDefaultRowHeight();
+ else height = _patriarch.getSheet().getDefaultRowHeight();
return height/PX_ROW;
}
private float getPixelWidth(int column){
- int def = _patriarch._sheet.getDefaultColumnWidth()*256;
- int cw = _patriarch._sheet.getColumnWidth(column);
+ int def = _patriarch.getSheet().getDefaultColumnWidth()*256;
+ int cw = _patriarch.getSheet().getColumnWidth(column);
return cw == def ? PX_DEFAULT : PX_MODIFIED;
}
* @return image dimension
*/
public Dimension getImageDimension(){
- EscherBSERecord bse = _patriarch._sheet._book.getBSERecord(getPictureIndex());
+ EscherBSERecord bse = _patriarch.getSheet()._book.getBSERecord(getPictureIndex());
byte[] data = bse.getBlipRecord().getPicturedata();
int type = bse.getBlipTypeWin32();
return ImageUtils.getImageDimension(new ByteArrayInputStream(data), type);
* @return picture data for this shape
*/
public HSSFPictureData getPictureData(){
- InternalWorkbook iwb = _patriarch._sheet.getWorkbook().getWorkbook();
+ InternalWorkbook iwb = _patriarch.getSheet().getWorkbook().getWorkbook();
EscherBlipRecord blipRecord = iwb.getBSERecord(getPictureIndex()).getBlipRecord();
return new HSSFPictureData(blipRecord);
}
EscherAggregate agg = patriarch._getBoundAggregate();
agg.associateShapeToObjRecord(getEscherContainer().getChildById(EscherClientDataRecord.RECORD_ID), getObjRecord());
EscherBSERecord bse =
- patriarch._sheet.getWorkbook().getWorkbook().getBSERecord(getPictureIndex());
+ patriarch.getSheet().getWorkbook().getWorkbook().getBSERecord(getPictureIndex());
bse.setRef(bse.getRef() + 1);
}
/**
* The color applied to the lines of this shape.
*/
- public String getAdditionalData() {
+ public String getFileName() {
EscherComplexProperty propFile = (EscherComplexProperty) getOptRecord().lookup(
EscherProperties.BLIP__BLIPFILENAME);
try {
}
}
- public void setAdditionalData(String data){
+ public void setFileName(String data){
try {
EscherComplexProperty prop = new EscherComplexProperty(EscherProperties.BLIP__BLIPFILENAME, true, data.getBytes("UTF-16LE"));
setPropertyValue(prop);
import org.apache.poi.ddf.*;
import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
import org.apache.poi.hssf.record.ObjRecord;
+import org.apache.poi.util.LittleEndian;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.util.Iterator;
/**
EscherSpRecord spRecord = _escherContainer.getChildById(EscherSpRecord.RECORD_ID);
spRecord.setShapeId(shapeId);
CommonObjectDataSubRecord cod = (CommonObjectDataSubRecord) _objRecord.getSubRecords().get(0);
- cod.setObjectId((short) (shapeId-1024));
+ cod.setObjectId((short) (shapeId%1024));
}
int getShapeId(){
protected void setPropertyValue(EscherProperty property){
_optRecord.setEscherProperty(property);
}
+
+ public void setFlipVertical(boolean value){
+ EscherSpRecord sp = getEscherContainer().getChildById(EscherSpRecord.RECORD_ID);
+ if (value){
+ sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPVERT);
+ } else {
+ sp.setFlags(sp.getFlags() & (Integer.MAX_VALUE - EscherSpRecord.FLAG_FLIPVERT));
+ }
+ }
+
+ public void setFlipHorizontal(boolean value){
+ EscherSpRecord sp = getEscherContainer().getChildById(EscherSpRecord.RECORD_ID);
+ if (value){
+ sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPHORIZ);
+ } else {
+ sp.setFlags(sp.getFlags() & (Integer.MAX_VALUE - EscherSpRecord.FLAG_FLIPHORIZ));
+ }
+ }
+
+ public boolean isFlipVertical(){
+ EscherSpRecord sp = getEscherContainer().getChildById(EscherSpRecord.RECORD_ID);
+ return (sp.getFlags() & EscherSpRecord.FLAG_FLIPVERT) != 0;
+ }
+
+ public boolean isFlipHorizontal(){
+ EscherSpRecord sp = getEscherContainer().getChildById(EscherSpRecord.RECORD_ID);
+ return (sp.getFlags() & EscherSpRecord.FLAG_FLIPHORIZ) != 0;
+ }
+
+ public int getRotationDegree(){
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ EscherSimpleProperty property = getOptRecord().lookup(EscherProperties.TRANSFORM__ROTATION);
+ if (null == property){
+ return 0;
+ }
+ try {
+ LittleEndian.putInt(property.getPropertyValue(), bos);
+ return LittleEndian.getShort(bos.toByteArray(), 2);
+ } catch (IOException e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ public void setRotationDegree(short value){
+ setPropertyValue(new EscherSimpleProperty(EscherProperties.TRANSFORM__ROTATION , (value << 16)));
+ }
/**
* Count of all children and their children's children.
*
* @author Glen Stampoultzis (glens at apache.org)
*/
-public interface HSSFShapeContainer
+public interface HSSFShapeContainer extends Iterable<HSSFShape>
{
/**
* @return Any children contained by this shape.
*/
- List getChildren();
+ List<HSSFShape> getChildren();
/**
* add shape to the list of child records
*/
void setCoordinates( int x1, int y1, int x2, int y2 );
+ void clear();
+
+ public int getX1();
+
+ public int getY1();
+
+ public int getX2();
+
+ public int getY2();
}
package org.apache.poi.hssf.usermodel;
import org.apache.poi.ddf.*;
-import org.apache.poi.hssf.model.TextboxShape;
import org.apache.poi.hssf.record.*;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Iterator;
* @author Glen Stampoultzis (glens at apache.org)
*/
public class HSSFShapeGroup extends HSSFShape implements HSSFShapeContainer {
- List<HSSFShape> shapes = new ArrayList<HSSFShape>();
+ private final List<HSSFShape> shapes = new ArrayList<HSSFShape>();
private EscherSpgrRecord _spgrRecord;
public HSSFShapeGroup(EscherContainerRecord spgrContainer, ObjRecord objRecord) {
shapes.add(shape);
}
- public void addTextBox(TextboxShape textboxShape) {
-// HSSFTextbox shape = new HSSFTextbox(this, textboxShape.geanchor);
-// shapes.add(textboxShape);
- }
-
/**
* Create a new simple shape under this group.
*
* Return all children contained by this shape.
*/
public List<HSSFShape> getChildren() {
- return shapes;
+ return Collections.unmodifiableList(shapes);
}
/**
_spgrRecord.setRectY2(y2);
}
+ public void clear() {
+ ArrayList <HSSFShape> copy = new ArrayList<HSSFShape>(shapes);
+ for (HSSFShape shape: copy){
+ removeShape(shape);
+ }
+ }
+
/**
* The top left x coordinate of this group.
*/
}
return isRemoved;
}
+
+ public Iterator<HSSFShape> iterator() {
+ return shapes.iterator();
+ }
}
// If font is not set we must set the default one
if (rtr.numFormattingRuns() == 0) rtr.applyFont((short) 0);
_textObjectRecord.setStr(rtr);
+ if (string.getString() != null){
+ setPropertyValue(new EscherSimpleProperty(EscherProperties.TEXT__TEXTID, string.getString().hashCode()));
+ }
}
@Override
return spContainer;
}
- @Override
- public void setString(RichTextString string) {
- HSSFRichTextString rtr = (HSSFRichTextString) string;
- // If font is not set we must set the default one
- if (rtr.numFormattingRuns() == 0) rtr.applyFont((short) 0);
- getTextObjectRecord().setStr(rtr);
- }
-
@Override
void afterInsert(HSSFPatriarch patriarch) {
EscherAggregate agg = patriarch._getBoundAggregate();
rectangle.setNoFill(true);\r
rectangle.setString(new HSSFRichTextString("teeeest"));\r
assertEquals(rectangle.getLineStyleColor(), 1111);\r
+ assertEquals(((EscherSimpleProperty)((EscherOptRecord)rectangle.getEscherContainer().getChildById(EscherOptRecord.RECORD_ID))\r
+ .lookup(EscherProperties.TEXT__TEXTID)).getPropertyValue(), "teeeest".hashCode());\r
assertEquals(rectangle.isNoFill(), true);\r
assertEquals(rectangle.getString().getString(), "teeeest");\r
\r
assertEquals(HexDump.toHex(shape.getFillColor()), shape.getFillColor(), 0x2CE03D);\r
assertEquals(shape.getLineWidth(), HSSFShape.LINEWIDTH_ONE_PT * 2);\r
assertEquals(shape.getString().getString(), "POItest");\r
+ assertEquals(shape.getRotationDegree(), 27);\r
}\r
\r
public void testShapeIds() {\r
assertEquals(HSSFTestHelper.getEscherAggregate(patriarch).getTailRecords().size(), 0);\r
assertEquals(patriarch.getChildren().size(), 0);\r
}\r
+\r
+ public void testShapeFlip(){\r
+ HSSFWorkbook wb = new HSSFWorkbook();\r
+ HSSFSheet sheet = wb.createSheet();\r
+ HSSFPatriarch patriarch = sheet.createDrawingPatriarch();\r
+\r
+ HSSFSimpleShape rectangle = patriarch.createSimpleShape(new HSSFClientAnchor());\r
+ rectangle.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);\r
+\r
+ assertEquals(rectangle.isFlipVertical(), false);\r
+ assertEquals(rectangle.isFlipHorizontal(), false);\r
+\r
+ rectangle.setFlipVertical(true);\r
+ assertEquals(rectangle.isFlipVertical(), true);\r
+ rectangle.setFlipHorizontal(true);\r
+ assertEquals(rectangle.isFlipHorizontal(), true);\r
+\r
+ wb = HSSFTestDataSamples.writeOutAndReadBack(wb);\r
+ sheet = wb.getSheetAt(0);\r
+ patriarch = sheet.getDrawingPatriarch();\r
+\r
+ rectangle = (HSSFSimpleShape) patriarch.getChildren().get(0);\r
+\r
+ assertEquals(rectangle.isFlipHorizontal(), true);\r
+ rectangle.setFlipHorizontal(false);\r
+ assertEquals(rectangle.isFlipHorizontal(), false);\r
+\r
+ assertEquals(rectangle.isFlipVertical(), true);\r
+ rectangle.setFlipVertical(false);\r
+ assertEquals(rectangle.isFlipVertical(), false);\r
+\r
+ wb = HSSFTestDataSamples.writeOutAndReadBack(wb);\r
+ sheet = wb.getSheetAt(0);\r
+ patriarch = sheet.getDrawingPatriarch();\r
+\r
+ rectangle = (HSSFSimpleShape) patriarch.getChildren().get(0);\r
+\r
+ assertEquals(rectangle.isFlipVertical(), false);\r
+ assertEquals(rectangle.isFlipHorizontal(), false);\r
+ }\r
+\r
+ public void testRotation() {\r
+ HSSFWorkbook wb = new HSSFWorkbook();\r
+ HSSFSheet sheet = wb.createSheet();\r
+ HSSFPatriarch patriarch = sheet.createDrawingPatriarch();\r
+\r
+ HSSFSimpleShape rectangle = patriarch.createSimpleShape(new HSSFClientAnchor(0,0,100,100, (short) 0,0,(short)5,5));\r
+ rectangle.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);\r
+\r
+ assertEquals(rectangle.getRotationDegree(), 0);\r
+ rectangle.setRotationDegree((short) 45);\r
+ assertEquals(rectangle.getRotationDegree(), 45);\r
+ rectangle.setFlipHorizontal(true);\r
+\r
+ wb = HSSFTestDataSamples.writeOutAndReadBack(wb);\r
+ sheet = wb.getSheetAt(0);\r
+ patriarch = sheet.getDrawingPatriarch();\r
+ rectangle = (HSSFSimpleShape) patriarch.getChildren().get(0);\r
+ assertEquals(rectangle.getRotationDegree(), 45);\r
+ rectangle.setRotationDegree((short) 30);\r
+ assertEquals(rectangle.getRotationDegree(), 30);\r
+\r
+ patriarch.setCoordinates(0, 0, 10, 10);\r
+ rectangle.setString(new HSSFRichTextString("1234"));\r
+ }\r
+\r
+ public void testShapeContainerImplementsIterable(){\r
+ HSSFWorkbook wb = new HSSFWorkbook();\r
+ HSSFSheet sheet = wb.createSheet();\r
+ HSSFPatriarch patriarch = sheet.createDrawingPatriarch();\r
+\r
+ patriarch.createSimpleShape(new HSSFClientAnchor());\r
+ patriarch.createSimpleShape(new HSSFClientAnchor());\r
+\r
+ int i=2;\r
+\r
+ for (HSSFShape shape: patriarch){\r
+ i--;\r
+ }\r
+ assertEquals(i, 0);\r
+ }\r
+\r
+ public void testClearShapesForPatriarch(){\r
+ HSSFWorkbook wb = new HSSFWorkbook();\r
+ HSSFSheet sheet = wb.createSheet();\r
+ HSSFPatriarch patriarch = sheet.createDrawingPatriarch();\r
+\r
+ patriarch.createSimpleShape(new HSSFClientAnchor());\r
+ patriarch.createSimpleShape(new HSSFClientAnchor());\r
+ patriarch.createCellComment(new HSSFClientAnchor());\r
+\r
+ EscherAggregate agg = HSSFTestHelper.getEscherAggregate(patriarch);\r
+\r
+ assertEquals(agg.getShapeToObjMapping().size(), 6);\r
+ assertEquals(agg.getTailRecords().size(), 1);\r
+ assertEquals(patriarch.getChildren().size(), 3);\r
+\r
+ patriarch.clear();\r
+\r
+ assertEquals(agg.getShapeToObjMapping().size(), 0);\r
+ assertEquals(agg.getTailRecords().size(), 0);\r
+ assertEquals(patriarch.getChildren().size(), 0);\r
+\r
+ wb = HSSFTestDataSamples.writeOutAndReadBack(wb);\r
+ sheet = wb.getSheetAt(0);\r
+ patriarch = sheet.getDrawingPatriarch();\r
+\r
+ assertEquals(agg.getShapeToObjMapping().size(), 0);\r
+ assertEquals(agg.getTailRecords().size(), 0);\r
+ assertEquals(patriarch.getChildren().size(), 0);\r
+ }\r
}\r
assertEquals(1, drawing.getChildren().size());
HSSFPicture picture = (HSSFPicture) drawing.getChildren().get(0);
- assertEquals(picture.getAdditionalData(), "test");
+ assertEquals(picture.getFileName(), "test");
}
public void testSetGetProperties(){
int idx1 = wb.addPicture(data1, Workbook.PICTURE_TYPE_JPEG);
HSSFPicture p1 = dr.createPicture(anchor, idx1);
- assertEquals(p1.getAdditionalData(), "");
- p1.setAdditionalData("aaa");
- assertEquals(p1.getAdditionalData(), "aaa");
+ assertEquals(p1.getFileName(), "");
+ p1.setFileName("aaa");
+ assertEquals(p1.getFileName(), "aaa");
wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
sh = wb.getSheet("Pictures");
dr = sh.getDrawingPatriarch();
p1 = (HSSFPicture) dr.getChildren().get(0);
- assertEquals(p1.getAdditionalData(), "aaa");
+ assertEquals(p1.getFileName(), "aaa");
}
}
import org.apache.poi.ddf.EscherContainerRecord;\r
import org.apache.poi.ddf.EscherSpgrRecord;\r
import org.apache.poi.hssf.HSSFTestDataSamples;\r
+import org.apache.poi.hssf.record.EscherAggregate;\r
import org.apache.poi.hssf.record.ObjRecord;\r
\r
import java.lang.reflect.Field;\r
}\r
return null;\r
}\r
+\r
+ public void testClearShapes(){\r
+ HSSFWorkbook wb = new HSSFWorkbook();\r
+ HSSFSheet sheet = wb.createSheet();\r
+ HSSFPatriarch patriarch = sheet.createDrawingPatriarch();\r
+ HSSFShapeGroup group = patriarch.createGroup(new HSSFClientAnchor());\r
+\r
+ group.createShape(new HSSFChildAnchor());\r
+ group.createShape(new HSSFChildAnchor());\r
+\r
+ EscherAggregate agg = HSSFTestHelper.getEscherAggregate(patriarch);\r
+\r
+ assertEquals(agg.getShapeToObjMapping().size(), 5);\r
+ assertEquals(agg.getTailRecords().size(), 0);\r
+ assertEquals(group.getChildren().size(), 2);\r
+\r
+ group.clear();\r
+\r
+ assertEquals(agg.getShapeToObjMapping().size(), 1);\r
+ assertEquals(agg.getTailRecords().size(), 0);\r
+ assertEquals(group.getChildren().size(), 0);\r
+\r
+ wb = HSSFTestDataSamples.writeOutAndReadBack(wb);\r
+ sheet = wb.getSheetAt(0);\r
+ patriarch = sheet.getDrawingPatriarch();\r
+\r
+ group = (HSSFShapeGroup) patriarch.getChildren().get(0);\r
+\r
+ assertEquals(agg.getShapeToObjMapping().size(), 1);\r
+ assertEquals(agg.getTailRecords().size(), 0);\r
+ assertEquals(group.getChildren().size(), 0);\r
+ }\r
}\r