Difference between revisions of "love.math.colorFromBytes (日本語)"

m
m
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{newin (日本語)|[[11.3 (日本語)|11.0]]|113|type=関数}}
+
{{newin (日本語)|[[11.3 (日本語)|11.3]]|113|type=関数}}
 
色の範囲を 0..255 から 0..1 へ変換します。
 
色の範囲を 0..255 から 0..1 へ変換します。
  
Line 38: Line 38:
 
end
 
end
 
</source>
 
</source>
 
+
== 用例 ==
 +
<source lang="lua">
 +
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
 +
</source>
 
== 関連 ==
 
== 関連 ==
 
* [[parent::love.math (日本語)]]
 
* [[parent::love.math (日本語)]]

Latest revision as of 08:16, 16 June 2023

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

関連



そのほかの言語