1 17 18 19 20 package org.apache.fop.render.afp.modca; 21 import java.io.IOException ; 22 import java.io.OutputStream ; 23 import java.io.UnsupportedEncodingException ; 24 import java.util.ArrayList ; 25 import java.util.List ; 26 27 38 public class PageGroup extends AbstractNamedAFPObject { 39 40 43 private List _objects = new ArrayList (); 44 45 48 private List _tagLogicalElements = new ArrayList (); 49 50 53 private boolean _complete = false; 54 55 61 public PageGroup(String name) { 62 63 super(name); 64 65 } 66 67 73 public void addPage(PageObject page) { 74 75 if (!_objects.contains(page)) { 76 _objects.add(page); 77 } 78 79 } 80 81 84 public String getName() { 85 return _name; 86 } 87 88 96 public void createTagLogicalElement(String name, String value) { 97 98 TagLogicalElement tle = new TagLogicalElement(name, value); 99 _tagLogicalElements.add(tle); 100 101 } 102 103 109 public void createInvokeMediumMap(String name) { 110 111 InvokeMediumMap imm = new InvokeMediumMap(name); 112 _objects.add(imm); 113 114 } 115 116 119 public void endPageGroup() { 120 121 _complete = true; 122 123 } 124 125 128 public boolean isComplete() { 129 return _complete; 130 } 131 132 137 public void writeDataStream(OutputStream os) 138 throws IOException { 139 140 writeStart(os); 141 142 writeObjectList(_tagLogicalElements, os); 143 144 writeObjectList(_objects, os); 145 146 writeEnd(os); 147 148 } 149 150 154 private void writeStart(OutputStream os) 155 throws IOException { 156 157 byte[] data = new byte[17]; 158 159 data[0] = 0x5A; data[1] = 0x00; data[2] = 0x10; data[3] = (byte) 0xD3; data[4] = (byte) 0xA8; data[5] = (byte) 0xAD; data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; 169 for (int i = 0; i < _nameBytes.length; i++) { 170 171 data[9 + i] = _nameBytes[i]; 172 173 } 174 175 os.write(data); 176 177 } 178 179 183 private void writeEnd(OutputStream os) 184 throws IOException { 185 186 byte[] data = new byte[17]; 187 188 data[0] = 0x5A; data[1] = 0x00; data[2] = 0x10; data[3] = (byte) 0xD3; data[4] = (byte) 0xA9; data[5] = (byte) 0xAD; data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; 198 for (int i = 0; i < _nameBytes.length; i++) { 199 200 data[9 + i] = _nameBytes[i]; 201 202 } 203 204 os.write(data); 205 206 } 207 208 } | Popular Tags |