1 17 18 19 20 package org.apache.fop.render.afp.modca; 21 22 import java.io.IOException ; 23 import java.io.OutputStream ; 24 import java.io.UnsupportedEncodingException ; 25 26 import org.apache.fop.render.afp.tools.BinaryUtils; 27 28 41 public class IncludeObject extends AbstractNamedAFPObject { 42 43 46 private byte _objectType = (byte) 0x92; 47 48 51 private int _orientation = 0; 52 53 61 public IncludeObject(String name) { 62 63 super(name); 64 _objectType = (byte) 0xFB; 65 66 } 67 68 74 public void setOrientation(int orientation) { 75 76 if (orientation == 0 || orientation == 90 || orientation == 180 77 || orientation == 270) { 78 _orientation = orientation; 79 } else { 80 throw new IllegalArgumentException ( 81 "The orientation must be one of the values 0, 90, 180, 270"); 82 } 83 84 } 85 86 91 public void writeDataStream(OutputStream os) 92 throws IOException { 93 94 byte[] data = new byte[37]; 95 96 data[0] = 0x5A; 97 98 byte[] rl1 = BinaryUtils.convert(36, 2); data[1] = rl1[0]; 101 data[2] = rl1[1]; 102 103 data[3] = (byte) 0xD3; 105 data[4] = (byte) 0xAF; 106 data[5] = (byte) 0xC3; 107 108 data[6] = 0x00; data[7] = 0x00; data[8] = 0x00; 112 for (int i = 0; i < _nameBytes.length; i++) { 113 data[9 + i] = _nameBytes[i]; 114 } 115 116 data[17] = 0x00; 117 data[18] = _objectType; 118 119 data[20] = (byte) 0xFF; 121 data[21] = (byte) 0xFF; 122 data[22] = (byte) 0xFF; 123 124 data[23] = (byte) 0xFF; 126 data[24] = (byte) 0xFF; 127 data[25] = (byte) 0xFF; 128 129 switch (_orientation) { 130 case 90: 131 data[26] = 0x2D; 132 data[27] = 0x00; 133 data[28] = 0x5A; 134 data[29] = 0x00; 135 break; 136 case 180: 137 data[26] = 0x5A; 138 data[27] = 0x00; 139 data[28] = (byte) 0x87; 140 data[29] = 0x00; 141 break; 142 case 270: 143 data[26] = (byte) 0x87; 144 data[27] = 0x00; 145 data[28] = 0x00; 146 data[29] = 0x00; 147 break; 148 default: 149 data[26] = 0x00; 150 data[27] = 0x00; 151 data[28] = 0x2D; 152 data[29] = 0x00; 153 break; 154 } 155 156 data[30] = (byte) 0xFF; 158 data[31] = (byte) 0xFF; 159 data[32] = (byte) 0xFF; 160 161 data[33] = (byte) 0xFF; 163 data[34] = (byte) 0xFF; 164 data[35] = (byte) 0xFF; 165 166 data[36] = 0x01; 167 168 os.write(data); 169 170 } 171 172 } | Popular Tags |