mirror of https://github.com/apache/poi.git
added support for HSSFPicture in HSSFShapeFactory, fixed bugs, added tests
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/gsoc2012@1352818 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
93b0bb98bf
commit
7efc80c3e8
|
@ -38,10 +38,6 @@ public class EscherRGBProperty
|
||||||
return propertyValue;
|
return propertyValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRgbColor(int color){
|
|
||||||
this.propertyValue = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public byte getRed()
|
public byte getRed()
|
||||||
{
|
{
|
||||||
return (byte) ( propertyValue & 0xFF );
|
return (byte) ( propertyValue & 0xFF );
|
||||||
|
|
|
@ -80,10 +80,6 @@ public class EscherSimpleProperty extends EscherProperty
|
||||||
return propertyValue;
|
return propertyValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPropertyValue(int propertyValue) {
|
|
||||||
this.propertyValue = propertyValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if one escher property is equal to another.
|
* Returns true if one escher property is equal to another.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -315,6 +315,10 @@ public final class EscherAggregate extends AbstractEscherHolderRecord {
|
||||||
*/
|
*/
|
||||||
private List<Record> tailRec = new ArrayList<Record>();
|
private List<Record> tailRec = new ArrayList<Record>();
|
||||||
|
|
||||||
|
public EscherAggregate() {
|
||||||
|
buildBaseTree();
|
||||||
|
}
|
||||||
|
|
||||||
public EscherAggregate(DrawingManager2 drawingManager) {
|
public EscherAggregate(DrawingManager2 drawingManager) {
|
||||||
this.drawingManager = drawingManager;
|
this.drawingManager = drawingManager;
|
||||||
}
|
}
|
||||||
|
@ -634,7 +638,6 @@ public final class EscherAggregate extends AbstractEscherHolderRecord {
|
||||||
|
|
||||||
public void setPatriarch(HSSFPatriarch patriarch) {
|
public void setPatriarch(HSSFPatriarch patriarch) {
|
||||||
this.patriarch = patriarch;
|
this.patriarch = patriarch;
|
||||||
convertPatriarch(patriarch);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1025,6 +1028,43 @@ public final class EscherAggregate extends AbstractEscherHolderRecord {
|
||||||
throw new IllegalArgumentException("Can not find client data record");
|
throw new IllegalArgumentException("Can not find client data record");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void buildBaseTree(){
|
||||||
|
EscherContainerRecord dgContainer = new EscherContainerRecord();
|
||||||
|
EscherContainerRecord spgrContainer = new EscherContainerRecord();
|
||||||
|
EscherContainerRecord spContainer1 = new EscherContainerRecord();
|
||||||
|
EscherSpgrRecord spgr = new EscherSpgrRecord();
|
||||||
|
EscherSpRecord sp1 = new EscherSpRecord();
|
||||||
|
dgContainer.setRecordId(EscherContainerRecord.DG_CONTAINER);
|
||||||
|
dgContainer.setOptions((short) 0x000F);
|
||||||
|
EscherDgRecord dg = new EscherDgRecord();
|
||||||
|
dg.setRecordId( EscherDgRecord.RECORD_ID );
|
||||||
|
short dgId = 1;
|
||||||
|
dg.setOptions( (short) ( dgId << 4 ) );
|
||||||
|
dg.setNumShapes( 1 );
|
||||||
|
dg.setLastMSOSPID( 1024 );
|
||||||
|
drawingGroupId = dg.getDrawingGroupId();
|
||||||
|
spgrContainer.setRecordId(EscherContainerRecord.SPGR_CONTAINER);
|
||||||
|
spgrContainer.setOptions((short) 0x000F);
|
||||||
|
spContainer1.setRecordId(EscherContainerRecord.SP_CONTAINER);
|
||||||
|
spContainer1.setOptions((short) 0x000F);
|
||||||
|
spgr.setRecordId(EscherSpgrRecord.RECORD_ID);
|
||||||
|
spgr.setOptions((short) 0x0001); // version
|
||||||
|
spgr.setRectX1(0);
|
||||||
|
spgr.setRectY1(0);
|
||||||
|
spgr.setRectX2(1023);
|
||||||
|
spgr.setRectY2(255);
|
||||||
|
sp1.setRecordId(EscherSpRecord.RECORD_ID);
|
||||||
|
sp1.setOptions((short) 0x0002);
|
||||||
|
sp1.setShapeId(1024);
|
||||||
|
sp1.setFlags(EscherSpRecord.FLAG_GROUP | EscherSpRecord.FLAG_PATRIARCH);
|
||||||
|
dgContainer.addChildRecord(dg);
|
||||||
|
dgContainer.addChildRecord(spgrContainer);
|
||||||
|
spgrContainer.addChildRecord(spContainer1);
|
||||||
|
spContainer1.addChildRecord(spgr);
|
||||||
|
spContainer1.addChildRecord(sp1);
|
||||||
|
addEscherRecord(dgContainer);
|
||||||
|
}
|
||||||
|
|
||||||
private void convertPatriarch(HSSFPatriarch patriarch) {
|
private void convertPatriarch(HSSFPatriarch patriarch) {
|
||||||
EscherContainerRecord dgContainer = new EscherContainerRecord();
|
EscherContainerRecord dgContainer = new EscherContainerRecord();
|
||||||
EscherDgRecord dg;
|
EscherDgRecord dg;
|
||||||
|
|
|
@ -20,8 +20,8 @@ package org.apache.poi.hssf.usermodel;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
|
||||||
import org.apache.poi.ddf.EscherBSERecord;
|
import org.apache.poi.ddf.*;
|
||||||
import org.apache.poi.ddf.EscherBlipRecord;
|
import org.apache.poi.hssf.record.ObjRecord;
|
||||||
import org.apache.poi.ss.usermodel.Picture;
|
import org.apache.poi.ss.usermodel.Picture;
|
||||||
import org.apache.poi.ss.util.ImageUtils;
|
import org.apache.poi.ss.util.ImageUtils;
|
||||||
import org.apache.poi.hssf.model.InternalWorkbook;
|
import org.apache.poi.hssf.model.InternalWorkbook;
|
||||||
|
@ -54,7 +54,9 @@ public final class HSSFPicture extends HSSFSimpleShape implements Picture {
|
||||||
*/
|
*/
|
||||||
private static final int PX_ROW = 15;
|
private static final int PX_ROW = 15;
|
||||||
|
|
||||||
private int _pictureIndex;
|
public HSSFPicture(EscherContainerRecord spContainer, ObjRecord objRecord) {
|
||||||
|
super(spContainer, objRecord);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a picture object.
|
* Constructs a picture object.
|
||||||
|
@ -67,12 +69,16 @@ public final class HSSFPicture extends HSSFSimpleShape implements Picture {
|
||||||
|
|
||||||
public int getPictureIndex()
|
public int getPictureIndex()
|
||||||
{
|
{
|
||||||
return _pictureIndex;
|
EscherSimpleProperty property = _optRecord.lookup(EscherProperties.BLIP__BLIPTODISPLAY);
|
||||||
|
if (null == property){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return property.getPropertyValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPictureIndex( int pictureIndex )
|
public void setPictureIndex( int pictureIndex )
|
||||||
{
|
{
|
||||||
this._pictureIndex = pictureIndex;
|
setPropertyValue(new EscherSimpleProperty( EscherProperties.BLIP__BLIPTODISPLAY, false, true, pictureIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -215,7 +221,7 @@ public final class HSSFPicture extends HSSFSimpleShape implements Picture {
|
||||||
* @return image dimension
|
* @return image dimension
|
||||||
*/
|
*/
|
||||||
public Dimension getImageDimension(){
|
public Dimension getImageDimension(){
|
||||||
EscherBSERecord bse = _patriarch._sheet._book.getBSERecord(_pictureIndex);
|
EscherBSERecord bse = _patriarch._sheet._book.getBSERecord(getPictureIndex());
|
||||||
byte[] data = bse.getBlipRecord().getPicturedata();
|
byte[] data = bse.getBlipRecord().getPicturedata();
|
||||||
int type = bse.getBlipTypeWin32();
|
int type = bse.getBlipTypeWin32();
|
||||||
return ImageUtils.getImageDimension(new ByteArrayInputStream(data), type);
|
return ImageUtils.getImageDimension(new ByteArrayInputStream(data), type);
|
||||||
|
@ -228,7 +234,7 @@ public final class HSSFPicture extends HSSFSimpleShape implements Picture {
|
||||||
*/
|
*/
|
||||||
public HSSFPictureData getPictureData(){
|
public HSSFPictureData getPictureData(){
|
||||||
InternalWorkbook iwb = _patriarch._sheet.getWorkbook().getWorkbook();
|
InternalWorkbook iwb = _patriarch._sheet.getWorkbook().getWorkbook();
|
||||||
EscherBlipRecord blipRecord = iwb.getBSERecord(_pictureIndex).getBlipRecord();
|
EscherBlipRecord blipRecord = iwb.getBSERecord(getPictureIndex()).getBlipRecord();
|
||||||
return new HSSFPictureData(blipRecord);
|
return new HSSFPictureData(blipRecord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ public abstract class HSSFShape {
|
||||||
public static final int LINEWIDTH_DEFAULT = 9525;
|
public static final int LINEWIDTH_DEFAULT = 9525;
|
||||||
public static final int LINESTYLE__COLOR_DEFAULT = 0x08000040;
|
public static final int LINESTYLE__COLOR_DEFAULT = 0x08000040;
|
||||||
public static final int FILL__FILLCOLOR_DEFAULT = 0x08000009;
|
public static final int FILL__FILLCOLOR_DEFAULT = 0x08000009;
|
||||||
|
public static final boolean NO_FILL_DEFAULT = true;
|
||||||
|
|
||||||
public static final int LINESTYLE_SOLID = 0; // Solid (continuous) pen
|
public static final int LINESTYLE_SOLID = 0; // Solid (continuous) pen
|
||||||
public static final int LINESTYLE_DASHSYS = 1; // PS_DASH system dash style
|
public static final int LINESTYLE_DASHSYS = 1; // PS_DASH system dash style
|
||||||
|
@ -44,6 +45,8 @@ public abstract class HSSFShape {
|
||||||
public static final int LINESTYLE_LONGDASHDOTDOTGEL = 10; // long dash short dash short dash
|
public static final int LINESTYLE_LONGDASHDOTDOTGEL = 10; // long dash short dash short dash
|
||||||
public static final int LINESTYLE_NONE = -1;
|
public static final int LINESTYLE_NONE = -1;
|
||||||
|
|
||||||
|
public static final int LINESTYLE_DEFAULT = LINESTYLE_NONE;
|
||||||
|
|
||||||
// TODO - make all these fields private
|
// TODO - make all these fields private
|
||||||
HSSFShape parent;
|
HSSFShape parent;
|
||||||
HSSFAnchor anchor;
|
HSSFAnchor anchor;
|
||||||
|
@ -108,11 +111,20 @@ public abstract class HSSFShape {
|
||||||
* @see HSSFClientAnchor
|
* @see HSSFClientAnchor
|
||||||
*/
|
*/
|
||||||
public void setAnchor(HSSFAnchor anchor) {
|
public void setAnchor(HSSFAnchor anchor) {
|
||||||
|
int i = 0;
|
||||||
|
int recordId = -1;
|
||||||
if (parent == null) {
|
if (parent == null) {
|
||||||
if (anchor instanceof HSSFChildAnchor)
|
if (anchor instanceof HSSFChildAnchor)
|
||||||
throw new IllegalArgumentException("Must use client anchors for shapes directly attached to sheet.");
|
throw new IllegalArgumentException("Must use client anchors for shapes directly attached to sheet.");
|
||||||
EscherClientAnchorRecord anch = _escherContainer.getChildById(EscherClientAnchorRecord.RECORD_ID);
|
EscherClientAnchorRecord anch = _escherContainer.getChildById(EscherClientAnchorRecord.RECORD_ID);
|
||||||
if (null != anch) {
|
if (null != anch) {
|
||||||
|
for (i=0; i< _escherContainer.getChildRecords().size(); i++){
|
||||||
|
if (_escherContainer.getChild(i).getRecordId() == EscherClientAnchorRecord.RECORD_ID){
|
||||||
|
if (i != _escherContainer.getChildRecords().size() -1){
|
||||||
|
recordId = _escherContainer.getChild(i+1).getRecordId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
_escherContainer.removeChildRecord(anch);
|
_escherContainer.removeChildRecord(anch);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -120,10 +132,21 @@ public abstract class HSSFShape {
|
||||||
throw new IllegalArgumentException("Must use child anchors for shapes attached to groups.");
|
throw new IllegalArgumentException("Must use child anchors for shapes attached to groups.");
|
||||||
EscherChildAnchorRecord anch = _escherContainer.getChildById(EscherChildAnchorRecord.RECORD_ID);
|
EscherChildAnchorRecord anch = _escherContainer.getChildById(EscherChildAnchorRecord.RECORD_ID);
|
||||||
if (null != anch) {
|
if (null != anch) {
|
||||||
|
for (i=0; i< _escherContainer.getChildRecords().size(); i++){
|
||||||
|
if (_escherContainer.getChild(i).getRecordId() == EscherChildAnchorRecord.RECORD_ID){
|
||||||
|
if (i != _escherContainer.getChildRecords().size() -1){
|
||||||
|
recordId = _escherContainer.getChild(i+1).getRecordId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
_escherContainer.removeChildRecord(anch);
|
_escherContainer.removeChildRecord(anch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_escherContainer.addChildRecord(anchor.getEscherAnchor());
|
if (-1 == recordId){
|
||||||
|
_escherContainer.addChildRecord(anchor.getEscherAnchor());
|
||||||
|
} else {
|
||||||
|
_escherContainer.addChildBefore(anchor.getEscherAnchor(), recordId);
|
||||||
|
}
|
||||||
this.anchor = anchor;
|
this.anchor = anchor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,13 +162,7 @@ public abstract class HSSFShape {
|
||||||
* The color applied to the lines of this shape.
|
* The color applied to the lines of this shape.
|
||||||
*/
|
*/
|
||||||
public void setLineStyleColor(int lineStyleColor) {
|
public void setLineStyleColor(int lineStyleColor) {
|
||||||
EscherRGBProperty rgbProperty = _optRecord.lookup(EscherProperties.LINESTYLE__COLOR);
|
setPropertyValue(new EscherRGBProperty(EscherProperties.LINESTYLE__COLOR, lineStyleColor));
|
||||||
if (null == rgbProperty) {
|
|
||||||
rgbProperty = new EscherRGBProperty(EscherProperties.LINESTYLE__COLOR, lineStyleColor);
|
|
||||||
_optRecord.addEscherProperty(rgbProperty);
|
|
||||||
} else {
|
|
||||||
rgbProperty.setRgbColor(lineStyleColor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -153,13 +170,7 @@ public abstract class HSSFShape {
|
||||||
*/
|
*/
|
||||||
public void setLineStyleColor(int red, int green, int blue) {
|
public void setLineStyleColor(int red, int green, int blue) {
|
||||||
int lineStyleColor = ((blue) << 16) | ((green) << 8) | red;
|
int lineStyleColor = ((blue) << 16) | ((green) << 8) | red;
|
||||||
EscherRGBProperty rgbProperty = _optRecord.lookup(EscherProperties.LINESTYLE__COLOR);
|
setPropertyValue(new EscherRGBProperty(EscherProperties.LINESTYLE__COLOR, lineStyleColor));
|
||||||
if (null == rgbProperty) {
|
|
||||||
rgbProperty = new EscherRGBProperty(EscherProperties.LINESTYLE__COLOR, lineStyleColor);
|
|
||||||
_optRecord.addEscherProperty(rgbProperty);
|
|
||||||
} else {
|
|
||||||
rgbProperty.setRgbColor(lineStyleColor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -174,13 +185,7 @@ public abstract class HSSFShape {
|
||||||
* The color used to fill this shape.
|
* The color used to fill this shape.
|
||||||
*/
|
*/
|
||||||
public void setFillColor(int fillColor) {
|
public void setFillColor(int fillColor) {
|
||||||
EscherRGBProperty rgbProperty = _optRecord.lookup(EscherProperties.FILL__FILLCOLOR);
|
setPropertyValue(new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, fillColor));
|
||||||
if (null == rgbProperty) {
|
|
||||||
rgbProperty = new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, fillColor);
|
|
||||||
_optRecord.addEscherProperty(rgbProperty);
|
|
||||||
} else {
|
|
||||||
rgbProperty.setRgbColor(fillColor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -188,13 +193,7 @@ public abstract class HSSFShape {
|
||||||
*/
|
*/
|
||||||
public void setFillColor(int red, int green, int blue) {
|
public void setFillColor(int red, int green, int blue) {
|
||||||
int fillColor = ((blue) << 16) | ((green) << 8) | red;
|
int fillColor = ((blue) << 16) | ((green) << 8) | red;
|
||||||
EscherRGBProperty rgbProperty = _optRecord.lookup(EscherProperties.FILL__FILLCOLOR);
|
setPropertyValue(new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, fillColor));
|
||||||
if (null == rgbProperty) {
|
|
||||||
rgbProperty = new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, fillColor);
|
|
||||||
_optRecord.addEscherProperty(rgbProperty);
|
|
||||||
} else {
|
|
||||||
rgbProperty.setRgbColor(fillColor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -202,7 +201,7 @@ public abstract class HSSFShape {
|
||||||
*/
|
*/
|
||||||
public int getLineWidth() {
|
public int getLineWidth() {
|
||||||
EscherSimpleProperty property = _optRecord.lookup(EscherProperties.LINESTYLE__LINEWIDTH);
|
EscherSimpleProperty property = _optRecord.lookup(EscherProperties.LINESTYLE__LINEWIDTH);
|
||||||
return property.getPropertyValue();
|
return property == null ? LINEWIDTH_DEFAULT: property.getPropertyValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -212,13 +211,7 @@ public abstract class HSSFShape {
|
||||||
* @see HSSFShape#LINEWIDTH_ONE_PT
|
* @see HSSFShape#LINEWIDTH_ONE_PT
|
||||||
*/
|
*/
|
||||||
public void setLineWidth(int lineWidth) {
|
public void setLineWidth(int lineWidth) {
|
||||||
EscherSimpleProperty property = _optRecord.lookup(EscherProperties.LINESTYLE__LINEWIDTH);
|
setPropertyValue(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEWIDTH, lineWidth));
|
||||||
if (null == property) {
|
|
||||||
property = new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEWIDTH, lineWidth);
|
|
||||||
_optRecord.addEscherProperty(property);
|
|
||||||
} else {
|
|
||||||
property.setPropertyValue(lineWidth);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -227,7 +220,7 @@ public abstract class HSSFShape {
|
||||||
public int getLineStyle() {
|
public int getLineStyle() {
|
||||||
EscherSimpleProperty property = _optRecord.lookup(EscherProperties.LINESTYLE__LINEDASHING);
|
EscherSimpleProperty property = _optRecord.lookup(EscherProperties.LINESTYLE__LINEDASHING);
|
||||||
if (null == property){
|
if (null == property){
|
||||||
return -1;
|
return LINESTYLE_DEFAULT;
|
||||||
}
|
}
|
||||||
return property.getPropertyValue();
|
return property.getPropertyValue();
|
||||||
}
|
}
|
||||||
|
@ -238,13 +231,7 @@ public abstract class HSSFShape {
|
||||||
* @param lineStyle One of the constants in LINESTYLE_*
|
* @param lineStyle One of the constants in LINESTYLE_*
|
||||||
*/
|
*/
|
||||||
public void setLineStyle(int lineStyle) {
|
public void setLineStyle(int lineStyle) {
|
||||||
EscherSimpleProperty property = _optRecord.lookup(EscherProperties.LINESTYLE__LINEDASHING);
|
setPropertyValue(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEDASHING, lineStyle));
|
||||||
if (null == property) {
|
|
||||||
property = new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEDASHING, lineStyle);
|
|
||||||
_optRecord.addEscherProperty(property);
|
|
||||||
} else {
|
|
||||||
property.setPropertyValue(lineStyle);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -252,19 +239,29 @@ public abstract class HSSFShape {
|
||||||
*/
|
*/
|
||||||
public boolean isNoFill() {
|
public boolean isNoFill() {
|
||||||
EscherBoolProperty property = _optRecord.lookup(EscherProperties.FILL__NOFILLHITTEST);
|
EscherBoolProperty property = _optRecord.lookup(EscherProperties.FILL__NOFILLHITTEST);
|
||||||
return property.isTrue();
|
return property == null ? NO_FILL_DEFAULT : property.isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether this shape is filled or transparent.
|
* Sets whether this shape is filled or transparent.
|
||||||
*/
|
*/
|
||||||
public void setNoFill(boolean noFill) {
|
public void setNoFill(boolean noFill) {
|
||||||
EscherBoolProperty property = _optRecord.lookup(EscherProperties.FILL__NOFILLHITTEST);
|
setPropertyValue(new EscherBoolProperty(EscherProperties.FILL__NOFILLHITTEST, noFill ? 1 : 0));
|
||||||
if (null == property) {
|
}
|
||||||
property = new EscherBoolProperty(EscherProperties.FILL__NOFILLHITTEST, noFill ? 1 : 0);
|
|
||||||
|
protected void setPropertyValue(EscherProperty property){
|
||||||
|
if (null == _optRecord.lookup(property.getId())){
|
||||||
_optRecord.addEscherProperty(property);
|
_optRecord.addEscherProperty(property);
|
||||||
} else {
|
} else {
|
||||||
property.setPropertyValue(noFill ? 1 : 0);
|
int i=0;
|
||||||
|
for (EscherProperty prop: _optRecord.getEscherProperties()){
|
||||||
|
if (prop.getId() == property.getId()){
|
||||||
|
_optRecord.getEscherProperties().remove(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
_optRecord.addEscherProperty(property);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.apache.poi.hssf.usermodel.drawing;
|
package org.apache.poi.hssf.usermodel.drawing;
|
||||||
|
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFPicture;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
|
import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,6 +10,7 @@ import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
|
||||||
public enum HSSFShapeType {
|
public enum HSSFShapeType {
|
||||||
NOT_PRIMITIVE((short)0x0, null, (short)0),
|
NOT_PRIMITIVE((short)0x0, null, (short)0),
|
||||||
RECTANGLE((short)0x1, HSSFSimpleShape.class, HSSFSimpleShape.OBJECT_TYPE_RECTANGLE),
|
RECTANGLE((short)0x1, HSSFSimpleShape.class, HSSFSimpleShape.OBJECT_TYPE_RECTANGLE),
|
||||||
|
PICTURE((short)0x004B, HSSFPicture.class, HSSFSimpleShape.OBJECT_TYPE_PICTURE),
|
||||||
ROUND_RECTANGLE((short)0x2, null, null);
|
ROUND_RECTANGLE((short)0x2, null, null);
|
||||||
|
|
||||||
private Short type;
|
private Short type;
|
||||||
|
|
|
@ -43,6 +43,8 @@ import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FilenameFilter;
|
import java.io.FilenameFilter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -192,6 +194,40 @@ public class TestDrawingAggregate extends TestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testBuildBaseTree(){
|
||||||
|
EscherAggregate agg = new EscherAggregate();
|
||||||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||||||
|
HSSFSheet sheet = wb.createSheet();
|
||||||
|
|
||||||
|
HSSFPatriarch drawing = sheet.createDrawingPatriarch();
|
||||||
|
EscherAggregate agg1 = HSSFTestHelper.getEscherAggregate(drawing);
|
||||||
|
callConvertPatriarch(agg1);
|
||||||
|
agg1.setPatriarch(null);
|
||||||
|
|
||||||
|
agg.setPatriarch(null);
|
||||||
|
|
||||||
|
byte[] aggS = agg.serialize();
|
||||||
|
byte []agg1S = agg1.serialize();
|
||||||
|
|
||||||
|
assertEquals(aggS.length, agg1S.length);
|
||||||
|
assertTrue(Arrays.equals(aggS, agg1S));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void callConvertPatriarch(EscherAggregate agg) {
|
||||||
|
Method method = null;
|
||||||
|
try {
|
||||||
|
method = agg.getClass().getDeclaredMethod("convertPatriarch", HSSFPatriarch.class);
|
||||||
|
method.setAccessible(true);
|
||||||
|
method.invoke(agg, agg.getPatriarch());
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (NoSuchMethodException e) {
|
||||||
|
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
|
||||||
|
} catch (InvocationTargetException e) {
|
||||||
|
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* when reading incomplete data ensure that the serialized bytes
|
* when reading incomplete data ensure that the serialized bytes
|
||||||
match the source
|
match the source
|
||||||
|
|
|
@ -3,6 +3,9 @@ package org.apache.poi.hssf.model;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import org.apache.poi.ddf.*;
|
import org.apache.poi.ddf.*;
|
||||||
import org.apache.poi.hssf.HSSFTestDataSamples;
|
import org.apache.poi.hssf.HSSFTestDataSamples;
|
||||||
|
import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
|
||||||
|
import org.apache.poi.hssf.record.EscherAggregate;
|
||||||
|
import org.apache.poi.hssf.record.ObjRecord;
|
||||||
import org.apache.poi.hssf.usermodel.*;
|
import org.apache.poi.hssf.usermodel.*;
|
||||||
import org.apache.poi.util.HexDump;
|
import org.apache.poi.util.HexDump;
|
||||||
|
|
||||||
|
@ -72,6 +75,38 @@ public class TestDrawingShapes extends TestCase{
|
||||||
assertEquals(true,
|
assertEquals(true,
|
||||||
((EscherBoolProperty)opt.lookup(EscherProperties.GROUPSHAPE__PRINT)).isTrue());
|
((EscherBoolProperty)opt.lookup(EscherProperties.GROUPSHAPE__PRINT)).isTrue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testDefaultPictureSettings(){
|
||||||
|
HSSFPicture picture = new HSSFPicture(null, new HSSFClientAnchor());
|
||||||
|
assertEquals(picture.getLineWidth(), HSSFShape.LINEWIDTH_DEFAULT);
|
||||||
|
assertEquals(picture.getFillColor(), HSSFShape.FILL__FILLCOLOR_DEFAULT);
|
||||||
|
assertEquals(picture.getLineStyle(), HSSFShape.LINESTYLE_SOLID);
|
||||||
|
assertEquals(picture.getLineStyleColor(), HSSFShape.LINESTYLE__COLOR_DEFAULT);
|
||||||
|
assertEquals(picture.isNoFill(), false);
|
||||||
|
assertEquals(picture.getPictureIndex(), -1);//not set yet
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No NullPointerException should appear
|
||||||
|
*/
|
||||||
|
public void testDefaultSettingsWithEmptyContainer(){
|
||||||
|
EscherContainerRecord container = new EscherContainerRecord();
|
||||||
|
EscherOptRecord opt = new EscherOptRecord();
|
||||||
|
opt.setRecordId(EscherOptRecord.RECORD_ID);
|
||||||
|
container.addChildRecord(opt);
|
||||||
|
ObjRecord obj = new ObjRecord();
|
||||||
|
CommonObjectDataSubRecord cod = new CommonObjectDataSubRecord();
|
||||||
|
cod.setObjectType(HSSFSimpleShape.OBJECT_TYPE_PICTURE);
|
||||||
|
obj.addSubRecord(cod);
|
||||||
|
HSSFPicture picture = new HSSFPicture(container, obj);
|
||||||
|
|
||||||
|
assertEquals(picture.getLineWidth(), HSSFShape.LINEWIDTH_DEFAULT);
|
||||||
|
assertEquals(picture.getFillColor(), HSSFShape.FILL__FILLCOLOR_DEFAULT);
|
||||||
|
assertEquals(picture.getLineStyle(), HSSFShape.LINESTYLE_DEFAULT);
|
||||||
|
assertEquals(picture.getLineStyleColor(), HSSFShape.LINESTYLE__COLOR_DEFAULT);
|
||||||
|
assertEquals(picture.isNoFill(), HSSFShape.NO_FILL_DEFAULT);
|
||||||
|
assertEquals(picture.getPictureIndex(), -1);//not set yet
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* create a rectangle, save the workbook, read back and verify that all shape properties are there
|
* create a rectangle, save the workbook, read back and verify that all shape properties are there
|
||||||
*/
|
*/
|
||||||
|
@ -139,6 +174,28 @@ public class TestDrawingShapes extends TestCase{
|
||||||
assertEquals(rectangle2.getAnchor().getDy1(), 4);
|
assertEquals(rectangle2.getAnchor().getDy1(), 4);
|
||||||
assertEquals(rectangle2.getAnchor().getDy2(), 5);
|
assertEquals(rectangle2.getAnchor().getDy2(), 5);
|
||||||
assertEquals(rectangle2.isNoFill(), false);
|
assertEquals(rectangle2.isNoFill(), false);
|
||||||
|
|
||||||
|
HSSFSimpleShape rect3 = drawing.createSimpleShape(new HSSFClientAnchor());
|
||||||
|
rect3.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);
|
||||||
|
wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
|
||||||
|
|
||||||
|
drawing = wb.getSheetAt(0).getDrawingPatriarch();
|
||||||
|
assertEquals(drawing.getChildren().size(), 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testReadExistingImage(){
|
||||||
|
HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("drawings.xls");
|
||||||
|
HSSFSheet sheet = wb.getSheet("pictures");
|
||||||
|
HSSFPatriarch drawing = sheet.getDrawingPatriarch();
|
||||||
|
assertEquals(1, drawing.getChildren().size());
|
||||||
|
HSSFPicture picture = (HSSFPicture) drawing.getChildren().get(0);
|
||||||
|
|
||||||
|
assertEquals(picture.getPictureIndex(), 1);
|
||||||
|
assertEquals(picture.getLineStyleColor(), HSSFShape.LINESTYLE__COLOR_DEFAULT);
|
||||||
|
assertEquals(picture.getFillColor(), 0x5DC943);
|
||||||
|
assertEquals(picture.getLineWidth(), HSSFShape.LINEWIDTH_DEFAULT);
|
||||||
|
assertEquals(picture.getLineStyle(), HSSFShape.LINESTYLE_DEFAULT);
|
||||||
|
assertEquals(picture.isNoFill(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -157,4 +214,41 @@ public class TestDrawingShapes extends TestCase{
|
||||||
assertEquals(shape.getLineWidth(), HSSFShape.LINEWIDTH_ONE_PT*2);
|
assertEquals(shape.getLineWidth(), HSSFShape.LINEWIDTH_ONE_PT*2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testShapeIds() {
|
||||||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||||||
|
HSSFSheet sheet1 = wb.createSheet();
|
||||||
|
HSSFPatriarch patriarch1 = sheet1.createDrawingPatriarch();
|
||||||
|
for(int i = 0; i < 2; i++) {
|
||||||
|
patriarch1.createSimpleShape(new HSSFClientAnchor());
|
||||||
|
}
|
||||||
|
|
||||||
|
wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
|
||||||
|
sheet1 = wb.getSheetAt(0);
|
||||||
|
patriarch1 = sheet1.getDrawingPatriarch();
|
||||||
|
|
||||||
|
EscherAggregate agg1 = HSSFTestHelper.getEscherAggregate(patriarch1);
|
||||||
|
// last shape ID cached in EscherDgRecord
|
||||||
|
EscherDgRecord dg1 =
|
||||||
|
agg1.getEscherContainer().getChildById(EscherDgRecord.RECORD_ID);
|
||||||
|
assertEquals(1026, dg1.getLastMSOSPID());
|
||||||
|
|
||||||
|
// iterate over shapes and check shapeId
|
||||||
|
EscherContainerRecord spgrContainer =
|
||||||
|
agg1.getEscherContainer().getChildContainers().get(0);
|
||||||
|
// root spContainer + 2 spContainers for shapes
|
||||||
|
assertEquals(3, spgrContainer.getChildRecords().size());
|
||||||
|
|
||||||
|
EscherSpRecord sp0 =
|
||||||
|
((EscherContainerRecord)spgrContainer.getChild(0)).getChildById(EscherSpRecord.RECORD_ID);
|
||||||
|
assertEquals(1024, sp0.getShapeId());
|
||||||
|
|
||||||
|
EscherSpRecord sp1 =
|
||||||
|
((EscherContainerRecord)spgrContainer.getChild(1)).getChildById(EscherSpRecord.RECORD_ID);
|
||||||
|
assertEquals(1025, sp1.getShapeId());
|
||||||
|
|
||||||
|
EscherSpRecord sp2 =
|
||||||
|
((EscherContainerRecord)spgrContainer.getChild(2)).getChildById(EscherSpRecord.RECORD_ID);
|
||||||
|
assertEquals(1026, sp2.getShapeId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
package org.apache.poi.hssf.model;
|
package org.apache.poi.hssf.model;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import org.apache.poi.ddf.EscherChildAnchorRecord;
|
import org.apache.poi.ddf.*;
|
||||||
import org.apache.poi.ddf.EscherClientAnchorRecord;
|
import org.apache.poi.hssf.HSSFTestDataSamples;
|
||||||
import org.apache.poi.ddf.EscherContainerRecord;
|
|
||||||
import org.apache.poi.hssf.usermodel.*;
|
import org.apache.poi.hssf.usermodel.*;
|
||||||
|
import org.apache.poi.util.HexDump;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Evgeniy Berlog
|
* @author Evgeniy Berlog
|
||||||
|
@ -12,6 +12,63 @@ import org.apache.poi.hssf.usermodel.*;
|
||||||
*/
|
*/
|
||||||
public class TestHSSFAnchor extends TestCase {
|
public class TestHSSFAnchor extends TestCase {
|
||||||
|
|
||||||
|
public void testDefaultValues(){
|
||||||
|
HSSFClientAnchor clientAnchor = new HSSFClientAnchor();
|
||||||
|
assertEquals(clientAnchor.getAnchorType(), 0);
|
||||||
|
assertEquals(clientAnchor.getCol1(), 0);
|
||||||
|
assertEquals(clientAnchor.getCol2(), 0);
|
||||||
|
assertEquals(clientAnchor.getDx1(), 0);
|
||||||
|
assertEquals(clientAnchor.getDx2(), 0);
|
||||||
|
assertEquals(clientAnchor.getDy1(), 0);
|
||||||
|
assertEquals(clientAnchor.getDy2(), 0);
|
||||||
|
assertEquals(clientAnchor.getRow1(), 0);
|
||||||
|
assertEquals(clientAnchor.getRow2(), 0);
|
||||||
|
|
||||||
|
clientAnchor = new HSSFClientAnchor(new EscherClientAnchorRecord());
|
||||||
|
assertEquals(clientAnchor.getAnchorType(), 0);
|
||||||
|
assertEquals(clientAnchor.getCol1(), 0);
|
||||||
|
assertEquals(clientAnchor.getCol2(), 0);
|
||||||
|
assertEquals(clientAnchor.getDx1(), 0);
|
||||||
|
assertEquals(clientAnchor.getDx2(), 0);
|
||||||
|
assertEquals(clientAnchor.getDy1(), 0);
|
||||||
|
assertEquals(clientAnchor.getDy2(), 0);
|
||||||
|
assertEquals(clientAnchor.getRow1(), 0);
|
||||||
|
assertEquals(clientAnchor.getRow2(), 0);
|
||||||
|
|
||||||
|
HSSFChildAnchor childAnchor = new HSSFChildAnchor();
|
||||||
|
assertEquals(childAnchor.getDx1(), 0);
|
||||||
|
assertEquals(childAnchor.getDx2(), 0);
|
||||||
|
assertEquals(childAnchor.getDy1(), 0);
|
||||||
|
assertEquals(childAnchor.getDy2(), 0);
|
||||||
|
|
||||||
|
childAnchor = new HSSFChildAnchor(new EscherChildAnchorRecord());
|
||||||
|
assertEquals(childAnchor.getDx1(), 0);
|
||||||
|
assertEquals(childAnchor.getDx2(), 0);
|
||||||
|
assertEquals(childAnchor.getDy1(), 0);
|
||||||
|
assertEquals(childAnchor.getDy2(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCorrectOrderInSpContainer(){
|
||||||
|
HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("drawings.xls");
|
||||||
|
HSSFSheet sheet = wb.getSheet("pictures");
|
||||||
|
HSSFPatriarch drawing = sheet.getDrawingPatriarch();
|
||||||
|
|
||||||
|
HSSFSimpleShape rectangle = (HSSFSimpleShape) drawing.getChildren().get(0);
|
||||||
|
rectangle.setShapeType(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);
|
||||||
|
|
||||||
|
assertEquals(rectangle.getEscherContainer().getChild(0).getRecordId(), EscherSpRecord.RECORD_ID);
|
||||||
|
assertEquals(rectangle.getEscherContainer().getChild(1).getRecordId(), EscherOptRecord.RECORD_ID);
|
||||||
|
assertEquals(" " + HexDump.toHex(rectangle.getEscherContainer().getChild(2).getRecordId()) + " ", rectangle.getEscherContainer().getChild(2).getRecordId(), EscherClientAnchorRecord.RECORD_ID);
|
||||||
|
assertEquals(rectangle.getEscherContainer().getChild(3).getRecordId(), EscherClientDataRecord.RECORD_ID);
|
||||||
|
|
||||||
|
rectangle.setAnchor(new HSSFClientAnchor());
|
||||||
|
|
||||||
|
assertEquals(rectangle.getEscherContainer().getChild(0).getRecordId(), EscherSpRecord.RECORD_ID);
|
||||||
|
assertEquals(rectangle.getEscherContainer().getChild(1).getRecordId(), EscherOptRecord.RECORD_ID);
|
||||||
|
assertEquals(" " + HexDump.toHex(rectangle.getEscherContainer().getChild(2).getRecordId()) + " ", rectangle.getEscherContainer().getChild(2).getRecordId(), EscherClientAnchorRecord.RECORD_ID);
|
||||||
|
assertEquals(rectangle.getEscherContainer().getChild(3).getRecordId(), EscherClientDataRecord.RECORD_ID);
|
||||||
|
}
|
||||||
|
|
||||||
public void testCreateClientAnchorFromContainer(){
|
public void testCreateClientAnchorFromContainer(){
|
||||||
EscherContainerRecord container = new EscherContainerRecord();
|
EscherContainerRecord container = new EscherContainerRecord();
|
||||||
EscherClientAnchorRecord escher = new EscherClientAnchorRecord();
|
EscherClientAnchorRecord escher = new EscherClientAnchorRecord();
|
||||||
|
@ -206,4 +263,116 @@ public class TestHSSFAnchor extends TestCase {
|
||||||
assertEquals(anchor.getDy2(), 118);
|
assertEquals(anchor.getDy2(), 118);
|
||||||
assertEquals(escher.getDy2(), 118);
|
assertEquals(escher.getDy2(), 118);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testEqualsToSelf(){
|
||||||
|
HSSFClientAnchor clientAnchor = new HSSFClientAnchor(0, 1, 2, 3, (short)4, 5, (short)6, 7);
|
||||||
|
assertEquals(clientAnchor, clientAnchor);
|
||||||
|
|
||||||
|
HSSFChildAnchor childAnchor = new HSSFChildAnchor(0, 1, 2, 3);
|
||||||
|
assertEquals(childAnchor, childAnchor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testPassIncompatibleTypeIsFalse(){
|
||||||
|
HSSFClientAnchor clientAnchor = new HSSFClientAnchor(0, 1, 2, 3, (short)4, 5, (short)6, 7);
|
||||||
|
assertNotSame(clientAnchor, "wrongType");
|
||||||
|
|
||||||
|
HSSFChildAnchor childAnchor = new HSSFChildAnchor(0, 1, 2, 3);
|
||||||
|
assertNotSame(childAnchor, "wrongType");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testNullReferenceIsFalse() {
|
||||||
|
HSSFClientAnchor clientAnchor = new HSSFClientAnchor(0, 1, 2, 3, (short)4, 5, (short)6, 7);
|
||||||
|
assertFalse("Passing null to equals should return false", clientAnchor.equals(null));
|
||||||
|
|
||||||
|
HSSFChildAnchor childAnchor = new HSSFChildAnchor(0, 1, 2, 3);
|
||||||
|
assertFalse("Passing null to equals should return false", childAnchor.equals(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testEqualsIsReflexiveIsSymmetric() {
|
||||||
|
HSSFClientAnchor clientAnchor1 = new HSSFClientAnchor(0, 1, 2, 3, (short)4, 5, (short)6, 7);
|
||||||
|
HSSFClientAnchor clientAnchor2 = new HSSFClientAnchor(0, 1, 2, 3, (short)4, 5, (short)6, 7);
|
||||||
|
|
||||||
|
assertTrue(clientAnchor1.equals(clientAnchor2));
|
||||||
|
assertTrue(clientAnchor1.equals(clientAnchor2));
|
||||||
|
|
||||||
|
HSSFChildAnchor childAnchor1 = new HSSFChildAnchor(0, 1, 2, 3);
|
||||||
|
HSSFChildAnchor childAnchor2 = new HSSFChildAnchor(0, 1, 2, 3);
|
||||||
|
|
||||||
|
assertTrue(childAnchor1.equals(childAnchor2));
|
||||||
|
assertTrue(childAnchor2.equals(childAnchor1));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testEqualsValues(){
|
||||||
|
HSSFClientAnchor clientAnchor1 = new HSSFClientAnchor(0, 1, 2, 3, (short)4, 5, (short)6, 7);
|
||||||
|
HSSFClientAnchor clientAnchor2 = new HSSFClientAnchor(0, 1, 2, 3, (short)4, 5, (short)6, 7);
|
||||||
|
assertEquals(clientAnchor1, clientAnchor2);
|
||||||
|
|
||||||
|
clientAnchor2.setDx1(10);
|
||||||
|
assertNotSame(clientAnchor1, clientAnchor2);
|
||||||
|
clientAnchor2.setDx1(0);
|
||||||
|
assertEquals(clientAnchor1, clientAnchor2);
|
||||||
|
|
||||||
|
clientAnchor2.setDy1(10);
|
||||||
|
assertNotSame(clientAnchor1, clientAnchor2);
|
||||||
|
clientAnchor2.setDy1(1);
|
||||||
|
assertEquals(clientAnchor1, clientAnchor2);
|
||||||
|
|
||||||
|
clientAnchor2.setDx2(10);
|
||||||
|
assertNotSame(clientAnchor1, clientAnchor2);
|
||||||
|
clientAnchor2.setDx2(2);
|
||||||
|
assertEquals(clientAnchor1, clientAnchor2);
|
||||||
|
|
||||||
|
clientAnchor2.setDy2(10);
|
||||||
|
assertNotSame(clientAnchor1, clientAnchor2);
|
||||||
|
clientAnchor2.setDy2(3);
|
||||||
|
assertEquals(clientAnchor1, clientAnchor2);
|
||||||
|
|
||||||
|
clientAnchor2.setCol1(10);
|
||||||
|
assertNotSame(clientAnchor1, clientAnchor2);
|
||||||
|
clientAnchor2.setCol1(4);
|
||||||
|
assertEquals(clientAnchor1, clientAnchor2);
|
||||||
|
|
||||||
|
clientAnchor2.setRow1(10);
|
||||||
|
assertNotSame(clientAnchor1, clientAnchor2);
|
||||||
|
clientAnchor2.setRow1(5);
|
||||||
|
assertEquals(clientAnchor1, clientAnchor2);
|
||||||
|
|
||||||
|
clientAnchor2.setCol2(10);
|
||||||
|
assertNotSame(clientAnchor1, clientAnchor2);
|
||||||
|
clientAnchor2.setCol2(6);
|
||||||
|
assertEquals(clientAnchor1, clientAnchor2);
|
||||||
|
|
||||||
|
clientAnchor2.setRow2(10);
|
||||||
|
assertNotSame(clientAnchor1, clientAnchor2);
|
||||||
|
clientAnchor2.setRow2(7);
|
||||||
|
assertEquals(clientAnchor1, clientAnchor2);
|
||||||
|
|
||||||
|
clientAnchor2.setAnchorType(3);
|
||||||
|
assertNotSame(clientAnchor1, clientAnchor2);
|
||||||
|
clientAnchor2.setAnchorType(0);
|
||||||
|
assertEquals(clientAnchor1, clientAnchor2);
|
||||||
|
|
||||||
|
HSSFChildAnchor childAnchor1 = new HSSFChildAnchor(0, 1, 2, 3);
|
||||||
|
HSSFChildAnchor childAnchor2 = new HSSFChildAnchor(0, 1, 2, 3);
|
||||||
|
|
||||||
|
childAnchor1.setDx1(10);
|
||||||
|
assertNotSame(childAnchor1, childAnchor2);
|
||||||
|
childAnchor1.setDx1(0);
|
||||||
|
assertEquals(childAnchor1, childAnchor2);
|
||||||
|
|
||||||
|
childAnchor2.setDy1(10);
|
||||||
|
assertNotSame(childAnchor1, childAnchor2);
|
||||||
|
childAnchor2.setDy1(1);
|
||||||
|
assertEquals(childAnchor1, childAnchor2);
|
||||||
|
|
||||||
|
childAnchor2.setDx2(10);
|
||||||
|
assertNotSame(childAnchor1, childAnchor2);
|
||||||
|
childAnchor2.setDx2(2);
|
||||||
|
assertEquals(childAnchor1, childAnchor2);
|
||||||
|
|
||||||
|
childAnchor2.setDy2(10);
|
||||||
|
assertNotSame(childAnchor1, childAnchor2);
|
||||||
|
childAnchor2.setDy2(3);
|
||||||
|
assertEquals(childAnchor1, childAnchor2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue