love.math.colorFromBytes (日本語)
LÖVE 11.3 から使用可能 |
この関数は以前のバージョンでは非対応です。 |
色の範囲を 0..255 から 0..1 へ変換します。
関数
概要
r, g, b, a = love.math.colorFromBytes( rb, gb, bb, ab )
引数
number rb
- 0..255 までの範囲によるの赤色の成分。
number gb
- 0..255 までの範囲によるの緑色の成分。
number bb
- 0..255 までの範囲によるの青色の成分。
number ab (nil)
- 0..255 までの範囲によるの透過色の成分。
返値
number r
- 0..1 までの範囲によるの赤色の成分。
number g
- 0..1 までの範囲によるの緑色の成分。
number b
- 0..1 までの範囲によるの青色の成分。
number a (nil)
- 0..1 までの範囲によるの透過色の成分。 nil ならば透過色は未使用です。
注釈
下記は 11.2 以前の実装例です。
function love.math.colorFromBytes(r, g, b, a)
if type(r) == "table" then
r, g, b, a = r[1], r[2], r[3], r[4]
end
r = clamp01(floor(r + 0.5) / 255)
g = clamp01(floor(g + 0.5) / 255)
b = clamp01(floor(b + 0.5) / 255)
a = a ~= nil and clamp01(floor(a + 0.5) / 255) or nil
return r, g, b, a
end
clamp01
の定義は下記の通りです。
local function clamp01(x)
return math.min(math.max(x, 0), 1)
end
用例
local function setColorHEX(rgba)
-- setColorHEX(rgba)
-- where rgba is string as "#336699cc"
local rb = tonumber(string.sub(rgba, 2, 3), 16)
local gb = tonumber(string.sub(rgba, 4, 5), 16)
local bb = tonumber(string.sub(rgba, 6, 7), 16)
local ab = tonumber(string.sub(rgba, 8, 9), 16) or nil
-- print (rb, gb, bb, ab) -- 結果は 51 102 153 204
-- print (love.math.colorFromBytes( rb, gb, bb, ab )) -- 結果は 0.2 0.4 0.6 0.8
love.graphics.setColor (love.math.colorFromBytes( rb, gb, bb, ab ))
end
関連