MCPcopy Create free account
hub / github.com/AstroImageJ/astroimagej / unpack

Method unpack

ij/src/main/java/ij/plugin/BMP_Reader.java:217–245  ·  view source on GitHub ↗
(byte[] rawData, int rawOffset, int bpp, byte[] byteData, int byteOffset, int w)

Source from the content-addressed store, hash-verified

215 }
216
217 void unpack(byte[] rawData, int rawOffset, int bpp, byte[] byteData, int byteOffset, int w) throws Exception {
218 int j = byteOffset;
219 int k = rawOffset;
220 byte mask;
221 int pixPerByte;
222
223 switch (bpp) {
224 case 1: mask = (byte)0x01; pixPerByte = 8; break;
225 case 4: mask = (byte)0x0f; pixPerByte = 2; break;
226 case 8: mask = (byte)0xff; pixPerByte = 1; break;
227 default:
228 throw new Exception("Unsupported bits-per-pixel value: " + bpp);
229 }
230
231 for (int i = 0;;) {
232 int shift = 8 - bpp;
233 for (int ii = 0; ii < pixPerByte; ii++) {
234 byte br = rawData[k];
235 br >>= shift;
236 byteData[j] = (byte)(br & mask);
237 //System.out.println("Setting byteData[" + j + "]=" + Test.byteToHex(byteData[j]));
238 j++;
239 i++;
240 if (i == w) return;
241 shift -= bpp;
242 }
243 k++;
244 }
245 }
246
247 void unpack24(byte[] rawData, int rawOffset, int[] intData, int intOffset, int w) {
248 int j = intOffset;

Callers 1

getPixelDataMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected