Modulo:Koloro de valoro

El Vikipedio, la libera enciklopedio
Dokumentado Dokumentado

Modulo uzata de Ŝablono:Koloro de valoro.


Se vi havas demandon pri ĉi tiu Lua-modulo, tiam vi povas demandi en la diskutejo pri Lua-moduloj. La Intervikiaj ligiloj estu metataj al Vikidatumoj. (Vidu Helpopaĝon pri tio.)
local akiruArgumentojn = require('Modulo:Arguments').getArgs
local p = {}

local function rvb(koloro)
	local _, _, R, V, B = koloro:find('(%w%w)(%w%w)(%w%w)')
	
	return tonumber(R, 16), tonumber(V, 16), tonumber(B, 16)
end

function p.cxefa(kadro)
	local argoj = akiruArgumentojn(kadro)
	local valoro = tonumber(argoj[1])
	local minValoro = tonumber(argoj[2])
	local maksValoro = tonumber(argoj[3])
	
	if valoro == nil or minValoro == nil or maksValoro == nil then
		return require('Modulo:Eraro').eraro{'La parametroj 1, 2, kaj 3 estas devigaj kaj endas esti numeroj.'}
	end
	
	local minR, minV, minB = rvb(argoj[4] or 'FFFFFF')
	local maksR, maksV, maksB = rvb(argoj[5] or '000000')
	
	local elcento = math.max(0, math.min(1, (valoro - minValoro) / (maksValoro - minValoro)))

	local rugxa = minR + ((maksR - minR) * elcento)
	local verda = minV + ((maksV - minV) * elcento)
	local blua = minB + ((maksB - minB) * elcento)

	if argoj['deksesuma'] then
		return string.format('#%x%x%x', rugxa, verda, blua)
	else
		return string.format('rgb(%.0f,%.0f,%.0f)', rugxa, verda, blua)
	end
end

return p