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 org.apache.fop.render.afp.tools.BinaryUtils; 25 26 32 public class ImageOutputControl extends AbstractAFPObject { 33 34 37 private int _orientation = 0; 38 39 43 private int _Xcoordinate = 0; 44 45 49 private int _Ycoordinate = 0; 50 51 54 private boolean _singlepoint = true; 55 56 69 public ImageOutputControl(int x, int y) { 70 71 _Xcoordinate = x; 72 _Ycoordinate = y; 73 74 } 75 76 81 public void writeDataStream(OutputStream os) 82 throws IOException { 83 84 byte[] data = new byte[33]; 85 86 data[0] = 0x5A; 87 data[1] = 0x00; 88 data[2] = 0x20; 89 data[3] = (byte) 0xD3; 90 data[4] = (byte) 0xA7; 91 data[5] = (byte) 0x7B; 92 data[6] = 0x00; 93 data[7] = 0x00; 94 data[8] = 0x00; 95 96 byte[] x1 = BinaryUtils.convert(_Xcoordinate, 3); 98 data[9] = x1[0]; 99 data[10] = x1[1]; 100 data[11] = x1[2]; 101 102 byte[] x2 = BinaryUtils.convert(_Ycoordinate, 3); 104 data[12] = x2[0]; 105 data[13] = x2[1]; 106 data[14] = x2[2]; 107 108 switch (_orientation) { 109 case 0: 110 data[15] = 0x00; 112 data[16] = 0x00; 113 data[17] = 0x2D; 114 data[18] = 0x00; 115 break; 116 case 90: 117 data[15] = 0x2D; 119 data[16] = 0x00; 120 data[17] = 0x5A; 121 data[18] = 0x00; 122 break; 123 case 180: 124 data[15] = 0x5A; 126 data[16] = 0x00; 127 data[17] = (byte) 0x87; 128 data[18] = 0x00; 129 break; 130 case 270: 131 data[15] = (byte) 0x87; 133 data[16] = 0x00; 134 data[17] = 0x00; 135 data[18] = 0x00; 136 break; 137 default: 138 data[15] = 0x00; 140 data[16] = 0x00; 141 data[17] = 0x2D; 142 data[18] = 0x00; 143 break; 144 145 } 146 147 data[19] = 0x00; 149 data[20] = 0x00; 150 data[21] = 0x00; 151 data[22] = 0x00; 152 data[23] = 0x00; 153 data[24] = 0x00; 154 data[25] = 0x00; 155 data[26] = 0x00; 156 157 if (_singlepoint) { 158 data[27] = 0x03; 159 data[28] = (byte) 0xE8; 160 data[29] = 0x03; 161 data[30] = (byte) 0xE8; 162 } else { 163 data[27] = 0x07; 164 data[28] = (byte) 0xD0; 165 data[29] = 0x07; 166 data[30] = (byte) 0xD0; 167 } 168 169 data[31] = (byte) 0xFF; 171 data[32] = (byte) 0xFF; 172 173 os.write(data); 174 175 } 176 177 184 public void setOrientation(int orientation) { 185 186 if (orientation == 0 || orientation == 90 || orientation == 180 187 || orientation == 270) { 188 _orientation = orientation; 189 } else { 190 throw new IllegalArgumentException ( 191 "The orientation must be one of the values 0, 90, 180, 270"); 192 } 193 194 } 195 196 204 public void setSinglepoint(boolean singlepoint) { 205 _singlepoint = singlepoint; 206 } 207 208 } | Popular Tags |