nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lib/core/stream: LineIterator use CachedIterator
[nit.git]
/
lib
/
bitmap
/
bitmap.nit
diff --git
a/lib/bitmap/bitmap.nit
b/lib/bitmap/bitmap.nit
index
003eb6f
..
3c66f07
100644
(file)
--- a/
lib/bitmap/bitmap.nit
+++ b/
lib/bitmap/bitmap.nit
@@
-74,10
+74,10
@@
class Bitmap
private var image_size: Int is noinit
# 14-byte bitmap header
private var image_size: Int is noinit
# 14-byte bitmap header
- private var bitmap_header: Array[Int] = [66, 77, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0]
+ private var bitmap_header = [66, 77, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0]
# 40-byte dib header
# 40-byte dib header
- private var dib_header: Array[Int] = [40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ private var dib_header = [40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 24, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
0, 0, 1, 0, 24, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
@@
-130,9
+130,7
@@
class Bitmap
# =============== Bitmap header ================
for x in [0..13] do
var b = fileReader.read_byte
# =============== Bitmap header ================
for x in [0..13] do
var b = fileReader.read_byte
- if b == null then
- return
- end
+ if b < 0 then return
bitmap_header[x] = b
end
self.file_size = get_value(bitmap_header.subarray(2, 4))
bitmap_header[x] = b
end
self.file_size = get_value(bitmap_header.subarray(2, 4))
@@
-141,7
+139,7
@@
class Bitmap
# =============== DIB header ================
for x in [0..39] do
var b = fileReader.read_byte
# =============== DIB header ================
for x in [0..39] do
var b = fileReader.read_byte
- if b == null then return
+ if b < 0 then return
dib_header[x] = b
end
var dib_size = get_value(dib_header.subarray(0, 4))
dib_header[x] = b
end
var dib_size = get_value(dib_header.subarray(0, 4))
@@
-169,14
+167,15
@@
class Bitmap
for x in [0..self.height[
do
var row = new Array[Int].with_capacity(self.width)
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
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]
- row.add(red + green + blue)
+ 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)
end
end
self.data.add(row)
end
@@
-199,10
+198,10
@@
class Bitmap
# type, Int is used.
private fun set_value(array: Array[Int], start_index: Int, value: Int)
do
# type, Int is used.
private fun set_value(array: Array[Int], start_index: Int, value: Int)
do
- array[start_index] = value.bin_and(0x000000FF)
- array[start_index + 1] = value.rshift(8).bin_and(0x000000FF)
- array[start_index + 2] = value.rshift(16).bin_and(0x000000FF)
- array[start_index + 3] = value.rshift(24).bin_and(0x000000FF)
+ array[start_index] = value & 0x000000FF
+ array[start_index + 1] = (value >> 8) & 0x000000FF
+ array[start_index + 2] = (value >> 16) & 0x000000FF
+ array[start_index + 3] = (value >> 24) & 0x000000FF
end
# Saves the bitmap into a file
end
# Saves the bitmap into a file
@@
-211,11
+210,11
@@
class Bitmap
var fw = new FileWriter.open(path)
# Write bitmap header
for x in [0..self.bitmap_header.length[ do
var fw = new FileWriter.open(path)
# Write bitmap header
for x in [0..self.bitmap_header.length[ do
- fw.write(self.bitmap_header[x].ascii.to_s)
+ fw.write(self.bitmap_header[x].code_point.to_s)
end
# Write dib header
for x in [0..self.dib_header.length[ do
end
# Write dib header
for x in [0..self.dib_header.length[ do
- fw.write(self.dib_header[x].ascii.to_s)
+ fw.write(self.dib_header[x].code_point.to_s)
end
# Write color table (if any)
# Write data (no padding for now)
end
# Write color table (if any)
# Write data (no padding for now)
@@
-223,12
+222,12
@@
class Bitmap
var row = self.data[x]
for y in [0..self.width[ do
var pixel = row[y]
var row = self.data[x]
for y in [0..self.width[ do
var pixel = row[y]
- var red = pixel.rshift(16)
- var green = pixel.bin_and(0x00FF00).rshift(8)
- var blue = pixel.bin_and(0x000000FF)
- fw.write(red.ascii.to_s)
- fw.write(green.ascii.to_s)
- fw.write(blue.ascii.to_s)
+ var red = pixel >> 16
+ var green = (pixel & 0x00FF00) >> 8
+ var blue = pixel & 0x000000FF
+ fw.write(red.code_point.to_s)
+ fw.write(green.code_point.to_s)
+ fw.write(blue.code_point.to_s)
end
end
fw.close
end
end
fw.close
@@
-241,9
+240,9
@@
class Bitmap
var row = self.data[x]
for y in [0..self.width[ do
var pixel = row[y]
var row = self.data[x]
for y in [0..self.width[ do
var pixel = row[y]
- var red = pixel.rshift(16)
- var green = pixel.bin_and(0x00FF00).rshift(8)
- var blue = pixel.bin_and(0x000000FF)
+ var red = pixel >> 16
+ var green = (pixel & 0x00FF00) >> 8
+ var blue = pixel & 0x000000FF
var lum = (0.2126 * red.to_f + 0.7152 * green.to_f + 0.0722 * blue.to_f).to_i
pixel = lum * 256 * 256 + lum * 256 + lum
self.data[x][y] = pixel
var lum = (0.2126 * red.to_f + 0.7152 * green.to_f + 0.0722 * blue.to_f).to_i
pixel = lum * 256 * 256 + lum * 256 + lum
self.data[x][y] = pixel