Класс Color
В Ren'Py есть класс Color, который можно использовать для преобразования из одного цветового пространства в другое или для выполнения различных операций теории цвета. Цвета неизменяемы и могут использоваться везде, где можно использовать кортеж цвета.
Кортежи цвета работают в одном из трёх цветовых пространств.
RGB - Красный, Зелёный, Синий
HLS - Тон, Светлота, Насыщенность
HSV - Тон, Насыщенность, Яркость
В качестве примера некоторых вычислений, которые можно выполнить, все следующие цвета являются ярко-зелёными:
# Standard Ren'Py Colors.
Color("#0f0")
Color("#00ff00")
Color((0, 255, 0, 255))
# Convert from other color spaces.
Color(hls=(.333, 0.5, 1.0))
Color(hsv=(.333, 1.0, 1.0))
# Turns red into green via a method that returns a new color.
Color("#f00").rotate_hue(.333)
- class Color(color=None, hls=None, hsv=None, rgb=None, alpha=1.0)
Класс Color используется для представления и управления цветами, а также для преобразования между различными цветовыми пространствами. Он также представляет непрозрачность в виде альфа-канала.
При создании Color следует указывать не более одного из аргументов color, hls, hsv или rgb. (Если все они равны None, возвращается None.)
- color
Цвет в одном из стандартных форматов, которые понимает Ren'Py. К ним относятся:
Объект Color.
Кортеж (r, g, b) или (r, g, b, a), в котором все числа находятся в диапазоне от 0 до 255.
Строка, задающая шестнадцатеричный цвет, в формате "#rgb", "#rgba", "#rrggbb" или "#rrggbbaa".
- hls
Цвет в цветовом пространстве hue-lightness-saturation (тон-светлота-насыщенность). Должен быть передан кортеж из трёх компонентов, где каждый компонент находится в диапазоне от 0.0 до 1.0.
- hsv
Цвет в цветовом пространстве hue-saturation-value (тон-насыщенность-значение). Должен быть передан кортеж из трёх компонентов, где каждый компонент находится в диапазоне от 0.0 до 1.0.
- rgb
Цвет в цветовом пространстве red-green-blue (красный-зелёный-синий). Должен быть передан кортеж из трёх компонентов, где каждый компонент находится в диапазоне от 0.0 до 1.0.
Если переданный цвет не содержит альфа-значение, используется alpha. alpha должен быть в диапазоне от 0.0 до 1.0.
Объекты Color могут использоваться как 4-компонентные кортежи, где компоненты – это (красный, зелёный, синий и альфа). При использовании в качестве кортежа значение каждого компонента находится в диапазоне от 0 до 255.
Объекты Color поддерживают операторы +, - и * представляющие покомпонентное сложение, вычитание и умножение. Некоторые применения этих операторов могут привести к созданию цветов с компонентами, выходящими за пределы поддерживаемого диапазона. Такие цвета не следует передавать в другие части Ren'Py. (Можно вызвать метод normalize, чтобы вернуть новый цвет с компонентами, ограниченными до правильного диапазона.)
Объект Color имеет следующие свойства:
- hls
Возвращает цвет в виде кортежа из трёх чисел с плавающей запятой, задающих тон, светлоту и насыщенность. Каждый компонент находится в диапазоне от 0.0 до 1.0.
- hsv
Возвращает цвет в виде кортежа из трёх чисел с плавающей запятой, задающих тон, насыщенность и значение. Каждый компонент находится в диапазоне от 0.0 до 1.0.
- rgb
Возвращает цвет в виде кортежа из трёх чисел с плавающей запятой, задающих красный, зелёный и синий компоненты. Каждый компонент находится в диапазоне от 0.0 до 1.0.
- rgba
Возвращает цвет в виде кортежа из четырёх чисел с плавающей запятой, задающих красный, зелёный, синий и альфа-компоненты как значения от 0.0 до 1.0.
- premultiplied
Возвращает цвет в виде кортежа из четырёх чисел с плавающей запятой, задающих красный, зелёный, синий и альфа-компоненты как значения от 0.0 до 1.0, с предварительно умноженными на альфа-канал красным, зелёным и синим компонентами.
- alpha
Возвращает альфа-канал (непрозрачность) этого цвета в виде числа от 0.0 до 1.0, где 0.0 – прозрачный, а 1.0 – непрозрачный.
- hexcode
Возвращает строку, содержащую шестнадцатеричный код цвета в формате #rrggbbaa или #rrggbb.
Объекты Color имеют следующие методы. Поскольку объекты Color неизменяемы, эти методы всегда возвращают новый объект Color.
- interpolate(other: ColorLike, fraction: float) 'Color'
Интерполирует между этим цветом и other в цветовом пространстве RGB, возвращая новый цвет в качестве результата. Если fraction равен 0.0, результат совпадает с этим цветом, если 1.0, он совпадает с other.
- interpolate_hls(other: 'str | Color | tuple[float, float, float]', fraction: float) 'Color'
Интерполирует между этим цветом и other в цветовом пространстве HLS, возвращая новый цвет в качестве результата. Если fraction равен 0.0, результат совпадает с этим цветом, если 1.0, он совпадает с other.
other может быть строкой, объектом Color или кортежем HLS.
- interpolate_hsv(other: 'str | Color | tuple[float, float, float]', fraction: float) 'Color'
Интерполирует между этим цветом и other в цветовом пространстве HSV, возвращая новый цвет в качестве результата. Если fraction равен 0.0, результат совпадает с этим цветом, если 1.0, он совпадает с other.
other может быть строкой, объектом Color или кортежем HSV.
- multiply_hls_saturation(saturation: float) 'Color'
Умножает насыщенность этого цвета на saturation и возвращает результат в виде нового цвета. Это выполняется в цветовом пространстве HLS.
- multiply_hsv_saturation(saturation: float) 'Color'
Умножает насыщенность этого цвета на saturation и возвращает результат в виде нового цвета. Это выполняется в цветовом пространстве HSV.
- multiply_value(value: float) 'Color'
Умножает значение (value) этого цвета на value и возвращает результат в виде нового цвета. Это выполняется в цветовом пространстве HSV.
- normalize()
Возвращает нормализованную версию этого цвета, где все компоненты находятся в диапазоне от 0 до 255.
- opacity(opacity: float) 'Color'
Умножает альфа-канал этого цвета на opacity и возвращает новый цвет.
- replace_hls_saturation(saturation: float) 'Color'
Заменяет насыщенность этого цвета на saturation и возвращает результат в виде нового цвета. Это выполняется в цветовом пространстве HLS.
- replace_hsv_saturation(saturation: float) 'Color'
Заменяет насыщенность этого цвета на saturation и возвращает результат в виде нового цвета. Это выполняется в цветовом пространстве HSV.
- replace_hue(hue: float) 'Color'
Заменяет тон этого цвета на hue, который должен быть в диапазоне от 0.0 до 1.0. Возвращает новый цвет.
- replace_lightness(lightness: float) 'Color'
Заменяет светлоту этого цвета на lightness и возвращает результат в виде нового цвета. Это выполняется в цветовом пространстве HLS.
- replace_opacity(opacity: float) 'Color'
Заменяет альфа-канал этого цвета на opacity и возвращает результат в виде нового цвета.
- replace_value(value: float) 'Color'
Заменяет значение (value) этого цвета на value и возвращает результат в виде нового цвета. Это выполняется в цветовом пространстве HSV.
- rotate_hue(rotation: float) 'Color'
Поворачивает тон этого цвета на rotation и возвращает новый цвет. rotation – это доля полного оборота (от 0.0 до 1.0). Разделите на 360.0 для преобразования в градусы.
- shade(fraction: float) 'Color'
Создаёт оттенок этого цвета, смешивая его с чёрным. fraction – это доля этого цвета в новом цвете. Если fraction равен 1.0, цвет не изменяется, если 0.0, возвращается чёрный.
Альфа-канал не изменяется.
- tint(fraction: float) 'Color'
Создаёт оттенок этого цвета, смешивая его с белым. fraction – это доля этого цвета в новом цвете. Если fraction равен 1.0, цвет не изменяется, если 0.0, возвращается белый.
Альфа-канал не изменяется.