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

関連



そのほかの言語