Класс Color (Color Class)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

В Ren'Py есть класс Color, который может использоваться для преобразования из одного цветового пространства в другое или выполнения различных операций теории цвета. Цвета неизменны и могут использоваться везде, где можно использовать цветовой кортеж.


Цветовые кортежи функционируют в одном из трёх цветовых пространств:

  • RGB – Red, Green, Blue
  • HLS – Hue, Lightness, Saturation
  • HSV – Hue, Saturation, Value

В качестве примера приведём некоторые вычисления, которые можно выполнить для получения необходимого цвета (всё цвета, перечисленные ниже, ярко-зеленые):

# Стандартные цвета в Ren'Py.
Color("#0f0")
Color("#00ff00")
Color((0, 255, 0, 255))

# Преобразование цвета из других цветовых пространств.
Color(hls=(.333, 0.5, 1.0))
Color(hsv=(.333, 1.0, 1.0))

# Превращает красный цвет в зелёный с помощью метода, который вычисляет новый цвет.
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
Цвет в цветовом пространстве HLS. Цвет должен быть представлен трёхэлементным кортежем, где каждый элемент находится в диапазоне от 0.0 до 1.0.
hsv
Цвет в цветовом пространстве HSV. Цвет должен быть представлен трёхэлементным кортежем, где каждый элемент находится в диапазоне от 0.0 до 1.0.
rgb
Цвет в цветовом пространстве RGB. Цвет должен быть представлен трёхэлементным кортежем, где каждый элемент находится в диапазоне от 0.0 до 1.0.


Если указанный цвет не содержит альфа-значение, используется alpha. alpha должен находиться в диапазоне от 0.0 до 1.0.


Объекты Color можно использовать в качестве четырехэлементных кортежей, в которых элементами являются (красный, зелёный, синий и альфа). Когда объект используется в качестве кортежа, значение каждого элемента находится в диапазоне от 0 до 255.
Объекты Color поддерживают операторы +, - и *, представляющие покомпонентное сложение, вычитание и умножение. Некоторые виды использования этих операторов могут привести к созданию цветов с компонентами, которые не находятся в поддерживаемом диапазоне. Такие цвета не должны передаваться в другие части Ren'Py. Метод normalize может быть вызван для возврата нового цвета с компонентами, ограниченными соответствующим диапазоном.


Объект Color имеет следующие свойства:
hls
Вычисляет цвет, как кортеж из трёх чисел с плавающей точкой, задающих тон, светлоту и насыщенность. Каждый элемент находится в диапазоне от 0.0 до 1.0.


hsv
Вычисляет цвет, как кортеж из трёх чисел с плавающей точкой, задающих тон, насыщенность и значение цвета. Каждый элемент находится в диапазоне от 0.0 до 1.0.


rgb
Вычисляет цвет, как кортеж из трёх чисел с плавающей точкой, задающих красный, зеленый и синий. Каждый элемент находится в диапазоне от 0.0 до 1.0.


alpha
Вычисляет альфа-канал (непрозрачность) данного объекта Color в виде числа от 0.0 до 1.0, где 0.0 – прозрачность, а 1.0 – непрозрачность.


hexcode
Вычисляет строку, содержащую шестнадцатеричный код цвета в форме #rrggbbaa или #rrggbb.


Объекты Color используют следующие методы. Поскольку цвета неизменны, эти методы всегда вычисляют новый объект Color.
interpolate(other, fraction)
Выполняет интерполяцию между этим объектом Color и other в цветовом пространстве RGB, вычисляя новый объект Color в качестве результата. Если fraction составляет 0.0, результат будет таким же, как и заданный Color, при 1.0, результат совпадает с other.


interpolate_hls(other, fraction)
Выполняет интерполяцию между объектом Color и other в цветовом пространстве HLS, вычисляя новый объект Color в качестве результата. Если fraction составляет 0.0, результат будет таким же, как и заданный Color, при 1.0, результат совпадает с other.
other может быть строка, объект Color или кортеж HLS.


interpolate_hsv(other, fraction)
Выполняет интерполяцию между объектом Color и other в цветовом пространстве HSV, вычисляя новый объект Color в качестве результата. Если fraction составляет 0.0, результат будет таким же, как и заданный Color, при 1.0, результат совпадает с other.
other может быть строка, объект Color или кортеж HSV.


multiply_hls_saturation(saturation)
Умножает насыщенность выбранного цвета на saturation и вычисляет результат в виде нового объекта Color. Этот метод выполняется в цветовом пространстве HLS.


multiply_hsv_saturation(saturation)
Умножает насыщенность выбранного цвета на saturation и вычисляет результат в виде нового объекта Color. Этот метод выполняется в цветовом пространстве HSV.


multiply_value(value)
Умножает значение выбранного цвета на value и вычисляет результат в виде нового объекта Color. Этот метод выполняется в цветовом пространстве HSV.


normalize(self)
Возвращает нормализованную версию данного объекта Color, где все компоненты попадают в диапазоне от 0 до 255.


opacity(opacity)
Умножает альфа-канал данного объекта Color на opacity и вычисляет новый цвет.


replace_hls_saturation(saturation)
Заменяет насыщенность выбранного цвета saturation и вычисляет результат в виде нового объекта Color. Этот метод выполняется в цветовом пространстве HLS.


replace_hls_saturation(saturation)
Заменяет насыщенность выбранного цвета saturation и вычисляет результат в виде нового объекта Color. Этот метод выполняется в цветовом пространстве HSV.


replace_hue(hue)
Заменяет оттенок выбранного цвета hue, который должен находиться в диапазоне от 0.0 до 1.0. Вычисляет новый объект Color.


replace_lightness(lightness)
Заменяет светлоту выбранного цвета lightness и вычисляет результат в виде нового объекта Color. Этот метод выполняется в цветовом пространстве HLS.


replace_opacity(opacity)
Заменяет альфа-канал выбранного цвета opacity и вычисляет результат в виде нового объекта Color.


replace_value(value)
Заменяет значение выбранного цвета value и вычисляет результат в виде нового объекта Color. Этот метод выполняется в цветовом пространстве HSV.


rotate_hue(rotation)
Поворачивает оттенок выбранного цвета на rotation и вычисляет новый объекта Color. rotation представляет собой часть полного поворота, для преобразования градусов делят на 360.0.


shade(fraction)
Создаёт оттенок выбранного цвета, смешивая его с чёрным. fraction – это доля цвета, который находится в новом цвете. Если fraction составляет 1.0, цвет не изменяется, при 0.0, возвращается чёрный.
Альфа-канал не изменяется.


tint(fraction)
Создает оттенок выбранного цвета, смешивая его с белым. fraction – это доля цвета, который находится в новом цвете. Если fraction составляет 1.0, цвет не изменяется, при 0.0, возвращается белый.
Альфа-канал не изменяется.

Источник[править | править код]

Статья "Color Class" на английском языке.


На главную страницу Официальная документация движка Вернуться к началу статьи