根据新版本调整set_pattern:0~65535

This commit is contained in:
xinzhu.yin
2026-07-07 18:59:44 +08:00
parent 9fa811a9eb
commit 32aaef1c0f
24 changed files with 3016 additions and 279 deletions

View File

@@ -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}")