根据新版本调整set_pattern:0~65535
This commit is contained in:
@@ -24,6 +24,12 @@ from typing import TYPE_CHECKING
|
||||
import ttkbootstrap as ttk
|
||||
|
||||
from app.pq import pq_config
|
||||
from app.solid_color_scale import (
|
||||
SOLID_COLOR_MAX,
|
||||
pct_to_solid_color,
|
||||
solid_color_to_byte,
|
||||
solid_color_to_pct,
|
||||
)
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from pqAutomationApp import PQAutomationApp
|
||||
@@ -56,19 +62,21 @@ def _gray_pct_of(rgb) -> str:
|
||||
r = int(rgb[0])
|
||||
except Exception:
|
||||
return ""
|
||||
return str(int(round(r / 255 * 100)))
|
||||
return str(int(round(solid_color_to_pct(r))))
|
||||
|
||||
|
||||
def _hex_of(rgb) -> str:
|
||||
try:
|
||||
r, g, b = int(rgb[0]), int(rgb[1]), int(rgb[2])
|
||||
r = solid_color_to_byte(rgb[0])
|
||||
g = solid_color_to_byte(rgb[1])
|
||||
b = solid_color_to_byte(rgb[2])
|
||||
except Exception:
|
||||
return ""
|
||||
return f"#{r:02X}{g:02X}{b:02X}"
|
||||
|
||||
|
||||
def _luminance(rgb) -> float:
|
||||
r, g, b = rgb
|
||||
r, g, b = solid_color_to_byte(rgb[0]), solid_color_to_byte(rgb[1]), solid_color_to_byte(rgb[2])
|
||||
return 0.2126 * r + 0.7152 * g + 0.0722 * b
|
||||
|
||||
|
||||
@@ -99,7 +107,7 @@ def _gen_even(n: int) -> list[list[int]]:
|
||||
out = []
|
||||
for i in range(n):
|
||||
pct = 100.0 - (100.0 / (n - 1)) * i
|
||||
v = int(round(pct / 100.0 * 255))
|
||||
v = pct_to_solid_color(pct)
|
||||
out.append([v, v, v])
|
||||
return out
|
||||
|
||||
@@ -118,7 +126,7 @@ def _gen_pq(n: int) -> list[list[int]]:
|
||||
else:
|
||||
Lm1 = L ** m1
|
||||
v_pq = ((c1 + c2 * Lm1) / (1.0 + c3 * Lm1)) ** m2
|
||||
v = int(round(max(0.0, min(1.0, v_pq)) * 255))
|
||||
v = int(round(max(0.0, min(1.0, v_pq)) * SOLID_COLOR_MAX))
|
||||
out.append([v, v, v])
|
||||
return out
|
||||
|
||||
@@ -129,7 +137,7 @@ def _gen_gamma(n: int, gamma: float = 2.2) -> list[list[int]]:
|
||||
out = []
|
||||
for i in range(n):
|
||||
lin = 1.0 - i / (n - 1)
|
||||
v = int(round((lin ** (1.0 / gamma)) * 255))
|
||||
v = int(round((lin ** (1.0 / gamma)) * SOLID_COLOR_MAX))
|
||||
out.append([v, v, v])
|
||||
return out
|
||||
|
||||
@@ -761,8 +769,8 @@ def _parse_rgb_from_form(self: "PQAutomationApp"):
|
||||
except ValueError:
|
||||
messagebox.showerror("输入错误", "R/G/B 必须为整数")
|
||||
return None
|
||||
if not all(0 <= v <= 255 for v in (r, g, b)):
|
||||
messagebox.showerror("输入错误", "R/G/B 必须在 0~255 范围内")
|
||||
if not all(0 <= v <= SOLID_COLOR_MAX for v in (r, g, b)):
|
||||
messagebox.showerror("输入错误", f"R/G/B 必须在 0~{SOLID_COLOR_MAX} 范围内")
|
||||
return None
|
||||
return [r, g, b]
|
||||
|
||||
@@ -775,7 +783,7 @@ def _fill_rgb_from_pct(self: "PQAutomationApp"):
|
||||
messagebox.showerror("输入错误", "灰度 % 必须为数字")
|
||||
return
|
||||
pct = max(0.0, min(100.0, pct))
|
||||
v = int(round(pct / 100.0 * 255))
|
||||
v = pct_to_solid_color(pct)
|
||||
self._gamma_edit_r_var.set(str(v))
|
||||
self._gamma_edit_g_var.set(str(v))
|
||||
self._gamma_edit_b_var.set(str(v))
|
||||
@@ -904,7 +912,7 @@ def _paste_from_clipboard(self: "PQAutomationApp"):
|
||||
if s.endswith("%"):
|
||||
try:
|
||||
pct = float(s.rstrip("%"))
|
||||
v = int(round(max(0, min(100, pct)) / 100.0 * 255))
|
||||
v = pct_to_solid_color(max(0, min(100, pct)))
|
||||
rows.append([v, v, v])
|
||||
continue
|
||||
except ValueError:
|
||||
@@ -914,7 +922,7 @@ def _paste_from_clipboard(self: "PQAutomationApp"):
|
||||
if len(parts) == 1:
|
||||
try:
|
||||
v = int(parts[0])
|
||||
if 0 <= v <= 255:
|
||||
if 0 <= v <= SOLID_COLOR_MAX:
|
||||
rows.append([v, v, v])
|
||||
continue
|
||||
except ValueError:
|
||||
@@ -929,7 +937,7 @@ def _paste_from_clipboard(self: "PQAutomationApp"):
|
||||
except ValueError:
|
||||
errors.append(f"第 {ln_no} 行非整数:{s}")
|
||||
continue
|
||||
if not all(0 <= v <= 255 for v in (r, g, b)):
|
||||
if not all(0 <= v <= SOLID_COLOR_MAX for v in (r, g, b)):
|
||||
errors.append(f"第 {ln_no} 行越界:{s}")
|
||||
continue
|
||||
rows.append([r, g, b])
|
||||
@@ -980,7 +988,7 @@ def _run_validation(self: "PQAutomationApp"):
|
||||
|
||||
bad = [
|
||||
i for i, rgb in enumerate(params)
|
||||
if not all(0 <= int(v) <= 255 for v in rgb)
|
||||
if not all(0 <= int(v) <= SOLID_COLOR_MAX for v in rgb)
|
||||
]
|
||||
if bad:
|
||||
msgs.append(f"⚠ 越界点 (索引): {bad}")
|
||||
|
||||
Reference in New Issue
Block a user