mirror of
https://github.com/orange-cpp/omath.git
synced 2026-04-19 03:03:27 +00:00
97 lines
2.6 KiB
Lua
97 lines
2.6 KiB
Lua
local function approx(a, b, eps) return math.abs(a - b) < (eps or 1e-4) end
|
|
|
|
function Color_Constructor_float()
|
|
local c = omath.Color.new(1, 0.5, 0.25, 1)
|
|
assert(approx(c.r, 1) and approx(c.g, 0.5) and approx(c.b, 0.25) and approx(c.a, 1))
|
|
end
|
|
|
|
function Color_Constructor_default()
|
|
local c = omath.Color.new()
|
|
assert(c ~= nil)
|
|
end
|
|
|
|
function Color_Constructor_clamping()
|
|
local c = omath.Color.new(2, -1, 0.5, 1)
|
|
assert(approx(c.r, 1) and approx(c.g, 0) and approx(c.b, 0.5))
|
|
end
|
|
|
|
function Color_from_rgba()
|
|
local c = omath.Color.from_rgba(255, 128, 0, 255)
|
|
assert(approx(c.r, 1) and approx(c.g, 128/255) and approx(c.b, 0) and approx(c.a, 1))
|
|
end
|
|
|
|
function Color_from_hsv_components()
|
|
local c = omath.Color.from_hsv(0, 1, 1)
|
|
assert(approx(c.r, 1) and approx(c.g, 0) and approx(c.b, 0))
|
|
end
|
|
|
|
function Color_from_hsv_struct()
|
|
local hsv = omath.Hsv.new()
|
|
hsv.hue = 0
|
|
hsv.saturation = 1
|
|
hsv.value = 1
|
|
local c = omath.Color.from_hsv(hsv)
|
|
assert(approx(c.r, 1) and approx(c.g, 0) and approx(c.b, 0))
|
|
end
|
|
|
|
function Color_red()
|
|
local c = omath.Color.red()
|
|
assert(approx(c.r, 1) and approx(c.g, 0) and approx(c.b, 0) and approx(c.a, 1))
|
|
end
|
|
|
|
function Color_green()
|
|
local c = omath.Color.green()
|
|
assert(approx(c.r, 0) and approx(c.g, 1) and approx(c.b, 0) and approx(c.a, 1))
|
|
end
|
|
|
|
function Color_blue()
|
|
local c = omath.Color.blue()
|
|
assert(approx(c.r, 0) and approx(c.g, 0) and approx(c.b, 1) and approx(c.a, 1))
|
|
end
|
|
|
|
function Color_to_hsv()
|
|
local hsv = omath.Color.red():to_hsv()
|
|
assert(approx(hsv.hue, 0) and approx(hsv.saturation, 1) and approx(hsv.value, 1))
|
|
end
|
|
|
|
function Color_set_hue()
|
|
local c = omath.Color.red()
|
|
c:set_hue(1/3)
|
|
assert(approx(c.g, 1, 1e-3))
|
|
end
|
|
|
|
function Color_set_saturation()
|
|
local c = omath.Color.red()
|
|
c:set_saturation(0)
|
|
assert(approx(c.r, c.g) and approx(c.g, c.b))
|
|
end
|
|
|
|
function Color_set_value()
|
|
local c = omath.Color.red()
|
|
c:set_value(0)
|
|
assert(approx(c.r, 0) and approx(c.g, 0) and approx(c.b, 0))
|
|
end
|
|
|
|
function Color_blend()
|
|
local c = omath.Color.red():blend(omath.Color.blue(), 0.5)
|
|
assert(approx(c.r, 0.5) and approx(c.b, 0.5))
|
|
end
|
|
|
|
function Color_blend_clamped_ratio()
|
|
local c = omath.Color.red():blend(omath.Color.blue(), 2.0)
|
|
assert(approx(c.r, 0) and approx(c.b, 1))
|
|
end
|
|
|
|
function Color_to_string()
|
|
local s = tostring(omath.Color.red())
|
|
assert(s == "[r:255, g:0, b:0, a:255]")
|
|
end
|
|
|
|
function Hsv_fields()
|
|
local hsv = omath.Hsv.new()
|
|
hsv.hue = 0.5
|
|
hsv.saturation = 0.8
|
|
hsv.value = 0.9
|
|
assert(approx(hsv.hue, 0.5) and approx(hsv.saturation, 0.8) and approx(hsv.value, 0.9))
|
|
end
|