51 lines
1.4 KiB
Java
51 lines
1.4 KiB
Java
package jxl.write.biff;
|
|
|
|
import java.util.List;
|
|
import jxl.biff.IntegerHelper;
|
|
import jxl.biff.Type;
|
|
import jxl.biff.WritableRecordData;
|
|
import jxl.write.Number;
|
|
|
|
class MulRKRecord extends WritableRecordData {
|
|
private int row;
|
|
|
|
private int colFirst;
|
|
|
|
private int colLast;
|
|
|
|
private int[] rknumbers;
|
|
|
|
private int[] xfIndices;
|
|
|
|
public MulRKRecord(List numbers) {
|
|
super(Type.MULRK);
|
|
this.row = ((Number)numbers.get(0)).getRow();
|
|
this.colFirst = ((Number)numbers.get(0)).getColumn();
|
|
this.colLast = this.colFirst + numbers.size() - 1;
|
|
this.rknumbers = new int[numbers.size()];
|
|
this.xfIndices = new int[numbers.size()];
|
|
for (int i = 0; i < numbers.size(); i++) {
|
|
this.rknumbers[i] = (int)((Number)numbers.get(i)).getValue();
|
|
this.xfIndices[i] = ((CellValue)numbers.get(i)).getXFIndex();
|
|
}
|
|
}
|
|
|
|
public byte[] getData() {
|
|
byte[] data = new byte[this.rknumbers.length * 6 + 6];
|
|
IntegerHelper.getTwoBytes(this.row, data, 0);
|
|
IntegerHelper.getTwoBytes(this.colFirst, data, 2);
|
|
int pos = 4;
|
|
int rkValue = 0;
|
|
byte[] rkBytes = new byte[4];
|
|
for (int i = 0; i < this.rknumbers.length; i++) {
|
|
IntegerHelper.getTwoBytes(this.xfIndices[i], data, pos);
|
|
rkValue = this.rknumbers[i] << 2;
|
|
rkValue |= 0x2;
|
|
IntegerHelper.getFourBytes(rkValue, data, pos + 2);
|
|
pos += 6;
|
|
}
|
|
IntegerHelper.getTwoBytes(this.colLast, data, pos);
|
|
return data;
|
|
}
|
|
}
|