Класс 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, возвращается белый.

Альфа-канал не изменяется.