jxl.write.biff.SetupRecord 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) 2002 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.write.biff;
import jxl.common.Logger;
import jxl.SheetSettings;
import jxl.biff.DoubleHelper;
import jxl.biff.IntegerHelper;
import jxl.biff.Type;
import jxl.biff.WritableRecordData;
import jxl.format.PageOrder;
import jxl.format.PageOrientation;
import jxl.format.PaperSize;
/**
* Stores the options and measurements from the Page Setup dialog box
*/
class SetupRecord extends WritableRecordData
{
/**
* The logger
*/
Logger logger = Logger.getLogger(SetupRecord.class);
/**
* The binary data for output to file
*/
private byte[] data;
/**
* The header margin
*/
private double headerMargin;
/**
* The footer margin
*/
private double footerMargin;
/**
* The page orientation
*/
private PageOrientation orientation;
/**
* The page order
*/
private PageOrder order;
/**
* The paper size
*/
private int paperSize;
/**
* The scale factor
*/
private int scaleFactor;
/**
* The page start
*/
private int pageStart;
/**
* The fit width
*/
private int fitWidth;
/**
* The fit height
*/
private int fitHeight;
/**
* The horizontal print resolution
*/
private int horizontalPrintResolution;
/**
* The vertical print resolution
*/
private int verticalPrintResolution;
/**
* The number of copies
*/
private int copies;
/**
* Indicates whether the setup data should be initiliazed in the setup
* box
*/
private boolean initialized;
/**
* Constructor, taking the sheet settings. This object just
* takes the various fields from the bean in which it is interested
*
* @param the sheet settings
*/
public SetupRecord(SheetSettings s)
{
super(Type.SETUP);
orientation = s.getOrientation();
order = s.getPageOrder();
headerMargin = s.getHeaderMargin();
footerMargin = s.getFooterMargin();
paperSize = s.getPaperSize().getValue();
horizontalPrintResolution = s.getHorizontalPrintResolution();
verticalPrintResolution = s.getVerticalPrintResolution();
fitWidth = s.getFitWidth();
fitHeight = s.getFitHeight();
pageStart = s.getPageStart();
scaleFactor = s.getScaleFactor();
copies = s.getCopies();
initialized = true;
}
/**
* Sets the orientation
*
* @param o the orientation
*/
public void setOrientation(PageOrientation o)
{
orientation = o;
}
/**
* Sets the page order
*
* @param o
*/
public void setOrder(PageOrder o)
{
order = o;
}
/**
* Sets the header and footer margins
*
* @param hm the header margin
* @param fm the footer margin
*/
public void setMargins(double hm, double fm)
{
headerMargin = hm;
footerMargin = fm;
}
/**
* Sets the paper size
*
* @param ps the paper size
*/
public void setPaperSize(PaperSize ps)
{
paperSize = ps.getValue();
}
/**
* Gets the binary data for output to file
*
* @return the binary data
*/
public byte[] getData()
{
data = new byte[34];
// Paper size
IntegerHelper.getTwoBytes(paperSize, data, 0);
// Scale factor
IntegerHelper.getTwoBytes(scaleFactor, data, 2);
// Page start
IntegerHelper.getTwoBytes(pageStart, data, 4);
// Fit width
IntegerHelper.getTwoBytes(fitWidth, data, 6);
// Fit height
IntegerHelper.getTwoBytes(fitHeight, data, 8);
// grbit
int options = 0;
if (order == PageOrder.RIGHT_THEN_DOWN)
{
options |= 0x01;
}
if (orientation == PageOrientation.PORTRAIT)
{
options |= 0x02;
}
if (pageStart != 0)
{
options |= 0x80;
}
if (!initialized)
{
options |= 0x04;
}
IntegerHelper.getTwoBytes(options, data, 10);
// print resolution
IntegerHelper.getTwoBytes(horizontalPrintResolution, data, 12);
// vertical print resolution
IntegerHelper.getTwoBytes(verticalPrintResolution, data, 14);
// header margin
DoubleHelper.getIEEEBytes(headerMargin, data, 16);
// footer margin
DoubleHelper.getIEEEBytes(footerMargin, data, 24);
// Number of copies
IntegerHelper.getTwoBytes(copies, data, 32);
return data;
}
}