1 /
55
56
57 package org.apache.poi.hssf.record;
58
59
60
61 import org.apache.poi.util.*;
62
63
70 public class AreaFormatRecord
71 extends Record
72 {
73 public final static short sid = 0x100a;
74 private int field_1_foregroundColor;
75 private int field_2_backgroundColor;
76 private short field_3_pattern;
77 private short field_4_formatFlags;
78 private BitField automatic = new BitField(0x1);
79 private BitField invert = new BitField(0x2);
80 private short field_5_forecolorIndex;
81 private short field_6_backcolorIndex;
82
83
84 public AreaFormatRecord()
85 {
86
87 }
88
89
97
98 public AreaFormatRecord(short id, short size, byte [] data)
99 {
100 super(id, size, data);
101
102 }
103
104
113
114 public AreaFormatRecord(short id, short size, byte [] data, int offset)
115 {
116 super(id, size, data, offset);
117
118 }
119
120
125 protected void validateSid(short id)
126 {
127 if (id != sid)
128 {
129 throw new RecordFormatException("Not a AreaFormat record");
130 }
131 }
132
133 protected void fillFields(byte [] data, short size, int offset)
134 {
135
136 int pos = 0;
137 field_1_foregroundColor = LittleEndian.getInt(data, pos + 0x0 + offset);
138 field_2_backgroundColor = LittleEndian.getInt(data, pos + 0x4 + offset);
139 field_3_pattern = LittleEndian.getShort(data, pos + 0x8 + offset);
140 field_4_formatFlags = LittleEndian.getShort(data, pos + 0xa + offset);
141 field_5_forecolorIndex = LittleEndian.getShort(data, pos + 0xc + offset);
142 field_6_backcolorIndex = LittleEndian.getShort(data, pos + 0xe + offset);
143
144 }
145
146 public String toString()
147 {
148 StringBuffer buffer = new StringBuffer();
149
150 buffer.append("[AREAFORMAT]\n");
151 buffer.append(" .foregroundColor = ")
152 .append("0x").append(HexDump.toHex( getForegroundColor ()))
153 .append(" (").append( getForegroundColor() ).append(" )");
154 buffer.append(System.getProperty("line.separator"));
155 buffer.append(" .backgroundColor = ")
156 .append("0x").append(HexDump.toHex( getBackgroundColor ()))
157 .append(" (").append( getBackgroundColor() ).append(" )");
158 buffer.append(System.getProperty("line.separator"));
159 buffer.append(" .pattern = ")
160 .append("0x").append(HexDump.toHex( getPattern ()))
161 .append(" (").append( getPattern() ).append(" )");
162 buffer.append(System.getProperty("line.separator"));
163 buffer.append(" .formatFlags = ")
164 .append("0x").append(HexDump.toHex( getFormatFlags ()))
165 .append(" (").append( getFormatFlags() ).append(" )");
166 buffer.append(System.getProperty("line.separator"));
167 buffer.append(" .automatic = ").append(isAutomatic()).append('\n');
168 buffer.append(" .invert = ").append(isInvert()).append('\n');
169 buffer.append(" .forecolorIndex = ")
170 .append("0x").append(HexDump.toHex( getForecolorIndex ()))
171 .append(" (").append( getForecolorIndex() ).append(" )");
172 buffer.append(System.getProperty("line.separator"));
173 buffer.append(" .backcolorIndex = ")
174 .append("0x").append(HexDump.toHex( getBackcolorIndex ()))
175 .append(" (").append( getBackcolorIndex() ).append(" )");
176 buffer.append(System.getProperty("line.separator"));
177
178 buffer.append("[/AREAFORMAT]\n");
179 return buffer.toString();
180 }
181
182 public int serialize(int offset, byte[] data)
183 {
184 int pos = 0;
185
186 LittleEndian.putShort(data, 0 + offset, sid);
187 LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize() - 4));
188
189 LittleEndian.putInt(data, 4 + offset + pos, field_1_foregroundColor);
190 LittleEndian.putInt(data, 8 + offset + pos, field_2_backgroundColor);
191 LittleEndian.putShort(data, 12 + offset + pos, field_3_pattern);
192 LittleEndian.putShort(data, 14 + offset + pos, field_4_formatFlags);
193 LittleEndian.putShort(data, 16 + offset + pos, field_5_forecolorIndex);
194 LittleEndian.putShort(data, 18 + offset + pos, field_6_backcolorIndex);
195
196 return getRecordSize();
197 }
198
199
202 public int getRecordSize()
203 {
204 return 4 + 4 + 4 + 2 + 2 + 2 + 2;
205 }
206
207 public short getSid()
208 {
209 return this.sid;
210 }
211
212 public Object clone() {
213 AreaFormatRecord rec = new AreaFormatRecord();
214
215 rec.field_1_foregroundColor = field_1_foregroundColor;
216 rec.field_2_backgroundColor = field_2_backgroundColor;
217 rec.field_3_pattern = field_3_pattern;
218 rec.field_4_formatFlags = field_4_formatFlags;
219 rec.field_5_forecolorIndex = field_5_forecolorIndex;
220 rec.field_6_backcolorIndex = field_6_backcolorIndex;
221 return rec;
222 }
223
224
225
226
227
230 public int getForegroundColor()
231 {
232 return field_1_foregroundColor;
233 }
234
235
238 public void setForegroundColor(int field_1_foregroundColor)
239 {
240 this.field_1_foregroundColor = field_1_foregroundColor;
241 }
242
243
246 public int getBackgroundColor()
247 {
248 return field_2_backgroundColor;
249 }
250
251
254 public void setBackgroundColor(int field_2_backgroundColor)
255 {
256 this.field_2_backgroundColor = field_2_backgroundColor;
257 }
258
259
262 public short getPattern()
263 {
264 return field_3_pattern;
265 }
266
267
270 public void setPattern(short field_3_pattern)
271 {
272 this.field_3_pattern = field_3_pattern;
273 }
274
275
278 public short getFormatFlags()
279 {
280 return field_4_formatFlags;
281 }
282
283
286 public void setFormatFlags(short field_4_formatFlags)
287 {
288 this.field_4_formatFlags = field_4_formatFlags;
289 }
290
291
294 public short getForecolorIndex()
295 {
296 return field_5_forecolorIndex;
297 }
298
299
302 public void setForecolorIndex(short field_5_forecolorIndex)
303 {
304 this.field_5_forecolorIndex = field_5_forecolorIndex;
305 }
306
307
310 public short getBackcolorIndex()
311 {
312 return field_6_backcolorIndex;
313 }
314
315
318 public void setBackcolorIndex(short field_6_backcolorIndex)
319 {
320 this.field_6_backcolorIndex = field_6_backcolorIndex;
321 }
322
323
327 public void setAutomatic(boolean value)
328 {
329 field_4_formatFlags = automatic.setShortBoolean(field_4_formatFlags, value);
330 }
331
332
336 public boolean isAutomatic()
337 {
338 return automatic.isSet(field_4_formatFlags);
339 }
340
341
345 public void setInvert(boolean value)
346 {
347 field_4_formatFlags = invert.setShortBoolean(field_4_formatFlags, value);
348 }
349
350
354 public boolean isInvert()
355 {
356 return invert.isSet(field_4_formatFlags);
357 }
358
359
360 }
361
362
363
364
365