jxl.biff.drawing.ClientAnchor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jxl Show documentation
Show all versions of jxl Show documentation
JExcelApi is a java library which provides the ability to read, write, and modify Microsoft Excel spreadsheets.
The newest version!
/*********************************************************************
*
* Copyright (C) 2003 Andrew Khan
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
package jxl.biff.drawing;
import jxl.common.Logger;
import jxl.biff.IntegerHelper;
/**
* The client anchor record
*/
class ClientAnchor extends EscherAtom
{
/**
* The logger
*/
private static final Logger logger = Logger.getLogger(ClientAnchor.class);
/**
* The binary data
*/
private byte[] data;
/**
* The properties
*/
private int properties;
/**
* The x1 position
*/
private double x1;
/**
* The y1 position
*/
private double y1;
/**
* The x2 position
*/
private double x2;
/**
* The y2 position
*/
private double y2;
/**
* Constructor
*
* @param erd the escher record data
*/
public ClientAnchor(EscherRecordData erd)
{
super(erd);
byte[] bytes = getBytes();
// The properties
properties = IntegerHelper.getInt(bytes[0], bytes[1]);
// The x1 cell
int x1Cell = IntegerHelper.getInt(bytes[2], bytes[3]);
int x1Fraction = IntegerHelper.getInt(bytes[4], bytes[5]);
x1 = x1Cell + (double) x1Fraction / (double) 1024;
// The y1 cell
int y1Cell = IntegerHelper.getInt(bytes[6], bytes[7]);
int y1Fraction = IntegerHelper.getInt(bytes[8], bytes[9]);
y1 = y1Cell + (double) y1Fraction / (double) 256;
// The x2 cell
int x2Cell = IntegerHelper.getInt(bytes[10], bytes[11]);
int x2Fraction = IntegerHelper.getInt(bytes[12], bytes[13]);
x2 = x2Cell + (double) x2Fraction / (double) 1024;
// The y1 cell
int y2Cell = IntegerHelper.getInt(bytes[14], bytes[15]);
int y2Fraction = IntegerHelper.getInt(bytes[16], bytes[17]);
y2 = y2Cell + (double) y2Fraction / (double) 256;
}
/**
* Constructor
*
* @param x1 the x1 position
* @param y1 the y1 position
* @param x2 the x2 position
* @param y2 the y2 position
* @param props the anchor properties
*/
public ClientAnchor(double x1, double y1, double x2, double y2, int props)
{
super(EscherRecordType.CLIENT_ANCHOR);
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
properties = props;
}
/**
* Gets the client anchor data
*
* @return the data
*/
byte[] getData()
{
data = new byte[18];
IntegerHelper.getTwoBytes(properties, data, 0);
// The x1 cell
IntegerHelper.getTwoBytes((int) x1, data, 2);
// The x1 fraction into the cell 0-1024
int x1fraction = (int) ((x1 - (int) x1) * 1024);
IntegerHelper.getTwoBytes(x1fraction, data, 4);
// The y1 cell
IntegerHelper.getTwoBytes((int) y1, data, 6);
// The y1 fraction into the cell 0-256
int y1fraction = (int) ((y1 - (int) y1) * 256);
IntegerHelper.getTwoBytes(y1fraction, data, 8);
// The x2 cell
IntegerHelper.getTwoBytes((int) x2, data, 10);
// The x2 fraction into the cell 0-1024
int x2fraction = (int) ((x2 - (int) x2) * 1024);
IntegerHelper.getTwoBytes(x2fraction, data, 12);
// The y2 cell
IntegerHelper.getTwoBytes((int) y2, data, 14);
// The y2 fraction into the cell 0-256
int y2fraction = (int) ((y2 - (int) y2) * 256);
IntegerHelper.getTwoBytes(y2fraction, data, 16);
return setHeaderData(data);
}
/**
* Accessor for the x1 position
*
* @return the x1 position
*/
double getX1()
{
return x1;
}
/**
* Accessor for the y1 position
*
* @return the y1 position
*/
double getY1()
{
return y1;
}
/**
* Accessor for the x2 position
*
* @return the x2 position
*/
double getX2()
{
return x2;
}
/**
* Accessor for the y2 position
*
* @return the y2 position
*/
double getY2()
{
return y2;
}
/**
* Accessor for the anchor properties
*/
int getProperties()
{
return properties;
}
}