61 lines
No EOL
911 B
Ruby
61 lines
No EOL
911 B
Ruby
class Pixel
|
|
@mp = nil
|
|
|
|
@r = 0
|
|
@g = 0
|
|
@b = 0
|
|
|
|
def initialize(mp)
|
|
@mp = mp
|
|
|
|
@r = @mp.red
|
|
@g = @mp.green
|
|
@b = @mp.blue
|
|
end
|
|
|
|
def randomize
|
|
@r = ((@r >> 2) << 2) | rand(4)
|
|
@g = ((@g >> 2) << 2) | rand(4)
|
|
@b = ((@b >> 2) << 2) | rand(4)
|
|
end
|
|
|
|
def getMagickPixel
|
|
@mp.red = @r
|
|
@mp.green = @g
|
|
@mp.blue = @b
|
|
return @mp
|
|
end
|
|
|
|
def getPixelBits()
|
|
bits = 0
|
|
|
|
bits = (bits << 8) | @r
|
|
bits = (bits << 8) | @g
|
|
bits = (bits << 8) | @b
|
|
|
|
return bits
|
|
end
|
|
|
|
def encodeBits(bits)
|
|
@r = ((@r >> 2) << 2) | (bits & 3)
|
|
bits = bits >> 2
|
|
|
|
@g = ((@g >> 2) << 2) | (bits & 3)
|
|
bits = bits >> 2
|
|
|
|
@b = ((@b >> 2) << 2) | (bits & 3)
|
|
bits = bits >> 2
|
|
|
|
return bits
|
|
end
|
|
|
|
def decodeBits
|
|
bits = 0
|
|
|
|
bits = (bits << 2) | (@b & 3)
|
|
bits = (bits << 2) | (@g & 3)
|
|
bits = (bits << 2) | (@r & 3)
|
|
|
|
return bits
|
|
end
|
|
end |