Rev 2132 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
package uk.me.parabola.imgfmt.app.typ;
import uk.me.parabola.imgfmt.app.BitWriter;
import uk.me.parabola.imgfmt.app.ImgFileWriter;
/**
* Holds a bitmap image for the typ file.
*
* There are a number of different formats allowed.
*
* Based on code by Thomas Lußnig, but type and colour information separated out and
* deals with more than just points.
*/
public class BitmapImage
implements Image {
private final ColourInfo colourInfo
;
private final String image
;
public BitmapImage
(ColourInfo colourInfo,
String image
) {
this.
colourInfo = colourInfo
;
this.
image = image
;
}
public void write
(ImgFileWriter writer
) {
final int bitSize = colourInfo.
getBitsPerPixel();
int cpp = colourInfo.
getCharsPerPixel();
int width = colourInfo.
getWidth();
int height = colourInfo.
getHeight();
int i =
0;
for (int h =
0; h
< height
; h++
) {
// Each row is padded to a byte boundary, creating a new bit writer for every
// row ensures that happens.
BitWriter bitWriter =
new BitWriter
();
for (int w =
0; w
< width
; w++
) {
String idx = image.
substring(i, i + cpp
);
i += cpp
;
int val = colourInfo.
getIndex(idx
);
bitWriter.
putn(val, bitSize
);
}
writer.
put(bitWriter.
getBytes(),
0, bitWriter.
getLength());
}
}
public int compare
(BitmapImage a, BitmapImage b
) {
throw new UnsupportedOperationException();
//if (a == null)
// return 1;
//if (b == null)
// return -1;
//if (a.typ < b.typ)
// return -1;
//if (a.typ > b.typ)
// return 1;
//if (a.dayNight < b.dayNight)
// return -1;
//if (a.dayNight > b.dayNight)
// return 1;
//return 0;
}
}