1 /
55
56
57 package org.apache.poi.hssf.record;
58
59
60
61 import org.apache.poi.util.*;
62
63
70 public class TextRecord
71 extends Record
72 {
73 public final static short sid = 0x1025;
74 private byte field_1_horizontalAlignment;
75 public final static byte HORIZONTAL_ALIGNMENT_LEFT = 1;
76 public final static byte HORIZONTAL_ALIGNMENT_CENTER = 2;
77 public final static byte HORIZONTAL_ALIGNMENT_BOTTOM = 3;
78 public final static byte HORIZONTAL_ALIGNMENT_JUSTIFY = 4;
79 private byte field_2_verticalAlignment;
80 public final static byte VERTICAL_ALIGNMENT_TOP = 1;
81 public final static byte VERTICAL_ALIGNMENT_CENTER = 2;
82 public final static byte VERTICAL_ALIGNMENT_BOTTOM = 3;
83 public final static byte VERTICAL_ALIGNMENT_JUSTIFY = 4;
84 private short field_3_displayMode;
85 public final static short DISPLAY_MODE_TRANSPARENT = 1;
86 public final static short DISPLAY_MODE_OPAQUE = 2;
87 private int field_4_rgbColor;
88 private int field_5_x;
89 private int field_6_y;
90 private int field_7_width;
91 private int field_8_height;
92 private short field_9_options1;
93 private BitField autoColor = new BitField(0x1);
94 private BitField showKey = new BitField(0x2);
95 private BitField showValue = new BitField(0x4);
96 private BitField vertical = new BitField(0x8);
97 private BitField autoGeneratedText = new BitField(0x10);
98 private BitField generated = new BitField(0x20);
99 private BitField autoLabelDeleted = new BitField(0x40);
100 private BitField autoBackground = new BitField(0x80);
101 private BitField rotation = new BitField(0x0700);
102 public final static short ROTATION_NONE = 0;
103 public final static short ROTATION_TOP_TO_BOTTOM = 1;
104 public final static short ROTATION_ROTATED_90_DEGREES = 2;
105 public final static short ROTATION_ROTATED_90_DEGREES_CLOCKWISE = 3;
106 private BitField showCategoryLabelAsPercentage = new BitField(0x800);
107 private BitField showValueAsPercentage = new BitField(0x1000);
108 private BitField showBubbleSizes = new BitField(0x2000);
109 private BitField showLabel = new BitField(0x4000);
110 private short field_10_indexOfColorValue;
111 private short field_11_options2;
112 private BitField dataLabelPlacement = new BitField(0x000F);
113 public final static short DATA_LABEL_PLACEMENT_CHART_DEPENDENT = 0;
114 public final static short DATA_LABEL_PLACEMENT_OUTSIDE = 1;
115 public final static short DATA_LABEL_PLACEMENT_INSIDE = 2;
116 public final static short DATA_LABEL_PLACEMENT_CENTER = 3;
117 public final static short DATA_LABEL_PLACEMENT_AXIS = 4;
118 public final static short DATA_LABEL_PLACEMENT_ABOVE = 5;
119 public final static short DATA_LABEL_PLACEMENT_BELOW = 6;
120 public final static short DATA_LABEL_PLACEMENT_LEFT = 7;
121 public final static short DATA_LABEL_PLACEMENT_RIGHT = 8;
122 public final static short DATA_LABEL_PLACEMENT_AUTO = 9;
123 public final static short DATA_LABEL_PLACEMENT_USER_MOVED = 10;
124 private short field_12_textRotation;
125
126
127 public TextRecord()
128 {
129
130 }
131
132
140
141 public TextRecord(short id, short size, byte [] data)
142 {
143 super(id, size, data);
144 }
145
146
155
156 public TextRecord(short id, short size, byte [] data, int offset)
157 {
158 super(id, size, data, offset);
159 }
160
161
166 protected void validateSid(short id)
167 {
168 if (id != sid)
169 {
170 throw new RecordFormatException("Not a Text record");
171 }
172 }
173
174 protected void fillFields(byte [] data, short size, int offset)
175 {
176 field_1_horizontalAlignment = data[ 0x0 + offset ];
177 field_2_verticalAlignment = data[ 0x1 + offset ];
178 field_3_displayMode = LittleEndian.getShort(data, 0x2 + offset);
179 field_4_rgbColor = LittleEndian.getInt(data, 0x4 + offset);
180 field_5_x = LittleEndian.getInt(data, 0x8 + offset);
181 field_6_y = LittleEndian.getInt(data, 0xc + offset);
182 field_7_width = LittleEndian.getInt(data, 0x10 + offset);
183 field_8_height = LittleEndian.getInt(data, 0x14 + offset);
184 field_9_options1 = LittleEndian.getShort(data, 0x18 + offset);
185 field_10_indexOfColorValue = LittleEndian.getShort(data, 0x1a + offset);
186 field_11_options2 = LittleEndian.getShort(data, 0x1c + offset);
187 field_12_textRotation = LittleEndian.getShort(data, 0x1e + offset);
188
189 }
190
191 public String toString()
192 {
193 StringBuffer buffer = new StringBuffer();
194
195 buffer.append("[Text]\n");
196
197 buffer.append(" .horizontalAlignment = ")
198 .append("0x")
199 .append(HexDump.toHex((byte)getHorizontalAlignment()))
200 .append(" (").append(getHorizontalAlignment()).append(" )\n");
201
202 buffer.append(" .verticalAlignment = ")
203 .append("0x")
204 .append(HexDump.toHex((byte)getVerticalAlignment()))
205 .append(" (").append(getVerticalAlignment()).append(" )\n");
206
207 buffer.append(" .displayMode = ")
208 .append("0x")
209 .append(HexDump.toHex((short)getDisplayMode()))
210 .append(" (").append(getDisplayMode()).append(" )\n");
211
212 buffer.append(" .rgbColor = ")
213 .append("0x")
214 .append(HexDump.toHex((int)getRgbColor()))
215 .append(" (").append(getRgbColor()).append(" )\n");
216
217 buffer.append(" .x = ")
218 .append("0x")
219 .append(HexDump.toHex((int)getX()))
220 .append(" (").append(getX()).append(" )\n");
221
222 buffer.append(" .y = ")
223 .append("0x")
224 .append(HexDump.toHex((int)getY()))
225 .append(" (").append(getY()).append(" )\n");
226
227 buffer.append(" .width = ")
228 .append("0x")
229 .append(HexDump.toHex((int)getWidth()))
230 .append(" (").append(getWidth()).append(" )\n");
231
232 buffer.append(" .height = ")
233 .append("0x")
234 .append(HexDump.toHex((int)getHeight()))
235 .append(" (").append(getHeight()).append(" )\n");
236
237 buffer.append(" .options1 = ")
238 .append("0x")
239 .append(HexDump.toHex((short)getOptions1()))
240 .append(" (").append(getOptions1()).append(" )\n");
241 buffer.append(" .autoColor = ").append(isAutoColor ()).append('\n');
242 buffer.append(" .showKey = ").append(isShowKey ()).append('\n');
243 buffer.append(" .showValue = ").append(isShowValue ()).append('\n');
244 buffer.append(" .vertical = ").append(isVertical ()).append('\n');
245 buffer.append(" .autoGeneratedText = ").append(isAutoGeneratedText ()).append('\n');
246 buffer.append(" .generated = ").append(isGenerated ()).append('\n');
247 buffer.append(" .autoLabelDeleted = ").append(isAutoLabelDeleted ()).append('\n');
248 buffer.append(" .autoBackground = ").append(isAutoBackground ()).append('\n');
249 buffer.append(" .rotation = ").append(getRotation ()).append('\n');
250 buffer.append(" .showCategoryLabelAsPercentage = ").append(isShowCategoryLabelAsPercentage()).append('\n');
251 buffer.append(" .showValueAsPercentage = ").append(isShowValueAsPercentage()).append('\n');
252 buffer.append(" .showBubbleSizes = ").append(isShowBubbleSizes ()).append('\n');
253 buffer.append(" .showLabel = ").append(isShowLabel ()).append('\n');
254
255 buffer.append(" .indexOfColorValue = ")
256 .append("0x")
257 .append(HexDump.toHex((short)getIndexOfColorValue()))
258 .append(" (").append(getIndexOfColorValue()).append(" )\n");
259
260 buffer.append(" .options2 = ")
261 .append("0x")
262 .append(HexDump.toHex((short)getOptions2()))
263 .append(" (").append(getOptions2()).append(" )\n");
264 buffer.append(" .dataLabelPlacement = ").append(getDataLabelPlacement ()).append('\n');
265
266 buffer.append(" .textRotation = ")
267 .append("0x")
268 .append(HexDump.toHex((short)getTextRotation()))
269 .append(" (").append(getTextRotation()).append(" )\n");
270
271 buffer.append("[/Text]\n");
272 return buffer.toString();
273 }
274
275 public int serialize(int offset, byte[] data)
276 {
277 LittleEndian.putShort(data, 0 + offset, sid);
278 LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
279
280 data[ 4 + offset ] = field_1_horizontalAlignment;
281 data[ 5 + offset ] = field_2_verticalAlignment;
282 LittleEndian.putShort(data, 6 + offset, field_3_displayMode);
283 LittleEndian.putInt(data, 8 + offset, field_4_rgbColor);
284 LittleEndian.putInt(data, 12 + offset, field_5_x);
285 LittleEndian.putInt(data, 16 + offset, field_6_y);
286 LittleEndian.putInt(data, 20 + offset, field_7_width);
287 LittleEndian.putInt(data, 24 + offset, field_8_height);
288 LittleEndian.putShort(data, 28 + offset, field_9_options1);
289 LittleEndian.putShort(data, 30 + offset, field_10_indexOfColorValue);
290 LittleEndian.putShort(data, 32 + offset, field_11_options2);
291 LittleEndian.putShort(data, 34 + offset, field_12_textRotation);
292
293 return getRecordSize();
294 }
295
296
299 public int getRecordSize()
300 {
301 return 4 + 1 + 1 + 2 + 4 + 4 + 4 + 4 + 4 + 2 + 2 + 2 + 2;
302 }
303
304 public short getSid()
305 {
306 return this.sid;
307 }
308
309 public Object clone() {
310 TextRecord rec = new TextRecord();
311
312 rec.field_1_horizontalAlignment = field_1_horizontalAlignment;
313 rec.field_2_verticalAlignment = field_2_verticalAlignment;
314 rec.field_3_displayMode = field_3_displayMode;
315 rec.field_4_rgbColor = field_4_rgbColor;
316 rec.field_5_x = field_5_x;
317 rec.field_6_y = field_6_y;
318 rec.field_7_width = field_7_width;
319 rec.field_8_height = field_8_height;
320 rec.field_9_options1 = field_9_options1;
321 rec.field_10_indexOfColorValue = field_10_indexOfColorValue;
322 rec.field_11_options2 = field_11_options2;
323 rec.field_12_textRotation = field_12_textRotation;
324
325 return rec;
326 }
327
328
329
338 public byte getHorizontalAlignment()
339 {
340 return field_1_horizontalAlignment;
341 }
342
343
353 public void setHorizontalAlignment(byte field_1_horizontalAlignment)
354 {
355 this.field_1_horizontalAlignment = field_1_horizontalAlignment;
356 }
357
358
367 public byte getVerticalAlignment()
368 {
369 return field_2_verticalAlignment;
370 }
371
372
382 public void setVerticalAlignment(byte field_2_verticalAlignment)
383 {
384 this.field_2_verticalAlignment = field_2_verticalAlignment;
385 }
386
387
394 public short getDisplayMode()
395 {
396 return field_3_displayMode;
397 }
398
399
407 public void setDisplayMode(short field_3_displayMode)
408 {
409 this.field_3_displayMode = field_3_displayMode;
410 }
411
412
415 public int getRgbColor()
416 {
417 return field_4_rgbColor;
418 }
419
420
423 public void setRgbColor(int field_4_rgbColor)
424 {
425 this.field_4_rgbColor = field_4_rgbColor;
426 }
427
428
431 public int getX()
432 {
433 return field_5_x;
434 }
435
436
439 public void setX(int field_5_x)
440 {
441 this.field_5_x = field_5_x;
442 }
443
444
447 public int getY()
448 {
449 return field_6_y;
450 }
451
452
455 public void setY(int field_6_y)
456 {
457 this.field_6_y = field_6_y;
458 }
459
460
463 public int getWidth()
464 {
465 return field_7_width;
466 }
467
468
471 public void setWidth(int field_7_width)
472 {
473 this.field_7_width = field_7_width;
474 }
475
476
479 public int getHeight()
480 {
481 return field_8_height;
482 }
483
484
487 public void setHeight(int field_8_height)
488 {
489 this.field_8_height = field_8_height;
490 }
491
492
495 public short getOptions1()
496 {
497 return field_9_options1;
498 }
499
500
503 public void setOptions1(short field_9_options1)
504 {
505 this.field_9_options1 = field_9_options1;
506 }
507
508
511 public short getIndexOfColorValue()
512 {
513 return field_10_indexOfColorValue;
514 }
515
516
519 public void setIndexOfColorValue(short field_10_indexOfColorValue)
520 {
521 this.field_10_indexOfColorValue = field_10_indexOfColorValue;
522 }
523
524
527 public short getOptions2()
528 {
529 return field_11_options2;
530 }
531
532
535 public void setOptions2(short field_11_options2)
536 {
537 this.field_11_options2 = field_11_options2;
538 }
539
540
543 public short getTextRotation()
544 {
545 return field_12_textRotation;
546 }
547
548
551 public void setTextRotation(short field_12_textRotation)
552 {
553 this.field_12_textRotation = field_12_textRotation;
554 }
555
556
560 public void setAutoColor(boolean value)
561 {
562 field_9_options1 = autoColor.setShortBoolean(field_9_options1, value);
563 }
564
565
569 public boolean isAutoColor()
570 {
571 return autoColor.isSet(field_9_options1);
572 }
573
574
578 public void setShowKey(boolean value)
579 {
580 field_9_options1 = showKey.setShortBoolean(field_9_options1, value);
581 }
582
583
587 public boolean isShowKey()
588 {
589 return showKey.isSet(field_9_options1);
590 }
591
592
596 public void setShowValue(boolean value)
597 {
598 field_9_options1 = showValue.setShortBoolean(field_9_options1, value);
599 }
600
601
605 public boolean isShowValue()
606 {
607 return showValue.isSet(field_9_options1);
608 }
609
610
614 public void setVertical(boolean value)
615 {
616 field_9_options1 = vertical.setShortBoolean(field_9_options1, value);
617 }
618
619
623 public boolean isVertical()
624 {
625 return vertical.isSet(field_9_options1);
626 }
627
628
632 public void setAutoGeneratedText(boolean value)
633 {
634 field_9_options1 = autoGeneratedText.setShortBoolean(field_9_options1, value);
635 }
636
637
641 public boolean isAutoGeneratedText()
642 {
643 return autoGeneratedText.isSet(field_9_options1);
644 }
645
646
650 public void setGenerated(boolean value)
651 {
652 field_9_options1 = generated.setShortBoolean(field_9_options1, value);
653 }
654
655
659 public boolean isGenerated()
660 {
661 return generated.isSet(field_9_options1);
662 }
663
664
668 public void setAutoLabelDeleted(boolean value)
669 {
670 field_9_options1 = autoLabelDeleted.setShortBoolean(field_9_options1, value);
671 }
672
673
677 public boolean isAutoLabelDeleted()
678 {
679 return autoLabelDeleted.isSet(field_9_options1);
680 }
681
682
686 public void setAutoBackground(boolean value)
687 {
688 field_9_options1 = autoBackground.setShortBoolean(field_9_options1, value);
689 }
690
691
695 public boolean isAutoBackground()
696 {
697 return autoBackground.isSet(field_9_options1);
698 }
699
700
704 public void setRotation(short value)
705 {
706 field_9_options1 = rotation.setShortValue(field_9_options1, value);
707 }
708
709
713 public short getRotation()
714 {
715 return rotation.getShortValue(field_9_options1);
716 }
717
718
722 public void setShowCategoryLabelAsPercentage(boolean value)
723 {
724 field_9_options1 = showCategoryLabelAsPercentage.setShortBoolean(field_9_options1, value);
725 }
726
727
731 public boolean isShowCategoryLabelAsPercentage()
732 {
733 return showCategoryLabelAsPercentage.isSet(field_9_options1);
734 }
735
736
740 public void setShowValueAsPercentage(boolean value)
741 {
742 field_9_options1 = showValueAsPercentage.setShortBoolean(field_9_options1, value);
743 }
744
745
749 public boolean isShowValueAsPercentage()
750 {
751 return showValueAsPercentage.isSet(field_9_options1);
752 }
753
754
758 public void setShowBubbleSizes(boolean value)
759 {
760 field_9_options1 = showBubbleSizes.setShortBoolean(field_9_options1, value);
761 }
762
763
767 public boolean isShowBubbleSizes()
768 {
769 return showBubbleSizes.isSet(field_9_options1);
770 }
771
772
776 public void setShowLabel(boolean value)
777 {
778 field_9_options1 = showLabel.setShortBoolean(field_9_options1, value);
779 }
780
781
785 public boolean isShowLabel()
786 {
787 return showLabel.isSet(field_9_options1);
788 }
789
790
794 public void setDataLabelPlacement(short value)
795 {
796 field_11_options2 = dataLabelPlacement.setShortValue(field_11_options2, value);
797 }
798
799
803 public short getDataLabelPlacement()
804 {
805 return dataLabelPlacement.getShortValue(field_11_options2);
806 }
807
808
809 }
810
811
812
813
814