1 /
55
56
57 package org.apache.poi.hssf.record;
58
59
60
61 import org.apache.poi.util.*;
62
63
70 public class ValueRangeRecord
71 extends Record
72 {
73 public final static short sid = 0x101f;
74 private double field_1_minimumAxisValue;
75 private double field_2_maximumAxisValue;
76 private double field_3_majorIncrement;
77 private double field_4_minorIncrement;
78 private double field_5_categoryAxisCross;
79 private short field_6_options;
80 private BitField automaticMinimum = new BitField(0x1);
81 private BitField automaticMaximum = new BitField(0x2);
82 private BitField automaticMajor = new BitField(0x4);
83 private BitField automaticMinor = new BitField(0x8);
84 private BitField automaticCategoryCrossing = new BitField(0x10);
85 private BitField logarithmicScale = new BitField(0x20);
86 private BitField valuesInReverse = new BitField(0x40);
87 private BitField crossCategoryAxisAtMaximum = new BitField(0x80);
88 private BitField reserved = new BitField(0x100);
89
90
91 public ValueRangeRecord()
92 {
93
94 }
95
96
104
105 public ValueRangeRecord(short id, short size, byte [] data)
106 {
107 super(id, size, data);
108 }
109
110
119
120 public ValueRangeRecord(short id, short size, byte [] data, int offset)
121 {
122 super(id, size, data, offset);
123 }
124
125
130 protected void validateSid(short id)
131 {
132 if (id != sid)
133 {
134 throw new RecordFormatException("Not a ValueRange record");
135 }
136 }
137
138 protected void fillFields(byte [] data, short size, int offset)
139 {
140 field_1_minimumAxisValue = LittleEndian.getDouble(data, 0x0 + offset);
141 field_2_maximumAxisValue = LittleEndian.getDouble(data, 0x8 + offset);
142 field_3_majorIncrement = LittleEndian.getDouble(data, 0x10 + offset);
143 field_4_minorIncrement = LittleEndian.getDouble(data, 0x18 + offset);
144 field_5_categoryAxisCross = LittleEndian.getDouble(data, 0x20 + offset);
145 field_6_options = LittleEndian.getShort(data, 0x28 + offset);
146
147 }
148
149 public String toString()
150 {
151 StringBuffer buffer = new StringBuffer();
152
153 buffer.append("[ValueRange]\n");
154
155 buffer.append(" .minimumAxisValue = ")
156 .append(" (").append(getMinimumAxisValue()).append(" )\n");
157
158 buffer.append(" .maximumAxisValue = ")
159 .append(" (").append(getMaximumAxisValue()).append(" )\n");
160
161 buffer.append(" .majorIncrement = ")
162 .append(" (").append(getMajorIncrement()).append(" )\n");
163
164 buffer.append(" .minorIncrement = ")
165 .append(" (").append(getMinorIncrement()).append(" )\n");
166
167 buffer.append(" .categoryAxisCross = ")
168 .append(" (").append(getCategoryAxisCross()).append(" )\n");
169
170 buffer.append(" .options = ")
171 .append("0x")
172 .append(HexDump.toHex((short)getOptions()))
173 .append(" (").append(getOptions()).append(" )\n");
174 buffer.append(" .automaticMinimum = ").append(isAutomaticMinimum ()).append('\n');
175 buffer.append(" .automaticMaximum = ").append(isAutomaticMaximum ()).append('\n');
176 buffer.append(" .automaticMajor = ").append(isAutomaticMajor ()).append('\n');
177 buffer.append(" .automaticMinor = ").append(isAutomaticMinor ()).append('\n');
178 buffer.append(" .automaticCategoryCrossing = ").append(isAutomaticCategoryCrossing()).append('\n');
179 buffer.append(" .logarithmicScale = ").append(isLogarithmicScale ()).append('\n');
180 buffer.append(" .valuesInReverse = ").append(isValuesInReverse ()).append('\n');
181 buffer.append(" .crossCategoryAxisAtMaximum = ").append(isCrossCategoryAxisAtMaximum()).append('\n');
182 buffer.append(" .reserved = ").append(isReserved ()).append('\n');
183
184 buffer.append("[/ValueRange]\n");
185 return buffer.toString();
186 }
187
188 public int serialize(int offset, byte[] data)
189 {
190 LittleEndian.putShort(data, 0 + offset, sid);
191 LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
192
193 LittleEndian.putDouble(data, 4 + offset, field_1_minimumAxisValue);
194 LittleEndian.putDouble(data, 12 + offset, field_2_maximumAxisValue);
195 LittleEndian.putDouble(data, 20 + offset, field_3_majorIncrement);
196 LittleEndian.putDouble(data, 28 + offset, field_4_minorIncrement);
197 LittleEndian.putDouble(data, 36 + offset, field_5_categoryAxisCross);
198 LittleEndian.putShort(data, 44 + offset, field_6_options);
199
200 return getRecordSize();
201 }
202
203
206 public int getRecordSize()
207 {
208 return 4 + 8 + 8 + 8 + 8 + 8 + 2;
209 }
210
211 public short getSid()
212 {
213 return this.sid;
214 }
215
216
217
220 public double getMinimumAxisValue()
221 {
222 return field_1_minimumAxisValue;
223 }
224
225
228 public void setMinimumAxisValue(double field_1_minimumAxisValue)
229 {
230 this.field_1_minimumAxisValue = field_1_minimumAxisValue;
231 }
232
233
236 public double getMaximumAxisValue()
237 {
238 return field_2_maximumAxisValue;
239 }
240
241
244 public void setMaximumAxisValue(double field_2_maximumAxisValue)
245 {
246 this.field_2_maximumAxisValue = field_2_maximumAxisValue;
247 }
248
249
252 public double getMajorIncrement()
253 {
254 return field_3_majorIncrement;
255 }
256
257
260 public void setMajorIncrement(double field_3_majorIncrement)
261 {
262 this.field_3_majorIncrement = field_3_majorIncrement;
263 }
264
265
268 public double getMinorIncrement()
269 {
270 return field_4_minorIncrement;
271 }
272
273
276 public void setMinorIncrement(double field_4_minorIncrement)
277 {
278 this.field_4_minorIncrement = field_4_minorIncrement;
279 }
280
281
284 public double getCategoryAxisCross()
285 {
286 return field_5_categoryAxisCross;
287 }
288
289
292 public void setCategoryAxisCross(double field_5_categoryAxisCross)
293 {
294 this.field_5_categoryAxisCross = field_5_categoryAxisCross;
295 }
296
297
300 public short getOptions()
301 {
302 return field_6_options;
303 }
304
305
308 public void setOptions(short field_6_options)
309 {
310 this.field_6_options = field_6_options;
311 }
312
313
317 public void setAutomaticMinimum(boolean value)
318 {
319 field_6_options = automaticMinimum.setShortBoolean(field_6_options, value);
320 }
321
322
326 public boolean isAutomaticMinimum()
327 {
328 return automaticMinimum.isSet(field_6_options);
329 }
330
331
335 public void setAutomaticMaximum(boolean value)
336 {
337 field_6_options = automaticMaximum.setShortBoolean(field_6_options, value);
338 }
339
340
344 public boolean isAutomaticMaximum()
345 {
346 return automaticMaximum.isSet(field_6_options);
347 }
348
349
353 public void setAutomaticMajor(boolean value)
354 {
355 field_6_options = automaticMajor.setShortBoolean(field_6_options, value);
356 }
357
358
362 public boolean isAutomaticMajor()
363 {
364 return automaticMajor.isSet(field_6_options);
365 }
366
367
371 public void setAutomaticMinor(boolean value)
372 {
373 field_6_options = automaticMinor.setShortBoolean(field_6_options, value);
374 }
375
376
380 public boolean isAutomaticMinor()
381 {
382 return automaticMinor.isSet(field_6_options);
383 }
384
385
389 public void setAutomaticCategoryCrossing(boolean value)
390 {
391 field_6_options = automaticCategoryCrossing.setShortBoolean(field_6_options, value);
392 }
393
394
398 public boolean isAutomaticCategoryCrossing()
399 {
400 return automaticCategoryCrossing.isSet(field_6_options);
401 }
402
403
407 public void setLogarithmicScale(boolean value)
408 {
409 field_6_options = logarithmicScale.setShortBoolean(field_6_options, value);
410 }
411
412
416 public boolean isLogarithmicScale()
417 {
418 return logarithmicScale.isSet(field_6_options);
419 }
420
421
425 public void setValuesInReverse(boolean value)
426 {
427 field_6_options = valuesInReverse.setShortBoolean(field_6_options, value);
428 }
429
430
434 public boolean isValuesInReverse()
435 {
436 return valuesInReverse.isSet(field_6_options);
437 }
438
439
443 public void setCrossCategoryAxisAtMaximum(boolean value)
444 {
445 field_6_options = crossCategoryAxisAtMaximum.setShortBoolean(field_6_options, value);
446 }
447
448
452 public boolean isCrossCategoryAxisAtMaximum()
453 {
454 return crossCategoryAxisAtMaximum.isSet(field_6_options);
455 }
456
457
461 public void setReserved(boolean value)
462 {
463 field_6_options = reserved.setShortBoolean(field_6_options, value);
464 }
465
466
470 public boolean isReserved()
471 {
472 return reserved.isSet(field_6_options);
473 }
474
475
476 }
477
478
479
480
481