Files
HRMS/hrmsEjb/jxl/biff/XFRecord.java
2025-07-28 13:56:49 +05:30

733 lines
24 KiB
Java

package jxl.biff;
import common.Assert;
import common.Logger;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import jxl.WorkbookSettings;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.format.Font;
import jxl.format.Format;
import jxl.format.Orientation;
import jxl.format.Pattern;
import jxl.format.VerticalAlignment;
import jxl.read.biff.Record;
public class XFRecord extends WritableRecordData implements CellFormat {
private static Logger logger = Logger.getLogger(XFRecord.class);
public int formatIndex;
private int parentFormat;
private XFType xfFormatType;
private boolean date;
private boolean number;
private DateFormat dateFormat;
private NumberFormat numberFormat;
private byte usedAttributes;
private int fontIndex;
private boolean locked;
private boolean hidden;
private Alignment align;
private VerticalAlignment valign;
private Orientation orientation;
private boolean wrap;
private int indentation;
private boolean shrinkToFit;
private BorderLineStyle leftBorder;
private BorderLineStyle rightBorder;
private BorderLineStyle topBorder;
private BorderLineStyle bottomBorder;
private Colour leftBorderColour;
private Colour rightBorderColour;
private Colour topBorderColour;
private Colour bottomBorderColour;
private Colour backgroundColour;
private Pattern pattern;
private int options;
private int xfIndex;
private FontRecord font;
private DisplayFormat format;
private boolean initialized;
private boolean read;
private Format excelFormat;
private boolean formatInfoInitialized;
private boolean copied;
private FormattingRecords formattingRecords;
private static final int[] dateFormats = new int[] {
14, 15, 16, 17, 18, 19, 20, 21, 22, 45,
46, 47 };
private static final DateFormat[] javaDateFormats = new DateFormat[] {
new SimpleDateFormat("dd/MM/yyyy"), new SimpleDateFormat("d-MMM-yy"), new SimpleDateFormat("d-MMM"), new SimpleDateFormat("MMM-yy"), new SimpleDateFormat("h:mm a"), new SimpleDateFormat("h:mm:ss a"), new SimpleDateFormat("H:mm"), new SimpleDateFormat("H:mm:ss"), new SimpleDateFormat("M/d/yy H:mm"), new SimpleDateFormat("mm:ss"),
new SimpleDateFormat("H:mm:ss"), new SimpleDateFormat("mm:ss.S") };
private static int[] numberFormats = new int[] {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 37, 38, 39, 40, 41, 42, 43, 44, 48 };
private static NumberFormat[] javaNumberFormats = new NumberFormat[] {
new DecimalFormat("0"), new DecimalFormat("0.00"), new DecimalFormat("#,##0"), new DecimalFormat("#,##0.00"), new DecimalFormat("$#,##0;($#,##0)"), new DecimalFormat("$#,##0;($#,##0)"), new DecimalFormat("$#,##0.00;($#,##0.00)"), new DecimalFormat("$#,##0.00;($#,##0.00)"), new DecimalFormat("0%"), new DecimalFormat("0.00%"),
new DecimalFormat("0.00E00"), new DecimalFormat("#,##0;(#,##0)"), new DecimalFormat("#,##0;(#,##0)"), new DecimalFormat("#,##0.00;(#,##0.00)"), new DecimalFormat("#,##0.00;(#,##0.00)"), new DecimalFormat("#,##0;(#,##0)"), new DecimalFormat("$#,##0;($#,##0)"), new DecimalFormat("#,##0.00;(#,##0.00)"), new DecimalFormat("$#,##0.00;($#,##0.00)"), new DecimalFormat("##0.0E0") };
private static class BiffType {
private BiffType() {}
}
public static final BiffType biff8 = new BiffType();
public static final BiffType biff7 = new BiffType();
private BiffType biffType;
private static class XFType {
private XFType() {}
}
protected static final XFType cell = new XFType();
protected static final XFType style = new XFType();
public XFRecord(Record t, WorkbookSettings ws, BiffType bt) {
super(t);
this.biffType = bt;
byte[] data = getRecord().getData();
this.fontIndex = IntegerHelper.getInt(data[0], data[1]);
this.formatIndex = IntegerHelper.getInt(data[2], data[3]);
this.date = false;
this.number = false;
int i;
for (i = 0; i < dateFormats.length && !this.date; i++) {
if (this.formatIndex == dateFormats[i]) {
this.date = true;
this.dateFormat = javaDateFormats[i];
}
}
for (i = 0; i < numberFormats.length && !this.number; i++) {
if (this.formatIndex == numberFormats[i]) {
this.number = true;
DecimalFormat df = (DecimalFormat)javaNumberFormats[i].clone();
DecimalFormatSymbols symbols = new DecimalFormatSymbols(ws.getLocale());
df.setDecimalFormatSymbols(symbols);
this.numberFormat = df;
}
}
int cellAttributes = IntegerHelper.getInt(data[4], data[5]);
this.parentFormat = (cellAttributes & 0xFFF0) >> 4;
int formatType = cellAttributes & 0x4;
this.xfFormatType = (formatType == 0) ? cell : style;
this.locked = ((cellAttributes & 0x1) != 0);
this.hidden = ((cellAttributes & 0x2) != 0);
if (this.xfFormatType == cell && (this.parentFormat & 0xFFF) == 4095) {
this.parentFormat = 0;
logger.warn("Invalid parent format found - ignoring");
}
this.initialized = false;
this.read = true;
this.formatInfoInitialized = false;
this.copied = false;
}
public XFRecord(FontRecord fnt, DisplayFormat form) {
super(Type.XF);
this.initialized = false;
this.locked = true;
this.hidden = false;
this.align = Alignment.GENERAL;
this.valign = VerticalAlignment.BOTTOM;
this.orientation = Orientation.HORIZONTAL;
this.wrap = false;
this.leftBorder = BorderLineStyle.NONE;
this.rightBorder = BorderLineStyle.NONE;
this.topBorder = BorderLineStyle.NONE;
this.bottomBorder = BorderLineStyle.NONE;
this.leftBorderColour = Colour.AUTOMATIC;
this.rightBorderColour = Colour.AUTOMATIC;
this.topBorderColour = Colour.AUTOMATIC;
this.bottomBorderColour = Colour.AUTOMATIC;
this.pattern = Pattern.NONE;
this.backgroundColour = Colour.DEFAULT_BACKGROUND;
this.indentation = 0;
this.shrinkToFit = false;
this.parentFormat = 0;
this.xfFormatType = null;
this.font = fnt;
this.format = form;
this.biffType = biff8;
this.read = false;
this.copied = false;
this.formatInfoInitialized = true;
Assert.verify((this.font != null));
Assert.verify((this.format != null));
}
protected XFRecord(XFRecord fmt) {
super(Type.XF);
this.initialized = false;
this.locked = fmt.locked;
this.hidden = fmt.hidden;
this.align = fmt.align;
this.valign = fmt.valign;
this.orientation = fmt.orientation;
this.wrap = fmt.wrap;
this.leftBorder = fmt.leftBorder;
this.rightBorder = fmt.rightBorder;
this.topBorder = fmt.topBorder;
this.bottomBorder = fmt.bottomBorder;
this.leftBorderColour = fmt.leftBorderColour;
this.rightBorderColour = fmt.rightBorderColour;
this.topBorderColour = fmt.topBorderColour;
this.bottomBorderColour = fmt.bottomBorderColour;
this.pattern = fmt.pattern;
this.xfFormatType = fmt.xfFormatType;
this.indentation = fmt.indentation;
this.shrinkToFit = fmt.shrinkToFit;
this.parentFormat = fmt.parentFormat;
this.backgroundColour = fmt.backgroundColour;
this.font = fmt.font;
this.format = fmt.format;
this.fontIndex = fmt.fontIndex;
this.formatIndex = fmt.formatIndex;
this.formatInfoInitialized = fmt.formatInfoInitialized;
this.biffType = biff8;
this.read = false;
this.copied = true;
}
protected XFRecord(CellFormat cellFormat) {
super(Type.XF);
Assert.verify((cellFormat != null));
Assert.verify(cellFormat instanceof XFRecord);
XFRecord fmt = (XFRecord)cellFormat;
if (!fmt.formatInfoInitialized)
fmt.initializeFormatInformation();
this.locked = fmt.locked;
this.hidden = fmt.hidden;
this.align = fmt.align;
this.valign = fmt.valign;
this.orientation = fmt.orientation;
this.wrap = fmt.wrap;
this.leftBorder = fmt.leftBorder;
this.rightBorder = fmt.rightBorder;
this.topBorder = fmt.topBorder;
this.bottomBorder = fmt.bottomBorder;
this.leftBorderColour = fmt.leftBorderColour;
this.rightBorderColour = fmt.rightBorderColour;
this.topBorderColour = fmt.topBorderColour;
this.bottomBorderColour = fmt.bottomBorderColour;
this.pattern = fmt.pattern;
this.xfFormatType = fmt.xfFormatType;
this.parentFormat = fmt.parentFormat;
this.indentation = fmt.indentation;
this.shrinkToFit = fmt.shrinkToFit;
this.backgroundColour = fmt.backgroundColour;
this.font = new FontRecord(fmt.getFont());
if (fmt.getFormat() == null) {
if (fmt.format.isBuiltIn()) {
this.format = fmt.format;
} else {
this.format = new FormatRecord((FormatRecord)fmt.format);
}
} else if (fmt.getFormat() instanceof BuiltInFormat) {
this.excelFormat = fmt.excelFormat;
this.format = (BuiltInFormat)fmt.excelFormat;
} else {
Assert.verify(fmt.formatInfoInitialized);
Assert.verify(fmt.excelFormat instanceof FormatRecord);
FormatRecord fr = new FormatRecord((FormatRecord)fmt.excelFormat);
this.excelFormat = fr;
this.format = fr;
}
this.biffType = biff8;
this.formatInfoInitialized = true;
this.read = false;
this.copied = false;
this.initialized = false;
}
public DateFormat getDateFormat() {
return this.dateFormat;
}
public NumberFormat getNumberFormat() {
return this.numberFormat;
}
public int getFormatRecord() {
return this.formatIndex;
}
public boolean isDate() {
return this.date;
}
public boolean isNumber() {
return this.number;
}
public byte[] getData() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
byte[] data = new byte[20];
IntegerHelper.getTwoBytes(this.fontIndex, data, 0);
IntegerHelper.getTwoBytes(this.formatIndex, data, 2);
int cellAttributes = 0;
if (getLocked())
cellAttributes |= 0x1;
if (getHidden())
cellAttributes |= 0x2;
if (this.xfFormatType == style) {
cellAttributes |= 0x4;
this.parentFormat = 65535;
}
cellAttributes |= this.parentFormat << 4;
IntegerHelper.getTwoBytes(cellAttributes, data, 4);
int alignMask = this.align.getValue();
if (this.wrap)
alignMask |= 0x8;
alignMask |= this.valign.getValue() << 4;
alignMask |= this.orientation.getValue() << 8;
IntegerHelper.getTwoBytes(alignMask, data, 6);
data[9] = 16;
int borderMask = this.leftBorder.getValue();
borderMask |= this.rightBorder.getValue() << 4;
borderMask |= this.topBorder.getValue() << 8;
borderMask |= this.bottomBorder.getValue() << 12;
IntegerHelper.getTwoBytes(borderMask, data, 10);
if (borderMask != 0) {
byte lc = (byte)this.leftBorderColour.getValue();
byte rc = (byte)this.rightBorderColour.getValue();
byte tc = (byte)this.topBorderColour.getValue();
byte bc = (byte)this.bottomBorderColour.getValue();
int sideColourMask = lc & Byte.MAX_VALUE | (rc & Byte.MAX_VALUE) << 7;
int topColourMask = tc & Byte.MAX_VALUE | (bc & Byte.MAX_VALUE) << 7;
IntegerHelper.getTwoBytes(sideColourMask, data, 12);
IntegerHelper.getTwoBytes(topColourMask, data, 14);
}
int patternVal = this.pattern.getValue() << 10;
IntegerHelper.getTwoBytes(patternVal, data, 16);
int colourPaletteMask = this.backgroundColour.getValue();
colourPaletteMask |= 0x2000;
IntegerHelper.getTwoBytes(colourPaletteMask, data, 18);
this.options |= this.indentation & 0xF;
if (this.shrinkToFit) {
this.options |= 0x10;
} else {
this.options &= 0xEF;
}
data[8] = (byte)this.options;
if (this.biffType == biff8)
data[9] = this.usedAttributes;
return data;
}
protected final boolean getLocked() {
return this.locked;
}
protected final boolean getHidden() {
return this.hidden;
}
protected final void setXFLocked(boolean l) {
this.locked = l;
}
protected final void setXFCellOptions(int opt) {
this.options |= opt;
}
protected void setXFAlignment(Alignment a) {
Assert.verify(!this.initialized);
this.align = a;
}
protected void setXFIndentation(int i) {
Assert.verify(!this.initialized);
this.indentation = i;
}
protected void setXFShrinkToFit(boolean s) {
Assert.verify(!this.initialized);
this.shrinkToFit = s;
}
public Alignment getAlignment() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.align;
}
public int getIndentation() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.indentation;
}
public boolean isShrinkToFit() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.shrinkToFit;
}
public boolean isLocked() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.locked;
}
public VerticalAlignment getVerticalAlignment() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.valign;
}
public Orientation getOrientation() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.orientation;
}
protected void setXFBackground(Colour c, Pattern p) {
Assert.verify(!this.initialized);
this.backgroundColour = c;
this.pattern = p;
}
public Colour getBackgroundColour() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.backgroundColour;
}
public Pattern getPattern() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.pattern;
}
protected void setXFVerticalAlignment(VerticalAlignment va) {
Assert.verify(!this.initialized);
this.valign = va;
}
protected void setXFOrientation(Orientation o) {
Assert.verify(!this.initialized);
this.orientation = o;
}
protected void setXFWrap(boolean w) {
Assert.verify(!this.initialized);
this.wrap = w;
}
public boolean getWrap() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.wrap;
}
protected void setXFBorder(Border b, BorderLineStyle ls, Colour c) {
Assert.verify(!this.initialized);
if (c == Colour.BLACK)
c = Colour.PALETTE_BLACK;
if (b == Border.LEFT) {
this.leftBorder = ls;
this.leftBorderColour = c;
} else if (b == Border.RIGHT) {
this.rightBorder = ls;
this.rightBorderColour = c;
} else if (b == Border.TOP) {
this.topBorder = ls;
this.topBorderColour = c;
} else if (b == Border.BOTTOM) {
this.bottomBorder = ls;
this.bottomBorderColour = c;
}
}
public BorderLineStyle getBorder(Border border) {
return getBorderLine(border);
}
public BorderLineStyle getBorderLine(Border border) {
if (border == Border.NONE || border == Border.ALL)
return BorderLineStyle.NONE;
if (!this.formatInfoInitialized)
initializeFormatInformation();
if (border == Border.LEFT)
return this.leftBorder;
if (border == Border.RIGHT)
return this.rightBorder;
if (border == Border.TOP)
return this.topBorder;
if (border == Border.BOTTOM)
return this.bottomBorder;
return BorderLineStyle.NONE;
}
public Colour getBorderColour(Border border) {
if (border == Border.NONE || border == Border.ALL)
return Colour.PALETTE_BLACK;
if (!this.formatInfoInitialized)
initializeFormatInformation();
if (border == Border.LEFT)
return this.leftBorderColour;
if (border == Border.RIGHT)
return this.rightBorderColour;
if (border == Border.TOP)
return this.topBorderColour;
if (border == Border.BOTTOM)
return this.bottomBorderColour;
return Colour.BLACK;
}
public final boolean hasBorders() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
if (this.leftBorder == BorderLineStyle.NONE && this.rightBorder == BorderLineStyle.NONE && this.topBorder == BorderLineStyle.NONE && this.bottomBorder == BorderLineStyle.NONE)
return false;
return true;
}
public final void initialize(int pos, FormattingRecords fr, Fonts fonts) throws NumFormatRecordsException {
this.xfIndex = pos;
this.formattingRecords = fr;
if (this.read || this.copied) {
this.initialized = true;
return;
}
if (!this.font.isInitialized())
fonts.addFont(this.font);
if (!this.format.isInitialized())
fr.addFormat(this.format);
this.fontIndex = this.font.getFontIndex();
this.formatIndex = this.format.getFormatIndex();
this.initialized = true;
}
public final void uninitialize() {
if (this.initialized == true)
logger.warn("A default format has been initialized");
this.initialized = false;
}
final void setXFIndex(int xfi) {
this.xfIndex = xfi;
}
public final int getXFIndex() {
return this.xfIndex;
}
public final boolean isInitialized() {
return this.initialized;
}
public final boolean isRead() {
return this.read;
}
public Format getFormat() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.excelFormat;
}
public Font getFont() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
return this.font;
}
private void initializeFormatInformation() {
if (this.formatIndex < BuiltInFormat.builtIns.length && BuiltInFormat.builtIns[this.formatIndex] != null) {
this.excelFormat = BuiltInFormat.builtIns[this.formatIndex];
} else {
this.excelFormat = this.formattingRecords.getFormatRecord(this.formatIndex);
}
this.font = this.formattingRecords.getFonts().getFont(this.fontIndex);
byte[] data = getRecord().getData();
int cellAttributes = IntegerHelper.getInt(data[4], data[5]);
this.parentFormat = (cellAttributes & 0xFFF0) >> 4;
int formatType = cellAttributes & 0x4;
this.xfFormatType = (formatType == 0) ? cell : style;
this.locked = ((cellAttributes & 0x1) != 0);
this.hidden = ((cellAttributes & 0x2) != 0);
if (this.xfFormatType == cell && (this.parentFormat & 0xFFF) == 4095) {
this.parentFormat = 0;
logger.warn("Invalid parent format found - ignoring");
}
int alignMask = IntegerHelper.getInt(data[6], data[7]);
if ((alignMask & 0x8) != 0)
this.wrap = true;
this.align = Alignment.getAlignment(alignMask & 0x7);
this.valign = VerticalAlignment.getAlignment(alignMask >> 4 & 0x7);
this.orientation = Orientation.getOrientation(alignMask >> 8 & 0xFF);
int attr = IntegerHelper.getInt(data[8], data[9]);
this.indentation = attr & 0xF;
this.shrinkToFit = ((attr & 0x10) != 0);
if (this.biffType == biff8)
this.usedAttributes = data[9];
int borderMask = IntegerHelper.getInt(data[10], data[11]);
this.leftBorder = BorderLineStyle.getStyle(borderMask & 0x7);
this.rightBorder = BorderLineStyle.getStyle(borderMask >> 4 & 0x7);
this.topBorder = BorderLineStyle.getStyle(borderMask >> 8 & 0x7);
this.bottomBorder = BorderLineStyle.getStyle(borderMask >> 12 & 0x7);
int borderColourMask = IntegerHelper.getInt(data[12], data[13]);
this.leftBorderColour = Colour.getInternalColour(borderColourMask & 0x7F);
this.rightBorderColour = Colour.getInternalColour((borderColourMask & 0x3F80) >> 7);
borderColourMask = IntegerHelper.getInt(data[14], data[15]);
this.topBorderColour = Colour.getInternalColour(borderColourMask & 0x7F);
this.bottomBorderColour = Colour.getInternalColour((borderColourMask & 0x3F80) >> 7);
if (this.biffType == biff8) {
int patternVal = IntegerHelper.getInt(data[16], data[17]);
patternVal &= 0xFC00;
patternVal >>= 10;
this.pattern = Pattern.getPattern(patternVal);
int colourPaletteMask = IntegerHelper.getInt(data[18], data[19]);
this.backgroundColour = Colour.getInternalColour(colourPaletteMask & 0x3F);
if (this.backgroundColour == Colour.UNKNOWN || this.backgroundColour == Colour.DEFAULT_BACKGROUND1)
this.backgroundColour = Colour.DEFAULT_BACKGROUND;
} else {
this.pattern = Pattern.NONE;
this.backgroundColour = Colour.DEFAULT_BACKGROUND;
}
this.formatInfoInitialized = true;
}
public int hashCode() {
if (!this.formatInfoInitialized)
initializeFormatInformation();
int hashValue = 17;
int oddPrimeNumber = 37;
hashValue = oddPrimeNumber * hashValue + (this.hidden ? 1 : 0);
hashValue = oddPrimeNumber * hashValue + (this.locked ? 1 : 0);
hashValue = oddPrimeNumber * hashValue + (this.wrap ? 1 : 0);
hashValue = oddPrimeNumber * hashValue + (this.shrinkToFit ? 1 : 0);
if (this.xfFormatType == cell) {
hashValue = oddPrimeNumber * hashValue + 1;
} else if (this.xfFormatType == style) {
hashValue = oddPrimeNumber * hashValue + 2;
}
hashValue = oddPrimeNumber * hashValue + this.align.getValue() + 1;
hashValue = oddPrimeNumber * hashValue + this.valign.getValue() + 1;
hashValue = oddPrimeNumber * hashValue + this.orientation.getValue();
hashValue ^= this.leftBorder.getDescription().hashCode();
hashValue ^= this.rightBorder.getDescription().hashCode();
hashValue ^= this.topBorder.getDescription().hashCode();
hashValue ^= this.bottomBorder.getDescription().hashCode();
hashValue = oddPrimeNumber * hashValue + this.leftBorderColour.getValue();
hashValue = oddPrimeNumber * hashValue + this.rightBorderColour.getValue();
hashValue = oddPrimeNumber * hashValue + this.topBorderColour.getValue();
hashValue = oddPrimeNumber * hashValue + this.bottomBorderColour.getValue();
hashValue = oddPrimeNumber * hashValue + this.backgroundColour.getValue();
hashValue = oddPrimeNumber * hashValue + this.pattern.getValue() + 1;
hashValue = oddPrimeNumber * hashValue + this.usedAttributes;
hashValue = oddPrimeNumber * hashValue + this.parentFormat;
hashValue = oddPrimeNumber * hashValue + this.fontIndex;
hashValue = oddPrimeNumber * hashValue + this.formatIndex;
hashValue = oddPrimeNumber * hashValue + this.indentation;
return hashValue;
}
public boolean equals(Object o) {
if (o == this)
return true;
if (!(o instanceof XFRecord))
return false;
XFRecord xfr = (XFRecord)o;
if (!this.formatInfoInitialized)
initializeFormatInformation();
if (!xfr.formatInfoInitialized)
xfr.initializeFormatInformation();
if (this.xfFormatType != xfr.xfFormatType || this.parentFormat != xfr.parentFormat || this.locked != xfr.locked || this.hidden != xfr.hidden || this.usedAttributes != xfr.usedAttributes)
return false;
if (this.align != xfr.align || this.valign != xfr.valign || this.orientation != xfr.orientation || this.wrap != xfr.wrap || this.shrinkToFit != xfr.shrinkToFit || this.indentation != xfr.indentation)
return false;
if (this.leftBorder != xfr.leftBorder || this.rightBorder != xfr.rightBorder || this.topBorder != xfr.topBorder || this.bottomBorder != xfr.bottomBorder)
return false;
if (this.leftBorderColour != xfr.leftBorderColour || this.rightBorderColour != xfr.rightBorderColour || this.topBorderColour != xfr.topBorderColour || this.bottomBorderColour != xfr.bottomBorderColour)
return false;
if (this.backgroundColour != xfr.backgroundColour || this.pattern != xfr.pattern)
return false;
if (this.initialized && xfr.initialized) {
if (this.fontIndex != xfr.fontIndex || this.formatIndex != xfr.formatIndex)
return false;
} else if (!this.font.equals(xfr.font) || !this.format.equals(xfr.format)) {
return false;
}
return true;
}
void setFormatIndex(int newindex) {
this.formatIndex = newindex;
}
int getFontIndex() {
return this.fontIndex;
}
void setFontIndex(int newindex) {
this.fontIndex = newindex;
}
protected void setXFDetails(XFType t, int pf) {
this.xfFormatType = t;
this.parentFormat = pf;
}
void rationalize(IndexMapping xfMapping) {
this.xfIndex = xfMapping.getNewIndex(this.xfIndex);
if (this.xfFormatType == cell)
this.parentFormat = xfMapping.getNewIndex(this.parentFormat);
}
public void setFont(FontRecord f) {
this.font = f;
}
}