1 /
55
56
57 package org.apache.poi.hssf.record;
58
59
60
61 import org.apache.poi.util.BitField;
62 import org.apache.poi.util.LittleEndian;
63 import org.apache.poi.util.StringUtil;
64 import org.apache.poi.util.HexDump;
65
66
73 public class ValueRangeRecord
74 extends Record
75 {
76 public final static short sid = 0x101f;
77 private double field_1_minimumAxisValue;
78 private double field_2_maximumAxisValue;
79 private double field_3_majorIncrement;
80 private double field_4_minorIncrement;
81 private double field_5_categoryAxisCross;
82 private short field_6_options;
83 private BitField automaticMinimum = new BitField(0x1);
84 private BitField automaticMaximum = new BitField(0x2);
85 private BitField automaticMajor = new BitField(0x4);
86 private BitField automaticMinor = new BitField(0x8);
87 private BitField automaticCategoryCrossing = new BitField(0x10);
88 private BitField logarithmicScale = new BitField(0x20);
89 private BitField valuesInReverse = new BitField(0x40);
90 private BitField crossCategoryAxisAtMaximum = new BitField(0x80);
91 private BitField reserved = new BitField(0x100);
92
93
94 public ValueRangeRecord()
95 {
96
97 }
98
99
107
108 public ValueRangeRecord(short id, short size, byte [] data)
109 {
110 super(id, size, data);
111 }
112
113
122
123 public ValueRangeRecord(short id, short size, byte [] data, int offset)
124 {
125 super(id, size, data, offset);
126 }
127
128
133 protected void validateSid(short id)
134 {
135 if (id != sid)
136 {
137 throw new RecordFormatException("Not a ValueRange record");
138 }
139 }
140
141 protected void fillFields(byte [] data, short size, int offset)
142 {
143 field_1_minimumAxisValue = LittleEndian.getDouble(data, 0x0 + offset);
144 field_2_maximumAxisValue = LittleEndian.getDouble(data, 0x8 + offset);
145 field_3_majorIncrement = LittleEndian.getDouble(data, 0x10 + offset);
146 field_4_minorIncrement = LittleEndian.getDouble(data, 0x18 + offset);
147 field_5_categoryAxisCross = LittleEndian.getDouble(data, 0x20 + offset);
148 field_6_options = LittleEndian.getShort(data, 0x28 + offset);
149
150 }
151
152 public String toString()
153 {
154 StringBuffer buffer = new StringBuffer();
155
156 buffer.append("[ValueRange]\n");
157
158 buffer.append(" .minimumAxisValue = ")
159 .append(" (").append(getMinimumAxisValue()).append(" )\n");
160
161 buffer.append(" .maximumAxisValue = ")
162 .append(" (").append(getMaximumAxisValue()).append(" )\n");
163
164 buffer.append(" .majorIncrement = ")
165 .append(" (").append(getMajorIncrement()).append(" )\n");
166
167 buffer.append(" .minorIncrement = ")
168 .append(" (").append(getMinorIncrement()).append(" )\n");
169
170 buffer.append(" .categoryAxisCross = ")
171 .append(" (").append(getCategoryAxisCross()).append(" )\n");
172
173 buffer.append(" .options = ")
174 .append("0x")
175 .append(HexDump.toHex((short)getOptions()))
176 .append(" (").append(getOptions()).append(" )\n");
177 buffer.append(" .automaticMinimum = ").append(isAutomaticMinimum ()).append('\n');
178 buffer.append(" .automaticMaximum = ").append(isAutomaticMaximum ()).append('\n');
179 buffer.append(" .automaticMajor = ").append(isAutomaticMajor ()).append('\n');
180 buffer.append(" .automaticMinor = ").append(isAutomaticMinor ()).append('\n');
181 buffer.append(" .automaticCategoryCrossing = ").append(isAutomaticCategoryCrossing()).append('\n');
182 buffer.append(" .logarithmicScale = ").append(isLogarithmicScale ()).append('\n');
183 buffer.append(" .valuesInReverse = ").append(isValuesInReverse ()).append('\n');
184 buffer.append(" .crossCategoryAxisAtMaximum = ").append(isCrossCategoryAxisAtMaximum()).append('\n');
185 buffer.append(" .reserved = ").append(isReserved ()).append('\n');
186
187 buffer.append("[/ValueRange]\n");
188 return buffer.toString();
189 }
190
191 public int serialize(int offset, byte[] data)
192 {
193 LittleEndian.putShort(data, 0 + offset, sid);
194 LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
195
196 LittleEndian.putDouble(data, 4 + offset, field_1_minimumAxisValue);
197 LittleEndian.putDouble(data, 12 + offset, field_2_maximumAxisValue);
198 LittleEndian.putDouble(data, 20 + offset, field_3_majorIncrement);
199 LittleEndian.putDouble(data, 28 + offset, field_4_minorIncrement);
200 LittleEndian.putDouble(data, 36 + offset, field_5_categoryAxisCross);
201 LittleEndian.putShort(data, 44 + offset, field_6_options);
202
203 return getRecordSize();
204 }
205
206
209 public int getRecordSize()
210 {
211 return 4 + 8 + 8 + 8 + 8 + 8 + 2;
212 }
213
214 public short getSid()
215 {
216 return this.sid;
217 }
218
219
220
223 public double getMinimumAxisValue()
224 {
225 return field_1_minimumAxisValue;
226 }
227
228
231 public void setMinimumAxisValue(double field_1_minimumAxisValue)
232 {
233 this.field_1_minimumAxisValue = field_1_minimumAxisValue;
234 }
235
236
239 public double getMaximumAxisValue()
240 {
241 return field_2_maximumAxisValue;
242 }
243
244
247 public void setMaximumAxisValue(double field_2_maximumAxisValue)
248 {
249 this.field_2_maximumAxisValue = field_2_maximumAxisValue;
250 }
251
252
255 public double getMajorIncrement()
256 {
257 return field_3_majorIncrement;
258 }
259
260
263 public void setMajorIncrement(double field_3_majorIncrement)
264 {
265 this.field_3_majorIncrement = field_3_majorIncrement;
266 }
267
268
271 public double getMinorIncrement()
272 {
273 return field_4_minorIncrement;
274 }
275
276
279 public void setMinorIncrement(double field_4_minorIncrement)
280 {
281 this.field_4_minorIncrement = field_4_minorIncrement;
282 }
283
284
287 public double getCategoryAxisCross()
288 {
289 return field_5_categoryAxisCross;
290 }
291
292
295 public void setCategoryAxisCross(double field_5_categoryAxisCross)
296 {
297 this.field_5_categoryAxisCross = field_5_categoryAxisCross;
298 }
299
300
303 public short getOptions()
304 {
305 return field_6_options;
306 }
307
308
311 public void setOptions(short field_6_options)
312 {
313 this.field_6_options = field_6_options;
314 }
315
316
320 public void setAutomaticMinimum(boolean value)
321 {
322 field_6_options = automaticMinimum.setShortBoolean(field_6_options, value);
323 }
324
325
329 public boolean isAutomaticMinimum()
330 {
331 return automaticMinimum.isSet(field_6_options);
332 }
333
334
338 public void setAutomaticMaximum(boolean value)
339 {
340 field_6_options = automaticMaximum.setShortBoolean(field_6_options, value);
341 }
342
343
347 public boolean isAutomaticMaximum()
348 {
349 return automaticMaximum.isSet(field_6_options);
350 }
351
352
356 public void setAutomaticMajor(boolean value)
357 {
358 field_6_options = automaticMajor.setShortBoolean(field_6_options, value);
359 }
360
361
365 public boolean isAutomaticMajor()
366 {
367 return automaticMajor.isSet(field_6_options);
368 }
369
370
374 public void setAutomaticMinor(boolean value)
375 {
376 field_6_options = automaticMinor.setShortBoolean(field_6_options, value);
377 }
378
379
383 public boolean isAutomaticMinor()
384 {
385 return automaticMinor.isSet(field_6_options);
386 }
387
388
392 public void setAutomaticCategoryCrossing(boolean value)
393 {
394 field_6_options = automaticCategoryCrossing.setShortBoolean(field_6_options, value);
395 }
396
397
401 public boolean isAutomaticCategoryCrossing()
402 {
403 return automaticCategoryCrossing.isSet(field_6_options);
404 }
405
406
410 public void setLogarithmicScale(boolean value)
411 {
412 field_6_options = logarithmicScale.setShortBoolean(field_6_options, value);
413 }
414
415
419 public boolean isLogarithmicScale()
420 {
421 return logarithmicScale.isSet(field_6_options);
422 }
423
424
428 public void setValuesInReverse(boolean value)
429 {
430 field_6_options = valuesInReverse.setShortBoolean(field_6_options, value);
431 }
432
433
437 public boolean isValuesInReverse()
438 {
439 return valuesInReverse.isSet(field_6_options);
440 }
441
442
446 public void setCrossCategoryAxisAtMaximum(boolean value)
447 {
448 field_6_options = crossCategoryAxisAtMaximum.setShortBoolean(field_6_options, value);
449 }
450
451
455 public boolean isCrossCategoryAxisAtMaximum()
456 {
457 return crossCategoryAxisAtMaximum.isSet(field_6_options);
458 }
459
460
464 public void setReserved(boolean value)
465 {
466 field_6_options = reserved.setShortBoolean(field_6_options, value);
467 }
468
469
473 public boolean isReserved()
474 {
475 return reserved.isSet(field_6_options);
476 }
477
478
479 }
480
481
482
483
484