Lines 156-163
Link Here
|
156 |
|
156 |
|
157 |
protected void fillFields(RecordInputStream in) |
157 |
protected void fillFields(RecordInputStream in) |
158 |
{ |
158 |
{ |
159 |
field_1_first_row = in.readShort(); |
159 |
field_1_first_row = in.readUShort(); |
160 |
field_2_last_row = in.readShort(); |
160 |
field_2_last_row = in.readUShort(); |
161 |
field_3_first_column = in.readUByte(); |
161 |
field_3_first_column = in.readUByte(); |
162 |
field_4_last_column = in.readUByte(); |
162 |
field_4_last_column = in.readUByte(); |
163 |
field_5_reserved = in.readShort(); |
163 |
field_5_reserved = in.readShort(); |
Lines 200-207
Link Here
|
200 |
Ptg ptg = (Ptg) field_7_parsed_expr.get(k); |
200 |
Ptg ptg = (Ptg) field_7_parsed_expr.get(k); |
201 |
if (ptg instanceof RefNPtg) { |
201 |
if (ptg instanceof RefNPtg) { |
202 |
RefNPtg refNPtg = (RefNPtg)ptg; |
202 |
RefNPtg refNPtg = (RefNPtg)ptg; |
203 |
ptg = new ReferencePtg( (short)(formulaRow + refNPtg.getRow()), |
203 |
ptg = new ReferencePtg(fixupRelativeRow(formulaRow,refNPtg.getRow(),refNPtg.isRowRelative()), |
204 |
(byte)(formulaColumn + refNPtg.getColumn()), |
204 |
fixupRelativeColumn(formulaColumn,refNPtg.getColumn(),refNPtg.isColRelative()), |
205 |
refNPtg.isRowRelative(), |
205 |
refNPtg.isRowRelative(), |
206 |
refNPtg.isColRelative()); |
206 |
refNPtg.isColRelative()); |
207 |
} else if (ptg instanceof RefNVPtg) { |
207 |
} else if (ptg instanceof RefNVPtg) { |
Lines 206-219
Link Here
|
206 |
refNPtg.isColRelative()); |
206 |
refNPtg.isColRelative()); |
207 |
} else if (ptg instanceof RefNVPtg) { |
207 |
} else if (ptg instanceof RefNVPtg) { |
208 |
RefNVPtg refNVPtg = (RefNVPtg)ptg; |
208 |
RefNVPtg refNVPtg = (RefNVPtg)ptg; |
209 |
ptg = new RefVPtg( (short)(formulaRow + refNVPtg.getRow()), |
209 |
ptg = new RefVPtg(fixupRelativeRow(formulaRow,refNVPtg.getRow(),refNVPtg.isRowRelative()), |
210 |
(byte)(formulaColumn + refNVPtg.getColumn()), |
210 |
fixupRelativeColumn(formulaColumn,refNVPtg.getColumn(),refNVPtg.isColRelative()), |
211 |
refNVPtg.isRowRelative(), |
211 |
refNVPtg.isRowRelative(), |
212 |
refNVPtg.isColRelative()); |
212 |
refNVPtg.isColRelative()); |
213 |
} else if (ptg instanceof RefNAPtg) { |
213 |
} else if (ptg instanceof RefNAPtg) { |
214 |
RefNAPtg refNAPtg = (RefNAPtg)ptg; |
214 |
RefNAPtg refNAPtg = (RefNAPtg)ptg; |
215 |
ptg = new RefAPtg( (short)(formulaRow + refNAPtg.getRow()), |
215 |
ptg = new RefAPtg( fixupRelativeRow(formulaRow,refNAPtg.getRow(),refNAPtg.isRowRelative()), |
216 |
(byte)(formulaColumn + refNAPtg.getColumn()), |
216 |
fixupRelativeColumn(formulaColumn,refNAPtg.getColumn(),refNAPtg.isColRelative()), |
217 |
refNAPtg.isRowRelative(), |
217 |
refNAPtg.isRowRelative(), |
218 |
refNAPtg.isColRelative()); |
218 |
refNAPtg.isColRelative()); |
219 |
} else if (ptg instanceof AreaNPtg) { |
219 |
} else if (ptg instanceof AreaNPtg) { |
Lines 218-227
Link Here
|
218 |
refNAPtg.isColRelative()); |
218 |
refNAPtg.isColRelative()); |
219 |
} else if (ptg instanceof AreaNPtg) { |
219 |
} else if (ptg instanceof AreaNPtg) { |
220 |
AreaNPtg areaNPtg = (AreaNPtg)ptg; |
220 |
AreaNPtg areaNPtg = (AreaNPtg)ptg; |
221 |
ptg = new AreaPtg((short)(formulaRow + areaNPtg.getFirstRow()), |
221 |
ptg = new AreaPtg(fixupRelativeRow(formulaRow,areaNPtg.getFirstRow(),areaNPtg.isFirstRowRelative()), |
222 |
(short)(formulaRow + areaNPtg.getLastRow()), |
222 |
fixupRelativeRow(formulaRow,areaNPtg.getLastRow(),areaNPtg.isLastRowRelative()), |
223 |
(short)(formulaColumn + areaNPtg.getFirstColumn()), |
223 |
fixupRelativeColumn(formulaColumn,areaNPtg.getFirstColumn(),areaNPtg.isFirstColRelative()), |
224 |
(short)(formulaColumn + areaNPtg.getLastColumn()), |
224 |
fixupRelativeColumn(formulaColumn,areaNPtg.getLastColumn(),areaNPtg.isLastColRelative()), |
225 |
areaNPtg.isFirstRowRelative(), |
225 |
areaNPtg.isFirstRowRelative(), |
226 |
areaNPtg.isLastRowRelative(), |
226 |
areaNPtg.isLastRowRelative(), |
227 |
areaNPtg.isFirstColRelative(), |
227 |
areaNPtg.isFirstColRelative(), |
Lines 228-237
Link Here
|
228 |
areaNPtg.isLastColRelative()); |
228 |
areaNPtg.isLastColRelative()); |
229 |
} else if (ptg instanceof AreaNVPtg) { |
229 |
} else if (ptg instanceof AreaNVPtg) { |
230 |
AreaNVPtg areaNVPtg = (AreaNVPtg)ptg; |
230 |
AreaNVPtg areaNVPtg = (AreaNVPtg)ptg; |
231 |
ptg = new AreaVPtg((short)(formulaRow + areaNVPtg.getFirstRow()), |
231 |
ptg = new AreaVPtg(fixupRelativeRow(formulaRow,areaNVPtg.getFirstRow(),areaNVPtg.isFirstRowRelative()), |
232 |
(short)(formulaRow + areaNVPtg.getLastRow()), |
232 |
fixupRelativeRow(formulaRow,areaNVPtg.getLastRow(),areaNVPtg.isLastRowRelative()), |
233 |
(short)(formulaColumn + areaNVPtg.getFirstColumn()), |
233 |
fixupRelativeColumn(formulaColumn,areaNVPtg.getFirstColumn(),areaNVPtg.isFirstColRelative()), |
234 |
(short)(formulaColumn + areaNVPtg.getLastColumn()), |
234 |
fixupRelativeColumn(formulaColumn,areaNVPtg.getLastColumn(),areaNVPtg.isLastColRelative()), |
235 |
areaNVPtg.isFirstRowRelative(), |
235 |
areaNVPtg.isFirstRowRelative(), |
236 |
areaNVPtg.isLastRowRelative(), |
236 |
areaNVPtg.isLastRowRelative(), |
237 |
areaNVPtg.isFirstColRelative(), |
237 |
areaNVPtg.isFirstColRelative(), |
Lines 238-247
Link Here
|
238 |
areaNVPtg.isLastColRelative()); |
238 |
areaNVPtg.isLastColRelative()); |
239 |
} else if (ptg instanceof AreaNAPtg) { |
239 |
} else if (ptg instanceof AreaNAPtg) { |
240 |
AreaNAPtg areaNAPtg = (AreaNAPtg)ptg; |
240 |
AreaNAPtg areaNAPtg = (AreaNAPtg)ptg; |
241 |
ptg = new AreaAPtg((short)(formulaRow + areaNAPtg.getFirstRow()), |
241 |
ptg = new AreaAPtg(fixupRelativeRow(formulaRow,areaNAPtg.getFirstRow(),areaNAPtg.isFirstRowRelative()), |
242 |
(short)(formulaRow + areaNAPtg.getLastRow()), |
242 |
fixupRelativeRow(formulaRow,areaNAPtg.getLastRow(),areaNAPtg.isLastRowRelative()), |
243 |
(short)(formulaColumn + areaNAPtg.getFirstColumn()), |
243 |
fixupRelativeColumn(formulaColumn,areaNAPtg.getFirstColumn(),areaNAPtg.isFirstColRelative()), |
244 |
(short)(formulaColumn + areaNAPtg.getLastColumn()), |
244 |
fixupRelativeColumn(formulaColumn,areaNAPtg.getLastColumn(),areaNAPtg.isLastColRelative()), |
245 |
areaNAPtg.isFirstRowRelative(), |
245 |
areaNAPtg.isFirstRowRelative(), |
246 |
areaNAPtg.isLastRowRelative(), |
246 |
areaNAPtg.isLastRowRelative(), |
247 |
areaNAPtg.isFirstColRelative(), |
247 |
areaNAPtg.isFirstColRelative(), |
Lines 256-261
Link Here
|
256 |
throw new RuntimeException("Shared Formula Conversion: Coding Error"); |
256 |
throw new RuntimeException("Shared Formula Conversion: Coding Error"); |
257 |
} |
257 |
} |
258 |
} |
258 |
} |
|
|
259 |
|
260 |
private short fixupRelativeColumn(int currentcolumn, short column, boolean relative) { |
261 |
if(relative) { |
262 |
if((column&128)!=0) column=(short)(column-256); |
263 |
column+=currentcolumn; |
264 |
} |
265 |
return column; |
266 |
} |
267 |
|
268 |
private short fixupRelativeRow(int currentrow, short row, boolean relative) { |
269 |
if(relative) { |
270 |
row+=currentrow; |
271 |
} |
272 |
return row; |
273 |
} |
259 |
|
274 |
|
260 |
/** |
275 |
/** |
261 |
* Mirroring formula records so it is registered in the ValueRecordsAggregate |
276 |
* Mirroring formula records so it is registered in the ValueRecordsAggregate |