1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.imaging.formats.bmp;
18
19 import java.io.ByteArrayInputStream;
20 import java.io.IOException;
21 import java.io.InputStream;
22 import java.util.Objects;
23
24 import org.apache.commons.imaging.ImagingException;
25 import org.apache.commons.imaging.common.ImageBuilder;
26
27 abstract class AbstractPixelParser {
28
29 final BmpHeaderInfo bhi;
30 final byte[] colorTable;
31 final byte[] imageData;
32
33 final InputStream is;
34
35 AbstractPixelParser(final BmpHeaderInfo bmpHeaderInfo, final byte[] colorTable, final byte[] imageData) {
36 this.bhi = Objects.requireNonNull(bmpHeaderInfo, "bmpHeaderInfo");
37 this.colorTable = colorTable;
38 this.imageData = Objects.requireNonNull(imageData, "imageData");
39
40 is = new ByteArrayInputStream(imageData);
41 }
42
43 int getColorTableRgb(final int index) {
44 final int actual = index * 4;
45 final int blue = 0xff & colorTable[actual + 0];
46 final int green = 0xff & colorTable[actual + 1];
47 final int red = 0xff & colorTable[actual + 2];
48 final int alpha = 0xff;
49
50 return alpha << 24 | red << 16 | green << 8 | blue << 0;
51 }
52
53 public abstract void processImage(ImageBuilder imageBuilder) throws ImagingException, IOException;
54
55 }