From 538e0edd02f27a0ccd49c24125d4bae6c1d8033b Mon Sep 17 00:00:00 2001 From: Glen Stampoultzis Date: Mon, 25 Mar 2002 10:08:16 +0000 Subject: [PATCH] Area format record git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352280 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/record/AreaFormatRecord.java | 353 ++++++++++++++++++ .../apache/poi/hssf/record/AreaRecord.java | 2 +- .../apache/poi/hssf/record/AxisRecord.java | 10 +- .../org/apache/poi/hssf/record/BarRecord.java | 6 +- .../hssf/record/CategorySeriesAxisRecord.java | 8 +- .../apache/poi/hssf/record/ChartRecord.java | 8 +- .../org/apache/poi/hssf/record/DatRecord.java | 2 +- .../poi/hssf/record/DataFormatRecord.java | 8 +- .../DefaultDataLabelTextPropertiesRecord.java | 2 +- .../poi/hssf/record/FontBasisRecord.java | 10 +- .../poi/hssf/record/FontIndexRecord.java | 2 +- .../apache/poi/hssf/record/FrameRecord.java | 4 +- .../apache/poi/hssf/record/LegendRecord.java | 14 +- .../hssf/record/NumberFormatIndexRecord.java | 2 +- .../poi/hssf/record/PlotGrowthRecord.java | 4 +- .../poi/hssf/record/SeriesListRecord.java | 2 +- .../apache/poi/hssf/record/SeriesRecord.java | 12 +- .../apache/poi/hssf/record/UnitsRecord.java | 2 +- .../poi/hssf/record/ValueRangeRecord.java | 12 +- .../definitions/area_format_record.xml | 17 + .../poi/hssf/record/TestAreaFormatRecord.java | 125 +++++++ 21 files changed, 550 insertions(+), 55 deletions(-) create mode 100644 src/java/org/apache/poi/hssf/record/AreaFormatRecord.java create mode 100644 src/records/definitions/area_format_record.xml create mode 100644 src/testcases/org/apache/poi/hssf/record/TestAreaFormatRecord.java diff --git a/src/java/org/apache/poi/hssf/record/AreaFormatRecord.java b/src/java/org/apache/poi/hssf/record/AreaFormatRecord.java new file mode 100644 index 0000000000..220e2ac342 --- /dev/null +++ b/src/java/org/apache/poi/hssf/record/AreaFormatRecord.java @@ -0,0 +1,353 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + + +package org.apache.poi.hssf.record; + + + +import org.apache.poi.util.BitField; +import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.StringUtil; +import org.apache.poi.util.HexDump; + +/** + * The area format record is used to define the colours and patterns for an area. + * NOTE: This source is automatically generated please do not modify this file. Either subclass or + * remove the record in src/records/definitions. + + * @author Glen Stampoultzis (glens at apache.org) + */ +public class AreaFormatRecord + extends Record +{ + public final static short sid = 0x100a; + private int field_1_foregroundColor; + private int field_2_backgroundColor; + private short field_3_pattern; + private short field_4_formatFlags; + private BitField automatic = new BitField(0x1); + private BitField invert = new BitField(0x2); + private short field_5_forecolorIndex; + private short field_6_backcolorIndex; + + + public AreaFormatRecord() + { + + } + + /** + * Constructs a AreaFormat record and sets its fields appropriately. + * + * @param id id must be 0x100a or an exception + * will be throw upon validation + * @param size size the size of the data area of the record + * @param data data of the record (should not contain sid/len) + */ + + public AreaFormatRecord(short id, short size, byte [] data) + { + super(id, size, data); + } + + /** + * Constructs a AreaFormat record and sets its fields appropriately. + * + * @param id id must be 0x100a or an exception + * will be throw upon validation + * @param size size the size of the data area of the record + * @param data data of the record (should not contain sid/len) + * @param offset of the record's data + */ + + public AreaFormatRecord(short id, short size, byte [] data, int offset) + { + super(id, size, data, offset); + } + + /** + * Checks the sid matches the expected side for this record + * + * @param id the expected sid. + */ + protected void validateSid(short id) + { + if (id != sid) + { + throw new RecordFormatException("Not a AreaFormat record"); + } + } + + protected void fillFields(byte [] data, short size, int offset) + { + field_1_foregroundColor = LittleEndian.getInt(data, 0x0 + offset); + field_2_backgroundColor = LittleEndian.getInt(data, 0x4 + offset); + field_3_pattern = LittleEndian.getShort(data, 0x8 + offset); + field_4_formatFlags = LittleEndian.getShort(data, 0xa + offset); + field_5_forecolorIndex = LittleEndian.getShort(data, 0xc + offset); + field_6_backcolorIndex = LittleEndian.getShort(data, 0xe + offset); + + } + + public String toString() + { + StringBuffer buffer = new StringBuffer(); + + buffer.append("[AreaFormat]\n"); + + buffer.append(" .foregroundColor = ") + .append("0x") + .append(HexDump.toHex((int)getForegroundColor())) + .append(" (").append(getForegroundColor()).append(" )\n"); + + buffer.append(" .backgroundColor = ") + .append("0x") + .append(HexDump.toHex((int)getBackgroundColor())) + .append(" (").append(getBackgroundColor()).append(" )\n"); + + buffer.append(" .pattern = ") + .append("0x") + .append(HexDump.toHex((short)getPattern())) + .append(" (").append(getPattern()).append(" )\n"); + + buffer.append(" .formatFlags = ") + .append("0x") + .append(HexDump.toHex((short)getFormatFlags())) + .append(" (").append(getFormatFlags()).append(" )\n"); + buffer.append(" .automatic = ").append(isAutomatic ()).append('\n'); + buffer.append(" .invert = ").append(isInvert ()).append('\n'); + + buffer.append(" .forecolorIndex = ") + .append("0x") + .append(HexDump.toHex((short)getForecolorIndex())) + .append(" (").append(getForecolorIndex()).append(" )\n"); + + buffer.append(" .backcolorIndex = ") + .append("0x") + .append(HexDump.toHex((short)getBackcolorIndex())) + .append(" (").append(getBackcolorIndex()).append(" )\n"); + + buffer.append("[/AreaFormat]\n"); + return buffer.toString(); + } + + public int serialize(int offset, byte[] data) + { + LittleEndian.putShort(data, 0 + offset, sid); + LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4)); + + LittleEndian.putInt(data, 4 + offset, field_1_foregroundColor); + LittleEndian.putInt(data, 8 + offset, field_2_backgroundColor); + LittleEndian.putShort(data, 12 + offset, field_3_pattern); + LittleEndian.putShort(data, 14 + offset, field_4_formatFlags); + LittleEndian.putShort(data, 16 + offset, field_5_forecolorIndex); + LittleEndian.putShort(data, 18 + offset, field_6_backcolorIndex); + + return getRecordSize(); + } + + /** + * Size of record (exluding 4 byte header) + */ + public int getRecordSize() + { + return 4 + 4 + 4 + 2 + 2 + 2 + 2; + } + + public short getSid() + { + return this.sid; + } + + + /** + * Get the foreground color field for the AreaFormat record. + */ + public int getForegroundColor() + { + return field_1_foregroundColor; + } + + /** + * Set the foreground color field for the AreaFormat record. + */ + public void setForegroundColor(int field_1_foregroundColor) + { + this.field_1_foregroundColor = field_1_foregroundColor; + } + + /** + * Get the background color field for the AreaFormat record. + */ + public int getBackgroundColor() + { + return field_2_backgroundColor; + } + + /** + * Set the background color field for the AreaFormat record. + */ + public void setBackgroundColor(int field_2_backgroundColor) + { + this.field_2_backgroundColor = field_2_backgroundColor; + } + + /** + * Get the pattern field for the AreaFormat record. + */ + public short getPattern() + { + return field_3_pattern; + } + + /** + * Set the pattern field for the AreaFormat record. + */ + public void setPattern(short field_3_pattern) + { + this.field_3_pattern = field_3_pattern; + } + + /** + * Get the format flags field for the AreaFormat record. + */ + public short getFormatFlags() + { + return field_4_formatFlags; + } + + /** + * Set the format flags field for the AreaFormat record. + */ + public void setFormatFlags(short field_4_formatFlags) + { + this.field_4_formatFlags = field_4_formatFlags; + } + + /** + * Get the forecolor index field for the AreaFormat record. + */ + public short getForecolorIndex() + { + return field_5_forecolorIndex; + } + + /** + * Set the forecolor index field for the AreaFormat record. + */ + public void setForecolorIndex(short field_5_forecolorIndex) + { + this.field_5_forecolorIndex = field_5_forecolorIndex; + } + + /** + * Get the backcolor index field for the AreaFormat record. + */ + public short getBackcolorIndex() + { + return field_6_backcolorIndex; + } + + /** + * Set the backcolor index field for the AreaFormat record. + */ + public void setBackcolorIndex(short field_6_backcolorIndex) + { + this.field_6_backcolorIndex = field_6_backcolorIndex; + } + + /** + * Sets the automatic field value. + * automatic formatting + */ + public void setAutomatic(boolean value) + { + field_4_formatFlags = automatic.setShortBoolean(field_4_formatFlags, value); + } + + /** + * automatic formatting + * @return the automatic field value. + */ + public boolean isAutomatic() + { + return automatic.isSet(field_4_formatFlags); + } + + /** + * Sets the invert field value. + * swap foreground and background colours when data is negative + */ + public void setInvert(boolean value) + { + field_4_formatFlags = invert.setShortBoolean(field_4_formatFlags, value); + } + + /** + * swap foreground and background colours when data is negative + * @return the invert field value. + */ + public boolean isInvert() + { + return invert.isSet(field_4_formatFlags); + } + + +} // END OF CLASS + + + + diff --git a/src/java/org/apache/poi/hssf/record/AreaRecord.java b/src/java/org/apache/poi/hssf/record/AreaRecord.java index 6e4f89f76c..6df0c708e8 100644 --- a/src/java/org/apache/poi/hssf/record/AreaRecord.java +++ b/src/java/org/apache/poi/hssf/record/AreaRecord.java @@ -129,7 +129,7 @@ public class AreaRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_formatFlags = LittleEndian.getShort(data, 0 + offset); + field_1_formatFlags = LittleEndian.getShort(data, 0x0 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/AxisRecord.java b/src/java/org/apache/poi/hssf/record/AxisRecord.java index f8b48c9dd5..b73f70a980 100644 --- a/src/java/org/apache/poi/hssf/record/AxisRecord.java +++ b/src/java/org/apache/poi/hssf/record/AxisRecord.java @@ -133,11 +133,11 @@ public class AxisRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_axisType = LittleEndian.getShort(data, 0 + offset); - field_2_reserved1 = LittleEndian.getInt(data, 2 + offset); - field_3_reserved2 = LittleEndian.getInt(data, 6 + offset); - field_4_reserved3 = LittleEndian.getInt(data, 10 + offset); - field_5_reserved4 = LittleEndian.getInt(data, 14 + offset); + field_1_axisType = LittleEndian.getShort(data, 0x0 + offset); + field_2_reserved1 = LittleEndian.getInt(data, 0x2 + offset); + field_3_reserved2 = LittleEndian.getInt(data, 0x6 + offset); + field_4_reserved3 = LittleEndian.getInt(data, 0xa + offset); + field_5_reserved4 = LittleEndian.getInt(data, 0xe + offset); } diff --git a/src/java/org/apache/poi/hssf/record/BarRecord.java b/src/java/org/apache/poi/hssf/record/BarRecord.java index 309ed9c158..9c410934de 100644 --- a/src/java/org/apache/poi/hssf/record/BarRecord.java +++ b/src/java/org/apache/poi/hssf/record/BarRecord.java @@ -133,9 +133,9 @@ public class BarRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_barSpace = LittleEndian.getShort(data, 0 + offset); - field_2_categorySpace = LittleEndian.getShort(data, 2 + offset); - field_3_formatFlags = LittleEndian.getShort(data, 4 + offset); + field_1_barSpace = LittleEndian.getShort(data, 0x0 + offset); + field_2_categorySpace = LittleEndian.getShort(data, 0x2 + offset); + field_3_formatFlags = LittleEndian.getShort(data, 0x4 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java b/src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java index 27894a4b6f..c20aa4644a 100644 --- a/src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java +++ b/src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java @@ -132,10 +132,10 @@ public class CategorySeriesAxisRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_crossingPoint = LittleEndian.getShort(data, 0 + offset); - field_2_labelFrequency = LittleEndian.getShort(data, 2 + offset); - field_3_tickMarkFrequency = LittleEndian.getShort(data, 4 + offset); - field_4_options = LittleEndian.getShort(data, 6 + offset); + field_1_crossingPoint = LittleEndian.getShort(data, 0x0 + offset); + field_2_labelFrequency = LittleEndian.getShort(data, 0x2 + offset); + field_3_tickMarkFrequency = LittleEndian.getShort(data, 0x4 + offset); + field_4_options = LittleEndian.getShort(data, 0x6 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/ChartRecord.java b/src/java/org/apache/poi/hssf/record/ChartRecord.java index 55f92db34b..4df39a015c 100644 --- a/src/java/org/apache/poi/hssf/record/ChartRecord.java +++ b/src/java/org/apache/poi/hssf/record/ChartRecord.java @@ -129,10 +129,10 @@ public class ChartRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_x = LittleEndian.getInt(data, 0 + offset); - field_2_y = LittleEndian.getInt(data, 4 + offset); - field_3_width = LittleEndian.getInt(data, 8 + offset); - field_4_height = LittleEndian.getInt(data, 12 + offset); + field_1_x = LittleEndian.getInt(data, 0x0 + offset); + field_2_y = LittleEndian.getInt(data, 0x4 + offset); + field_3_width = LittleEndian.getInt(data, 0x8 + offset); + field_4_height = LittleEndian.getInt(data, 0xc + offset); } diff --git a/src/java/org/apache/poi/hssf/record/DatRecord.java b/src/java/org/apache/poi/hssf/record/DatRecord.java index fd62a3ef10..5290e3d32f 100644 --- a/src/java/org/apache/poi/hssf/record/DatRecord.java +++ b/src/java/org/apache/poi/hssf/record/DatRecord.java @@ -130,7 +130,7 @@ public class DatRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_options = LittleEndian.getShort(data, 0 + offset); + field_1_options = LittleEndian.getShort(data, 0x0 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/DataFormatRecord.java b/src/java/org/apache/poi/hssf/record/DataFormatRecord.java index 2f143bce67..4f9bc0f1d8 100644 --- a/src/java/org/apache/poi/hssf/record/DataFormatRecord.java +++ b/src/java/org/apache/poi/hssf/record/DataFormatRecord.java @@ -130,10 +130,10 @@ public class DataFormatRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_pointNumber = LittleEndian.getShort(data, 0 + offset); - field_2_seriesIndex = LittleEndian.getShort(data, 2 + offset); - field_3_seriesNumber = LittleEndian.getShort(data, 4 + offset); - field_4_formatFlags = LittleEndian.getShort(data, 6 + offset); + field_1_pointNumber = LittleEndian.getShort(data, 0x0 + offset); + field_2_seriesIndex = LittleEndian.getShort(data, 0x2 + offset); + field_3_seriesNumber = LittleEndian.getShort(data, 0x4 + offset); + field_4_formatFlags = LittleEndian.getShort(data, 0x6 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java b/src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java index 5431989f86..c681fd3f1c 100644 --- a/src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java +++ b/src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java @@ -129,7 +129,7 @@ public class DefaultDataLabelTextPropertiesRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_categoryDataType = LittleEndian.getShort(data, 0 + offset); + field_1_categoryDataType = LittleEndian.getShort(data, 0x0 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/FontBasisRecord.java b/src/java/org/apache/poi/hssf/record/FontBasisRecord.java index 38c8f2a29d..5b5b4cb147 100644 --- a/src/java/org/apache/poi/hssf/record/FontBasisRecord.java +++ b/src/java/org/apache/poi/hssf/record/FontBasisRecord.java @@ -130,11 +130,11 @@ public class FontBasisRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_xBasis = LittleEndian.getShort(data, 0 + offset); - field_2_yBasis = LittleEndian.getShort(data, 2 + offset); - field_3_heightBasis = LittleEndian.getShort(data, 4 + offset); - field_4_scale = LittleEndian.getShort(data, 6 + offset); - field_5_indexToFontTable = LittleEndian.getShort(data, 8 + offset); + field_1_xBasis = LittleEndian.getShort(data, 0x0 + offset); + field_2_yBasis = LittleEndian.getShort(data, 0x2 + offset); + field_3_heightBasis = LittleEndian.getShort(data, 0x4 + offset); + field_4_scale = LittleEndian.getShort(data, 0x6 + offset); + field_5_indexToFontTable = LittleEndian.getShort(data, 0x8 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/FontIndexRecord.java b/src/java/org/apache/poi/hssf/record/FontIndexRecord.java index 7e1f07a131..addf32335b 100644 --- a/src/java/org/apache/poi/hssf/record/FontIndexRecord.java +++ b/src/java/org/apache/poi/hssf/record/FontIndexRecord.java @@ -126,7 +126,7 @@ public class FontIndexRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_fontIndex = LittleEndian.getShort(data, 0 + offset); + field_1_fontIndex = LittleEndian.getShort(data, 0x0 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/FrameRecord.java b/src/java/org/apache/poi/hssf/record/FrameRecord.java index c4fa52f8f7..235974abed 100644 --- a/src/java/org/apache/poi/hssf/record/FrameRecord.java +++ b/src/java/org/apache/poi/hssf/record/FrameRecord.java @@ -131,8 +131,8 @@ public class FrameRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_borderType = LittleEndian.getShort(data, 0 + offset); - field_2_options = LittleEndian.getShort(data, 2 + offset); + field_1_borderType = LittleEndian.getShort(data, 0x0 + offset); + field_2_options = LittleEndian.getShort(data, 0x2 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/LegendRecord.java b/src/java/org/apache/poi/hssf/record/LegendRecord.java index 2a0eea0536..225a9fd3dc 100644 --- a/src/java/org/apache/poi/hssf/record/LegendRecord.java +++ b/src/java/org/apache/poi/hssf/record/LegendRecord.java @@ -147,13 +147,13 @@ public class LegendRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_xPosition = LittleEndian.getInt(data, 0 + offset); - field_2_yPosition = LittleEndian.getInt(data, 4 + offset); - field_3_xSize = LittleEndian.getInt(data, 8 + offset); - field_4_ySize = LittleEndian.getInt(data, 12 + offset); - field_5_type = data[ 16 + offset ]; - field_6_spacing = data[ 17 + offset ]; - field_7_options = LittleEndian.getShort(data, 18 + offset); + field_1_xPosition = LittleEndian.getInt(data, 0x0 + offset); + field_2_yPosition = LittleEndian.getInt(data, 0x4 + offset); + field_3_xSize = LittleEndian.getInt(data, 0x8 + offset); + field_4_ySize = LittleEndian.getInt(data, 0xc + offset); + field_5_type = data[ 0x10 + offset ]; + field_6_spacing = data[ 0x11 + offset ]; + field_7_options = LittleEndian.getShort(data, 0x12 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java b/src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java index 6e7524e2ee..48d66b43ba 100644 --- a/src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java +++ b/src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java @@ -126,7 +126,7 @@ public class NumberFormatIndexRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_formatIndex = LittleEndian.getShort(data, 0 + offset); + field_1_formatIndex = LittleEndian.getShort(data, 0x0 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java b/src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java index 2af130c757..27c68bbc77 100644 --- a/src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java +++ b/src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java @@ -127,8 +127,8 @@ public class PlotGrowthRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_horizontalScale = LittleEndian.getInt(data, 0 + offset); - field_2_verticalScale = LittleEndian.getInt(data, 4 + offset); + field_1_horizontalScale = LittleEndian.getInt(data, 0x0 + offset); + field_2_verticalScale = LittleEndian.getInt(data, 0x4 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/SeriesListRecord.java b/src/java/org/apache/poi/hssf/record/SeriesListRecord.java index e690cf0ea8..cf63a4a548 100644 --- a/src/java/org/apache/poi/hssf/record/SeriesListRecord.java +++ b/src/java/org/apache/poi/hssf/record/SeriesListRecord.java @@ -126,7 +126,7 @@ public class SeriesListRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_seriesNumbers = LittleEndian.getShortArray(data, 0 + offset); + field_1_seriesNumbers = LittleEndian.getShortArray(data, 0x0 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/SeriesRecord.java b/src/java/org/apache/poi/hssf/record/SeriesRecord.java index c060284e6a..d5f7933aa7 100644 --- a/src/java/org/apache/poi/hssf/record/SeriesRecord.java +++ b/src/java/org/apache/poi/hssf/record/SeriesRecord.java @@ -143,12 +143,12 @@ public class SeriesRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_categoryDataType = LittleEndian.getShort(data, 0 + offset); - field_2_valuesDataType = LittleEndian.getShort(data, 2 + offset); - field_3_numCategories = LittleEndian.getShort(data, 4 + offset); - field_4_numValues = LittleEndian.getShort(data, 6 + offset); - field_5_bubbleSeriesType = LittleEndian.getShort(data, 8 + offset); - field_6_numBubbleValues = LittleEndian.getShort(data, 10 + offset); + field_1_categoryDataType = LittleEndian.getShort(data, 0x0 + offset); + field_2_valuesDataType = LittleEndian.getShort(data, 0x2 + offset); + field_3_numCategories = LittleEndian.getShort(data, 0x4 + offset); + field_4_numValues = LittleEndian.getShort(data, 0x6 + offset); + field_5_bubbleSeriesType = LittleEndian.getShort(data, 0x8 + offset); + field_6_numBubbleValues = LittleEndian.getShort(data, 0xa + offset); } diff --git a/src/java/org/apache/poi/hssf/record/UnitsRecord.java b/src/java/org/apache/poi/hssf/record/UnitsRecord.java index 0236f063fa..3c2a4038e5 100644 --- a/src/java/org/apache/poi/hssf/record/UnitsRecord.java +++ b/src/java/org/apache/poi/hssf/record/UnitsRecord.java @@ -126,7 +126,7 @@ public class UnitsRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_units = LittleEndian.getShort(data, 0 + offset); + field_1_units = LittleEndian.getShort(data, 0x0 + offset); } diff --git a/src/java/org/apache/poi/hssf/record/ValueRangeRecord.java b/src/java/org/apache/poi/hssf/record/ValueRangeRecord.java index f77010d725..0bcbfde7ce 100644 --- a/src/java/org/apache/poi/hssf/record/ValueRangeRecord.java +++ b/src/java/org/apache/poi/hssf/record/ValueRangeRecord.java @@ -140,12 +140,12 @@ public class ValueRangeRecord protected void fillFields(byte [] data, short size, int offset) { - field_1_minimumAxisValue = LittleEndian.getDouble(data, 0 + offset); - field_2_maximumAxisValue = LittleEndian.getDouble(data, 8 + offset); - field_3_majorIncrement = LittleEndian.getDouble(data, 16 + offset); - field_4_minorIncrement = LittleEndian.getDouble(data, 24 + offset); - field_5_categoryAxisCross = LittleEndian.getDouble(data, 32 + offset); - field_6_options = LittleEndian.getShort(data, 40 + offset); + field_1_minimumAxisValue = LittleEndian.getDouble(data, 0x0 + offset); + field_2_maximumAxisValue = LittleEndian.getDouble(data, 0x8 + offset); + field_3_majorIncrement = LittleEndian.getDouble(data, 0x10 + offset); + field_4_minorIncrement = LittleEndian.getDouble(data, 0x18 + offset); + field_5_categoryAxisCross = LittleEndian.getDouble(data, 0x20 + offset); + field_6_options = LittleEndian.getShort(data, 0x28 + offset); } diff --git a/src/records/definitions/area_format_record.xml b/src/records/definitions/area_format_record.xml new file mode 100644 index 0000000000..b5cacc34fe --- /dev/null +++ b/src/records/definitions/area_format_record.xml @@ -0,0 +1,17 @@ + + Record + Record + The area format record is used to define the colours and patterns for an area. + Glen Stampoultzis (glens at apache.org) + + + + + + + + + + + + diff --git a/src/testcases/org/apache/poi/hssf/record/TestAreaFormatRecord.java b/src/testcases/org/apache/poi/hssf/record/TestAreaFormatRecord.java new file mode 100644 index 0000000000..375d84128d --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/record/TestAreaFormatRecord.java @@ -0,0 +1,125 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + + +package org.apache.poi.hssf.record; + + +import junit.framework.TestCase; + +/** + * Tests the serialization and deserialization of the AreaFormatRecord + * class works correctly. Test data taken directly from a real + * Excel file. + * + + * @author Glen Stampoultzis (glens at apache.org) + */ +public class TestAreaFormatRecord + extends TestCase +{ + byte[] data = new byte[] { + (byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0x00, // forecolor + (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00, // backcolor + (byte)0x01,(byte)0x00, // pattern + (byte)0x01,(byte)0x00, // format + (byte)0x4E,(byte)0x00, // forecolor index + (byte)0x4D,(byte)0x00 // backcolor index + + }; + + public TestAreaFormatRecord(String name) + { + super(name); + } + + public void testLoad() + throws Exception + { + + AreaFormatRecord record = new AreaFormatRecord((short)0x100a, (short)data.length, data); + assertEquals( 0xFFFFFF, record.getForegroundColor()); + assertEquals( 0x000000, record.getBackgroundColor()); + assertEquals( 1, record.getPattern()); + assertEquals( 1, record.getFormatFlags()); + assertEquals( true, record.isAutomatic() ); + assertEquals( false, record.isInvert() ); + assertEquals( 0x4e, record.getForecolorIndex()); + assertEquals( 0x4d, record.getBackcolorIndex()); + + + assertEquals( 20, record.getRecordSize() ); + + record.validateSid((short)0x100a); + } + + public void testStore() + { + AreaFormatRecord record = new AreaFormatRecord(); + record.setForegroundColor( 0xFFFFFF ); + record.setBackgroundColor( 0x000000 ); + record.setPattern( (short)1 ); + record.setAutomatic( true ); + record.setInvert( false ); + record.setForecolorIndex( (short)0x4e ); + record.setBackcolorIndex( (short)0x4d ); + + + byte [] recordBytes = record.serialize(); + assertEquals(recordBytes.length - 4, data.length); + for (int i = 0; i < data.length; i++) + assertEquals("At offset " + i, data[i], recordBytes[i+4]); + } +}