# =============== Bitmap header ================
for x in [0..13] do
var b = fileReader.read_byte
- if b == null then
- return
- end
- bitmap_header[x] = b.to_i
+ if b < 0 then return
+ bitmap_header[x] = b
end
self.file_size = get_value(bitmap_header.subarray(2, 4))
self.data_offset = get_value(bitmap_header.subarray(10, 4))
# =============== DIB header ================
for x in [0..39] do
var b = fileReader.read_byte
- if b == null then return
- dib_header[x] = b.to_i
+ if b < 0 then return
+ dib_header[x] = b
end
var dib_size = get_value(dib_header.subarray(0, 4))
# only support BITMAPINFOHEADER
for x in [0..self.height[
do
var row = new Array[Int].with_capacity(self.width)
+ var rgb_str = new CString(3)
for y in [0..self.width[
do
- var bts = fileReader.read_bytes(3)
- if bts.length != 3 then return
- var red = bts[0] << 16
- var green = bts[1] << 8
- var blue = bts[2]
+ var bts = fileReader.read_bytes_to_cstring(rgb_str, 3)
+ if bts < 3 then return
+ var red = rgb_str[0] << 16
+ var green = rgb_str[1] << 8
+ var blue = rgb_str[2]
row.add(red.to_i + green.to_i + blue.to_i)
end
self.data.add(row)