- 1,687
- 1,547
color.lua - многофункциональная библиотека для работы с цветами в Lua. Эта библиотека была создана с целью упростить манипуляции с цветами в различных форматах (RGB, ARGB, HSV, HSL и др.), а также добавить возможность создания палитр, градиентов, теней, контрастных цветов и многого другого.
Функционал:
Использование: (также что-то потыкать можно в простом демо-файле, который нужно установить в папку moonloader)
Функционал:
- Создание цветов из разных представлений:
- RGB / BGR
- RGBA / ARGB / ABGR / BGRA
- HSV / HSL
- Oklab
- Единичные значения (0–1)
- Получение компонентов цвета:
- getRed, getGreen, getBlue, getAlpha
- getHue, getSaturation, getValue, getLightness
- getOklabA, getOklabB, getOklabLightness
- Установка отдельных компонентов цвета:
- setRed, setGreen, setBlue, setAlpha
- setHue, setSaturation, setValue, setLightness
- setOklabA, setOklabB, setOklabLightness (а также with* вариации, что создают копию цвета, изменяя определенный компонент)
- Конвертация между цветовыми моделями:
- asRGB, asBGR, asARGB, asRGBA, asABGR, asBGRA, asHSV, asHSL, asOklab
- unpackAsARGB, unpackAsRGBA, и другие unpackAs* для получения цвета по соответствующим компонентам.
- Операции с цветами:
- Линейная интерполяция (lerp)
- Кубическая интерполяция (catmullRom)
- Создание палитры (palette)
- Градиенты (gradient)
- Тени (shadow)
- Инвертирование цвета (inverted)
- Вычисление контраста (contrastWith)
- Работа с предопределенными цветами:
- WHITE, BLACK, RED, BLUE, GREEN, YELLOW, CYAN, MAGENTA, GRAY и другие
- Дополнительные утилиты:
- Проверка, является ли цвет тёмным или светлым (isDark, isLight)
- Сравнение цветов (equal)
- Изменение тона (tone, darker, lighter)
- Адаптация по Adobe-style (adobe)
Использование: (также что-то потыкать можно в простом демо-файле, который нужно установить в папку moonloader)
Lua:
-- Подключаем библиотеку Color
local Color = require("color")
-- 1. Создаём красный цвет
local red = Color.RED
print("Красный цвет:", red:getRed(), red:getGreen(), red:getBlue())
-- 2. Создаём зелёный цвет из HSV
local green = Color.HSV(120, 1, 1)
print("Зелёный цвет:", green:getRed(), green:getGreen(), green:getBlue())
-- 3. Линейная интерполяция между красным и зелёным (50%)
local yellowish = red:lerp(green, 0.5)
print("Полутон красно-зелёного:", yellowish:getRed(), yellowish:getGreen(), yellowish:getBlue())
-- 4. Получаем компоненты в разных форматах
print("ARGB:", string.format("%X", yellowish:asARGB()))
print("RGBA:", string.format("%X", yellowish:asRGBA()))
print("ABGR:", string.format("%X", yellowish:asABGR()))
print("BGRA:", string.format("%X", yellowish:asBGRA()))
-- 5. Получаем значения HSL
local h, s, l = yellowish:asHSL()
print(string.format("HSL: %.1f°, %.2f, %.2f", h, s, l))
-- 6. Изменяем яркость на 20%
local lighter = yellowish:lighter(2)
print("Светлее:", lighter:getRed(), lighter:getGreen(), lighter:getBlue())
-- 7. Создаём тень цвета
local shadow = yellowish:shadow(0.3)
print("Тень:", shadow:getRed(), shadow:getGreen(), shadow:getBlue())
-- 8. Проверка контраста между двумя цветами
local contrast = red:contrastWith(green)
print("Контраст между красным и зелёным:", contrast)
-- 9. Инвертируем цвет
local inverted = red:inverted()
print("Инвертированный красный:", inverted:getRed(), inverted:getGreen(), inverted:getBlue())
-- 10. Генерация градиента из красного в синий (5 шагов)
local gradient = red:gradient(Color.BLUE, 5)
for i, color in ipairs(gradient) do
print("Градиент " .. i .. ":", color:getRed(), color:getGreen(), color:getBlue())
end
-- 11. Генерация палитры цветов на основе зелёного
local palette = green:palette(6)
for i, color in ipairs(palette) do
print("Цвет в палитре " .. i .. ":", color:getRed(), color:getGreen(), color:getBlue())
end
-- 12. Работа с альфа-каналом
local transparent_green = green:withAlpha(128)
print("Прозрачный зелёный:", transparent_green:getRed(), transparent_green:getGreen(), transparent_green:getBlue(), transparent_green:getAlpha())
-- 13. Использование псевдонимов для получения HSV и HSL значений
local hue, sat, val = green:unpackAsHSV()
print("HSV через unpackAsHSV:", hue, sat, val)
local hue2, sat2, light = green:unpackAsHSL()
print("HSL через unpackAsHSL:", hue2, sat2, light)
Вложения
Последнее редактирование: