Krita/krita/pykrita/pigment_o/pigment_o_constants.py
2025-03-07 08:03:18 +01:00

366 lines
14 KiB
Python

# Pigment.O is a Krita plugin and it is a Color Picker and Color Mixer.
# Copyright (C) 2020 Ricardo Jeremias.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Timer Variable
check_timer = 30 # 1000 = 1 SECOND (Zero will Disable checks)
# Numbers
zero = 0
half = 0.5
unit = 1
two = 2
hue_a = 32
cube = 255
render_width = 5000
render_height = 5000
max_val = 16777215
# Luma Coefficients (ITU-R BT.601)
luma_r = 0.299
luma_b = 0.114
luma_g = 1 - luma_r - luma_b # 0.587
luma_pr = 1.402
luma_pb = 1.772
gamma_y = 2.2 # Y (Luma)
gamma_l = 2.4 # linear to standard RGB conversion
# Kelvin
kkk_min_scale = 1000
kkk_half_scale = 6500
kkk_max_scale = 12000
kkk_delta = kkk_max_scale - kkk_min_scale
kkk_half_percent = (kkk_half_scale - kkk_min_scale) / kkk_delta
# Panel
panel = "PANEL"
# Range
krange = {
# RGB based
"aaa_1" : 255,
"rgb_1" : 255, "rgb_2" : 255, "rgb_3" : 255,
"uvd_1" : 255, "uvd_2" : 255, "uvd_3" : 360,
"cmy_1" : 255, "cmy_2" : 255, "cmy_3" : 255,
"cmyk_1": 255, "cmyk_2": 255, "cmyk_3": 255, "cmyk_4": 255,
"ryb_1" : 255, "ryb_2" : 255, "ryb_3" : 255,
"yuv_1" : 255, "yuv_2" : 255, "yuv_3" : 255,
# HUE-RGB Based
"hsv_1" : 360, "hsv_2" : 255, "hsv_3" : 255,
"hsl_1" : 360, "hsl_2" : 255, "hsl_3" : 255,
"hsy_1" : 360, "hsy_2" : 255, "hsy_3" : 255,
"ard_1" : 360, "ard_2" : 255, "ard_3" : 255,
# XYZ Based
"xyz_1" : 255, "xyz_2" : 255, "xyz_3" : 255,
"xyy_1" : 255, "xyy_2" : 255, "xyy_3" : 255,
"lab_1" : 256, "lab_2" : 256, "lab_3" : 256,
# HUE-XYZ Based
"lch_1" : 255, "lch_2" : 255, "lch_3" : 255,
}
stops = {
# RGB based
"aaa_1" : 4,
"rgb_1" : 4, "rgb_2" : 4, "rgb_3" : 4,
"uvd_1" : 4, "uvd_2" : 4, "uvd_3" : 4,
"cmy_1" : 4, "cmy_2" : 4, "cmy_3" : 4,
"cmyk_1": 4, "cmyk_2": 4, "cmyk_3": 4, "cmyk_4": 4,
"ryb_1" : 4, "ryb_2" : 4, "ryb_3" : 4,
"yuv_1" : 4, "yuv_2" : 4, "yuv_3" : 4,
# HUE-RGB Based
"hsv_1" : 6, "hsv_2" : 4, "hsv_3" : 4,
"hsl_1" : 6, "hsl_2" : 4, "hsl_3" : 4,
"hsy_1" : 6, "hsy_2" : 4, "hsy_3" : 4,
"ard_1" : 6, "ard_2" : 4, "ard_3" : 6,
# XYZ Based
"xyz_1" : 4, "xyz_2" : 4, "xyz_3" : 4,
"xyy_1" : 4, "xyy_2" : 4, "xyy_3" : 4,
"lab_1" : 4, "lab_2" : 4, "lab_3" : 4,
# HUE-XYZ Based
"lch_1" : 4, "lch_2" : 4, "lch_3" : 6,
# Non Color
"kkk_1" : 4,
# Mixers
"mixer" : 2
}
# Active Colors
color_neutral = {
# Details
"active" : None,
"hex6" : "#000000",
# RGB based
"aaa_1" : 0,
"rgb_1" : 0, "rgb_2" : 0, "rgb_3" : 0,
"uvd_1" : 0, "uvd_2" : 0, "uvd_3" : 0,
"cmy_1" : 0, "cmy_2" : 0, "cmy_3" : 0,
"cmyk_1": 0, "cmyk_2": 0, "cmyk_3": 0, "cmyk_4": 0,
"ryb_1" : 0, "ryb_2" : 0, "ryb_3" : 0,
"yuv_1" : 0, "yuv_2" : 0, "yuv_3" : 0,
# HUE-RGB Based
"hue_d" : 0, "hue_a" : 0,
"hsv_1" : 0, "hsv_2" : 0, "hsv_3" : 0,
"hsl_1" : 0, "hsl_2" : 0, "hsl_3" : 0,
"hsy_1" : 0, "hsy_2" : 0, "hsy_3" : 0,
"ard_1" : 0, "ard_2" : 0, "ard_3" : 0,
# XYZ Based
"xyz_1" : 0, "xyz_2" : 0, "xyz_3" : 0,
"xyy_1" : 0, "xyy_2" : 0, "xyy_3" : 0,
"lab_1" : 0, "lab_2" : 0, "lab_3" : 0,
# HUE-XYZ Based
"lch_1" : 0, "lch_2" : 0, "lch_3" : 0,
# HTML Name
"name" : "Black",
# Kelvin
"kkk_percent" : kkk_half_percent, # 0.5 %
"kkk_scale" : kkk_half_scale, # 6500 k
# Display
"hex6_d" : "#000000",
"aaa_d1" : 0,
"rgb_d1" : 0, "rgb_d2" : 0, "rgb_d3" : 0,
"cmyk_d1": 0, "cmyk_d2": 0, "cmyk_d3": 0, "cmyk_d4": 0,
"yuv_d1" : 0, "yuv_d2" : 0, "yuv_d3" : 0,
"xyz_d1" : 0, "xyz_d2" : 0, "xyz_d3" : 0,
"lab_d1" : 0, "lab_d2" : 0, "lab_d3" : 0,
}
color_true = color_neutral.copy()
color_false = color_neutral.copy()
color_true["active"] = True
color_false["active"] = False
# Foreground and Background
kac = color_true.copy()
kbc = color_true.copy()
# Harmony Colors
har_01 = color_false.copy()
har_02 = color_false.copy()
har_03 = color_false.copy()
har_04 = color_false.copy()
har_05 = color_false.copy()
# RYB angle conversion stops
digital_step = [ 0, 35/360, 60/360, 120/360, 180/360, 240/360, 300/360, 1 ]
analog_step = [ 0, 60/360, 122/360, 165/360, 218/360, 275/360, 330/360, 1 ]
# Kelvin Table
kelvin_rgb = {
1000 : [255 / cube, 56 / cube, 0 / cube],
1100 : [255 / cube, 71 / cube, 0 / cube],
1200 : [255 / cube, 83 / cube, 0 / cube],
1300 : [255 / cube, 93 / cube, 0 / cube],
1400 : [255 / cube, 101 / cube, 0 / cube],
1500 : [255 / cube, 109 / cube, 0 / cube],
1600 : [255 / cube, 115 / cube, 0 / cube],
1700 : [255 / cube, 121 / cube, 0 / cube],
1800 : [255 / cube, 126 / cube, 0 / cube],
1900 : [255 / cube, 131 / cube, 0 / cube],
2000 : [255 / cube, 138 / cube, 18 / cube],
2100 : [255 / cube, 142 / cube, 33 / cube],
2200 : [255 / cube, 147 / cube, 44 / cube],
2300 : [255 / cube, 152 / cube, 54 / cube],
2400 : [255 / cube, 157 / cube, 63 / cube],
2500 : [255 / cube, 161 / cube, 72 / cube],
2600 : [255 / cube, 165 / cube, 79 / cube],
2700 : [255 / cube, 169 / cube, 87 / cube],
2800 : [255 / cube, 173 / cube, 94 / cube],
2900 : [255 / cube, 177 / cube, 101 / cube],
3000 : [255 / cube, 180 / cube, 107 / cube],
3100 : [255 / cube, 184 / cube, 114 / cube],
3200 : [255 / cube, 187 / cube, 120 / cube],
3300 : [255 / cube, 190 / cube, 126 / cube],
3400 : [255 / cube, 193 / cube, 132 / cube],
3500 : [255 / cube, 196 / cube, 137 / cube],
3600 : [255 / cube, 199 / cube, 143 / cube],
3700 : [255 / cube, 201 / cube, 148 / cube],
3800 : [255 / cube, 204 / cube, 153 / cube],
3900 : [255 / cube, 206 / cube, 159 / cube],
4000 : [255 / cube, 209 / cube, 163 / cube],
4100 : [255 / cube, 211 / cube, 168 / cube],
4200 : [255 / cube, 213 / cube, 173 / cube],
4300 : [255 / cube, 215 / cube, 177 / cube],
4400 : [255 / cube, 217 / cube, 182 / cube],
4500 : [255 / cube, 219 / cube, 186 / cube],
4600 : [255 / cube, 221 / cube, 190 / cube],
4700 : [255 / cube, 223 / cube, 194 / cube],
4800 : [255 / cube, 225 / cube, 198 / cube],
4900 : [255 / cube, 227 / cube, 202 / cube],
5000 : [255 / cube, 228 / cube, 206 / cube],
5100 : [255 / cube, 230 / cube, 210 / cube],
5200 : [255 / cube, 232 / cube, 213 / cube],
5300 : [255 / cube, 233 / cube, 217 / cube],
5400 : [255 / cube, 235 / cube, 220 / cube],
5500 : [255 / cube, 236 / cube, 224 / cube],
5600 : [255 / cube, 238 / cube, 227 / cube],
5700 : [255 / cube, 239 / cube, 230 / cube],
5800 : [255 / cube, 240 / cube, 233 / cube],
5900 : [255 / cube, 242 / cube, 236 / cube],
6000 : [255 / cube, 243 / cube, 239 / cube],
6100 : [255 / cube, 244 / cube, 242 / cube],
6200 : [255 / cube, 245 / cube, 245 / cube],
6300 : [255 / cube, 246 / cube, 247 / cube],
6400 : [255 / cube, 248 / cube, 251 / cube],
6500 : [255 / cube, 255 / cube, 255 / cube], # 6500 : [255 / cube, 249 / cube, 253 / cube],
6600 : [254 / cube, 249 / cube, 255 / cube],
6700 : [252 / cube, 247 / cube, 255 / cube],
6800 : [249 / cube, 246 / cube, 255 / cube],
6900 : [247 / cube, 245 / cube, 255 / cube],
7000 : [245 / cube, 243 / cube, 255 / cube],
7100 : [243 / cube, 242 / cube, 255 / cube],
7200 : [240 / cube, 241 / cube, 255 / cube],
7300 : [239 / cube, 240 / cube, 255 / cube],
7400 : [237 / cube, 239 / cube, 255 / cube],
7500 : [235 / cube, 238 / cube, 255 / cube],
7600 : [233 / cube, 237 / cube, 255 / cube],
7700 : [231 / cube, 236 / cube, 255 / cube],
7800 : [230 / cube, 235 / cube, 255 / cube],
7900 : [228 / cube, 234 / cube, 255 / cube],
8000 : [227 / cube, 233 / cube, 255 / cube],
8100 : [225 / cube, 232 / cube, 255 / cube],
8200 : [224 / cube, 231 / cube, 255 / cube],
8300 : [222 / cube, 230 / cube, 255 / cube],
8400 : [221 / cube, 230 / cube, 255 / cube],
8500 : [220 / cube, 229 / cube, 255 / cube],
8600 : [218 / cube, 229 / cube, 255 / cube],
8700 : [217 / cube, 227 / cube, 255 / cube],
8800 : [216 / cube, 227 / cube, 255 / cube],
8900 : [215 / cube, 226 / cube, 255 / cube],
9000 : [214 / cube, 225 / cube, 255 / cube],
9100 : [212 / cube, 225 / cube, 255 / cube],
9200 : [211 / cube, 224 / cube, 255 / cube],
9300 : [210 / cube, 223 / cube, 255 / cube],
9400 : [209 / cube, 223 / cube, 255 / cube],
9500 : [208 / cube, 222 / cube, 255 / cube],
9600 : [207 / cube, 221 / cube, 255 / cube],
9700 : [207 / cube, 221 / cube, 255 / cube],
9800 : [207 / cube, 220 / cube, 255 / cube],
9900 : [206 / cube, 220 / cube, 255 / cube],
10000 : [206 / cube, 218 / cube, 255 / cube],
10100 : [206 / cube, 218 / cube, 255 / cube],
10200 : [205 / cube, 217 / cube, 255 / cube],
10300 : [205 / cube, 217 / cube, 255 / cube],
10400 : [204 / cube, 216 / cube, 255 / cube],
10500 : [204 / cube, 216 / cube, 255 / cube],
10600 : [203 / cube, 215 / cube, 255 / cube],
10700 : [202 / cube, 215 / cube, 255 / cube],
10800 : [202 / cube, 214 / cube, 255 / cube],
10900 : [201 / cube, 214 / cube, 255 / cube],
11000 : [200 / cube, 213 / cube, 255 / cube],
11100 : [200 / cube, 213 / cube, 255 / cube],
11200 : [199 / cube, 212 / cube, 255 / cube],
11300 : [198 / cube, 212 / cube, 255 / cube],
11400 : [198 / cube, 212 / cube, 255 / cube],
11500 : [197 / cube, 211 / cube, 255 / cube],
11600 : [197 / cube, 211 / cube, 255 / cube],
11700 : [197 / cube, 210 / cube, 255 / cube],
11800 : [196 / cube, 210 / cube, 255 / cube],
11900 : [195 / cube, 210 / cube, 255 / cube],
12000 : [195 / cube, 209 / cube, 255 / cube],
}
kelvin_illuminants = {
# Temperature : Class, Discription
1000 : ["", ""],
2724 : ["LED-V1", "phosphor-converted violet"],
2733 : ["LED-B1", "phosphor-converted blue"],
2840 : ["LED-RGB1", "mixing of red, green, and blue LEDs"],
2851 : ["LED-BH1", "mixing of phosphor-converted blue LED and red LED (blue-hybrid)"],
2856 : ["A", "incandescent / tungsten"],
2940 : ["F4", "warm white fluorescent"],
2998 : ["LED-B2", "phosphor-converted blue"],
3000 : ["F12", "Philips TL83, Ultralume 30"],
3450 : ["F3", "white fluorescent"],
4000 : ["F11", "Philips TL84, Ultralume 40"],
4070 : ["LED-V2", "phosphor-converted violet"],
4103 : ["LED-B3", "phosphor-converted blue"],
4150 : ["F6 / F9", "light white fluorescent / cool white deluxe fluorescent"],
4230 : ["F2", "cool white fluorescent"],
4874 : ["B", "obsolete, direct sunlight at noon"],
5000 : ["F8 / F10", "D50 simulator, Sylvania F40 Design 50 / Philips TL85, Ultralume 50"],
5003 : ["D50","horizon light, ICC profile PCS"],
5109 : ["LED-B4", "phosphor-converted blue"],
5454 : ["E", "equal energy"],
5503 : ["D55", "mid-morning / mid-afternoon daylight"],
6350 : ["F5", "daylight fluorescent"],
6430 : ["F1", "daylight fluorescent"],
6500 : ["F7", "D65 simulator, daylight simulator"],
6504 : ["D65", "noon daylight: television, sRGB color space"],
6598 : ["LED-B5", "phosphor-converted blue"],
6774 : ["C", "obsolete, average / North sky daylight"],
7504 : ["D75", "North sky daylight"],
9305 : ["D93", "high-efficiency blue phosphor monitors, BT.2035"],
12000 : ["", ""],
}
kelvin_xyz_1931 = {
# Illuminant - Kelvin - CIE*1931 ( X - Y - Z )
"A" : [2856, 109.850, 100.000, 35.585,],
"B" : [4874, 99.0927, 100.000, 85.313,],
"C" : [6774, 98.074, 100.000, 118.232,],
"D50" : [5003, 96.422, 100.000, 82.521,],
"D55" : [5503, 95.682, 100.000, 92.149,],
"D65" : [6504, 95.047, 100.000, 108.883,],
"D75" : [7504, 94.972, 100.000, 122.638,],
"E" : [5454, 100.000, 100.000, 100.000,],
"F1" : [6430, 92.834, 100.000, 103.665,],
"F2" : [4230, 99.187, 100.000, 67.395,],
"F3" : [3450, 103.754, 100.000, 49.861,],
"F4" : [2940, 109.147, 100.000, 38.813,],
"F5" : [6350, 90.872, 100.000, 98.723,],
"F6" : [4150, 97.309, 100.000, 60.191,],
"F7" : [6500, 95.044, 100.000, 108.755,],
"F8" : [5000, 96.413, 100.000, 82.333,],
"F9" : [4150, 100.365, 100.000, 67.868,],
"F10" : [5000, 96.174, 100.000, 81.712,],
"F11" : [4000, 100.966, 100.000, 64.370,],
"F12" : [3000, 108.046, 100.000, 39.228,],
}
kelvin_xyz_1964 = {
# Illuminant - CIE*1964 ( X - Y - Z )
"A" : [2856, 111.144, 100.000, 35.200],
"B" : [4874, 99.178, 100.000, 84.3493],
"C" : [6774, 97.285, 100.000, 116.145],
"D50" : [5003, 96.720, 100.000, 81.427],
"D55" : [5503, 95.799, 100.000, 90.926],
"D65" : [6504, 94.811, 100.000, 107.304],
"D75" : [7504, 94.416, 100.000, 120.641],
"E" : [5454, 100.000, 100.000, 100.000],
"F1" : [6430, 94.791, 100.000, 103.191],
"F2" : [4230, 103.280, 100.000, 69.026],
"F3" : [3450, 108.968, 100.000, 51.965],
"F4" : [2940, 114.961, 100.000, 40.963],
"F5" : [6350, 93.369, 100.000, 98.636],
"F6" : [4150, 102.148, 100.000, 62.074],
"F7" : [6500, 95.792, 100.000, 107.687],
"F8" : [5000, 97.115, 100.000, 81.135],
"F9" : [4150, 102.116, 100.000, 67.826],
"F10" : [5000, 99.001, 100.000, 83.134],
"F11" : [4000, 103.866, 100.000, 65.627],
"F12" : [3000, 111.428, 100.000, 40.353],
}
kelvin = { "class" : kelvin_illuminants[6500][0], "description" : kelvin_illuminants[6500][1] }
# Fill
fill = { "active" : False, "node_name" : None, "alphalock_before" : None }
# Selection
selection = {
# State
"active" : False,
"mode" : "LINEAR",
# Markers
"l0" : 0.2,
"l1" : 0.1,
"r1" : 0.1,
"r0" : 0.2,
}
sele_1_var = selection.copy()
sele_2_var = selection.copy()
sele_3_var = selection.copy()
sele_4_var = selection.copy()