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 객체.
모든 숫자가 0부터 255 사이인 (r, g, b) 또는 (r, g, b, a) 튜플.
"#rgb", "#rgba", "#rrggbb", "#rrggbbaa" 형태의 16진수 색상 문자열.
- hls
색상-명도-채도 색 공간의 색상입니다. 각 요소가 0.0부터 1.0 사이인 세 요소 튜플로 지정해야 합니다.
- hsv
색상-채도-명도 값 색 공간의 색상입니다. 각 요소가 0.0부터 1.0 사이인 세 요소 튜플로 지정해야 합니다.
- 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입니다.
- rgba
빨강, 초록, 파랑, 알파를 나타내는 부동소수점 숫자 네 개의 튜플로 색상을 반환합니다. 각 값은 0.0부터 1.0입니다.
- premultiplied
빨강, 초록, 파랑, 알파를 나타내는 부동소수점 숫자 네 개의 튜플로 색상을 반환합니다. 각 값은 0.0부터 1.0이며, 빨강, 초록, 파랑 요소에는 알파 값을 미리 곱합니다.
- alpha
이 Color의 알파, 즉 불투명도를 0.0부터 1.0 사이의 숫자로 반환합니다. 0.0은 투명, 1.0은 불투명입니다.
- hexcode
#rrggbbaa 또는 #rrggbb 형태의 16진수 색상 코드 문자열을 반환합니다.
Color 객체에는 다음 메서드가 있습니다. Color는 변경할 수 없는 객체이므로 이 메서드들은 항상 새 Color 객체를 반환합니다.
- interpolate(other: ColorLike, fraction: float) 'Color'
RGB 색 공간에서 이 Color와 other 사이를 보간하여 새 Color를 반환합니다. fraction이 0.0이면 현재 색상과 같고, 1.0이면 other와 같습니다.
- interpolate_hls(other: 'str | Color | tuple[float, float, float]', fraction: float) 'Color'
HLS 색 공간에서 이 Color와 other 사이를 보간하여 새 Color를 반환합니다. fraction이 0.0이면 현재 색상과 같고, 1.0이면 other와 같습니다.
other는 문자열, Color 또는 HLS 튜플일 수 있습니다.
- interpolate_hsv(other: 'str | Color | tuple[float, float, float]', fraction: float) 'Color'
HSV 색 공간에서 이 Color와 other 사이를 보간하여 새 Color를 반환합니다. fraction이 0.0이면 현재 색상과 같고, 1.0이면 other와 같습니다.
other는 문자열, Color 또는 HSV 튜플일 수 있습니다.
- multiply_hls_saturation(saturation: float) 'Color'
이 색상의 채도에 saturation을 곱하고 결과를 새 Color로 반환합니다. HLS 색 공간에서 수행합니다.
- multiply_hsv_saturation(saturation: float) 'Color'
이 색상의 채도에 saturation을 곱하고 결과를 새 Color로 반환합니다. HSV 색 공간에서 수행합니다.
- multiply_value(value: float) 'Color'
이 색상의 명도 값에 value를 곱하고 결과를 새 Color로 반환합니다. HSV 색 공간에서 수행합니다.
- normalize()
모든 요소가 0부터 255 사이가 되도록 정규화한 이 Color의 새 버전을 반환합니다.
- opacity(opacity: float) 'Color'
이 색상의 알파 채널에 opacity를 곱하고 새 색상을 반환합니다.
- replace_hls_saturation(saturation: float) 'Color'
이 색상의 채도를 saturation으로 바꾸고 결과를 새 Color로 반환합니다. HLS 색 공간에서 수행합니다.
- replace_hsv_saturation(saturation: float) 'Color'
이 색상의 채도를 saturation으로 바꾸고 결과를 새 Color로 반환합니다. HSV 색 공간에서 수행합니다.
- replace_hue(hue: float) 'Color'
이 색상의 색상 값을 hue로 바꾸고 새 Color를 반환합니다. 값은 0.0부터 1.0 사이여야 합니다.
- replace_lightness(lightness: float) 'Color'
이 색상의 명도를 lightness로 바꾸고 결과를 새 Color로 반환합니다. HLS 색 공간에서 수행합니다.
- replace_opacity(opacity: float) 'Color'
이 색상의 알파 채널을 opacity로 바꾸고 결과를 새 Color로 반환합니다.
- replace_value(value: float) 'Color'
이 색상의 명도 값을 value로 바꾸고 결과를 새 Color로 반환합니다. HSV 색 공간에서 수행합니다.
- rotate_hue(rotation: float) 'Color'
이 색상의 색상 값을 rotation만큼 회전시키고 새 Color를 반환합니다. 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이면 흰색을 반환합니다.
알파 채널은 바뀌지 않습니다.