diff options
Diffstat (limited to 'xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java')
-rw-r--r-- | xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java new file mode 100644 index 000000000000..14426241419c --- /dev/null +++ b/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/ColInfo.java @@ -0,0 +1,157 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +package org.openoffice.xmerge.converter.xml.sxc.pexcel.records; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import org.openoffice.xmerge.util.Debug; +import org.openoffice.xmerge.util.EndianConverter; +import org.openoffice.xmerge.converter.xml.sxc.pexcel.PocketExcelConstants; + +/** + * ColInfo describes the formatting for a column + * + */ +public class ColInfo implements BIFFRecord { + + private byte[] colFirst = new byte[2]; // first column this formatting applies to + private byte[] colLast = new byte[2]; // last column this formatting applies to + private byte[] colDX = new byte[2]; // column width + private byte[] ixfe = new byte[2]; // index for formatting + private byte grbit; // options flags + private float scale = (float) 2.5; // 1.798; + + /** + * Constructs a pocket Excel Document from the + * <code>InputStream</code> and assigns it the document name passed in + * + * @param colFirst the first column this formatting applies to + * @param colLast last column this formatting applies to + * @param colDX column width + * @param ixfe index for formatting + */ + public ColInfo(int colFirst, int colLast, int colDX, int ixfe) { + this.colFirst = EndianConverter.writeShort((short)colFirst); + this.colLast = EndianConverter.writeShort((short)colLast); + colDX *= scale; + this.colDX = EndianConverter.writeShort((short)colDX); + this.ixfe = EndianConverter.writeShort((short)ixfe); + this.grbit = 0x00; + } + + /** + * Construct a ColInfo from the InputStream + * + * @param is the <code>Inputstream</code> to read from + */ + public ColInfo(InputStream is) throws IOException { + read(is); + } + + /** + * Reads ColInfo record from the InputStream + * + * @param input the InputStream to read from + * @return the number of bytes read + */ + public int read(InputStream input) throws IOException { + + int numOfBytesRead = input.read(colFirst); + numOfBytesRead += input.read(colLast); + numOfBytesRead += input.read(colDX); + short scaledDX = (short) (EndianConverter.readShort(colDX) / scale); + colDX = EndianConverter.writeShort(scaledDX); + numOfBytesRead += input.read(ixfe); + grbit = (byte) input.read(); + numOfBytesRead ++; + + Debug.log(Debug.TRACE,"\tcolFirst : "+ EndianConverter.readShort(colFirst) + + " colLast : " + EndianConverter.readShort(colLast) + + " colDX : " + EndianConverter.readShort(colDX) + + " ixfe : " + EndianConverter.readShort(ixfe) + + " grbit : " + grbit); + + return numOfBytesRead; + } + + /** + * Get the hex code for this particular <code>BIFFRecord</code> + * + * @return the hex code for <code>ColInfo</code> + */ + public short getBiffType() { + return PocketExcelConstants.COLINFO; + } + /** + * Get the width of this column + * + * @return the width of this column + */ + public short getColWidth() { + return EndianConverter.readShort(colDX); + } + + /** + * Get the first column that this formatting applies to. + * + * @return The first column. + */ + public short getFirst() { + return EndianConverter.readShort(colFirst); + } + + /** + * Get the last column that this formatting applies to. + * + * @return The last column. + */ + public short getLast() { + return EndianConverter.readShort(colLast); + } + + /** + * Writes a ColInfo to the specified <code>Outputstream</code> + * + * @param output the <code>OutputStream</code> to write to + */ + public void write(OutputStream output) throws IOException { + + output.write(getBiffType()); + output.write(colFirst); + output.write(colLast); + output.write(colDX); + output.write(ixfe); + output.write(grbit); + + Debug.log(Debug.TRACE,"Writing ColInfo record"); + + } + +} |