1 17 18 19 20 package org.apache.fop.render.afp.modca; 21 22 import java.awt.Color ; 23 import java.io.IOException ; 24 import java.io.OutputStream ; 25 import java.io.UnsupportedEncodingException ; 26 import java.util.ArrayList ; 27 28 44 public class PresentationTextObject extends AbstractNamedAFPObject { 45 46 49 private static final String DEFAULT_NAME = "PTO00001"; 50 51 private PresentationTextData currentPresentationTextData = null; 52 53 private ArrayList presentationTextData = new ArrayList (); 54 55 58 public PresentationTextObject() { 59 60 this(DEFAULT_NAME); 61 62 } 63 64 68 public PresentationTextObject(String name) { 69 70 super(name); 71 72 } 73 74 92 public void createTextData(int fontNumber, int x, int y, Color col, int vsci, int ica, byte[] data) { 93 94 createTextData(fontNumber, x, y, 0, col, vsci, ica, data); 96 97 } 98 99 119 public void createTextData(int fontNumber, int x, int y, int orientation, 120 Color col, int vsci, int ica, byte[] data) { 121 122 if (currentPresentationTextData == null) { 123 startPresentationTextData(); 124 } 125 126 try { 127 128 currentPresentationTextData.createTextData(fontNumber, x, y, 129 orientation, col, vsci, ica, data); 130 131 } catch (MaximumSizeExceededException msee) { 132 133 endPresentationTextData(); 134 createTextData(fontNumber, x, y, orientation, col, vsci, ica, data); 135 136 } 137 138 } 139 140 156 public void createLineData(int x1, int y1, int x2, int y2, int thickness, Color col) { 157 createLineData(x1, y1, x2, y2, thickness, 0, col); 159 } 160 161 180 public void createLineData(int x1, int y1, int x2, int y2, int thickness, 181 int orientation, Color col) { 182 183 if (currentPresentationTextData == null) { 184 startPresentationTextData(); 185 } 186 187 try { 188 189 currentPresentationTextData.createLineData(x1, y1, x2, y2, 190 thickness, orientation, col); 191 192 } catch (MaximumSizeExceededException msee) { 193 194 endPresentationTextData(); 195 createLineData(x1, y1, x2, y2, thickness, orientation, col); 196 197 } 198 199 } 200 201 204 private void startPresentationTextData() { 205 206 if (presentationTextData.size() == 0) { 207 currentPresentationTextData = new PresentationTextData(true); 208 } else { 209 currentPresentationTextData = new PresentationTextData(); 210 } 211 212 presentationTextData.add(currentPresentationTextData); 213 214 } 215 216 219 private void endPresentationTextData() { 220 221 currentPresentationTextData = null; 222 223 } 224 225 230 public void writeDataStream(OutputStream os) 231 throws IOException { 232 233 writeStart(os); 234 235 writeObjectList(presentationTextData, os); 236 237 writeEnd(os); 238 239 } 240 241 public String getName() { 242 243 return _name; 244 245 } 246 247 251 private void writeStart(OutputStream os) 252 throws IOException { 253 254 byte[] data = new byte[17]; 255 256 data[0] = 0x5A; data[1] = 0x00; data[2] = 0x10; data[3] = (byte) 0xD3; data[4] = (byte) 0xA8; data[5] = (byte) 0x9B; data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; 266 for (int i = 0; i < _nameBytes.length; i++) { 267 268 data[9 + i] = _nameBytes[i]; 269 270 } 271 272 os.write(data); 273 274 } 275 276 280 private void writeEnd(OutputStream os) 281 throws IOException { 282 283 284 byte[] data = new byte[17]; 285 286 data[0] = 0x5A; data[1] = 0x00; data[2] = 0x10; data[3] = (byte) 0xD3; data[4] = (byte) 0xA9; data[5] = (byte) 0x9B; data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; 296 for (int i = 0; i < _nameBytes.length; i++) { 297 298 data[9 + i] = _nameBytes[i]; 299 300 } 301 302 os.write(data); 303 304 } 305 306 313 public void endControlSequence() { 314 315 if (currentPresentationTextData == null) { 316 startPresentationTextData(); 317 } 318 319 try { 320 321 currentPresentationTextData.endControlSequence(); 322 323 } catch (MaximumSizeExceededException msee) { 324 325 endPresentationTextData(); 326 endControlSequence(); 327 328 } 329 330 } 331 332 } | Popular Tags |