fix(app-iced): M125 r2 —— chips 档「还没选版本」不再对半切;宽度表换成实测值
r1 复审 p2-1:`TailShare::of` 只判档位,于是 chips 档「刚进页面」(面板只有一行 提示)也被五五分——700×760 下列表 8 个版本只显示 4 个、下半块 ≈160px 空画布, 而修前(main)这一态是 7 整行。修法:判据加**面板形态**,`Hint` 在任何档位都钉死, `Chips` + `Options`/`Install` 才共享。实测回到 7 整行(与 main 同一水位)。 守门:新增 `options_shot/ready.rs`(`ULL_DL_READY_SHOT`,不设 `ULL_DL_DEMO` 出的 700×760 图):列表区至少读出 6 个版本号。它在 r1 的图上**红**(4 个,原生输出见 mission 报告),在修后图上绿(7 个)。三条旧守门照旧(chips / compact / wide), chips 与 compact 换修前图仍红。 r1 复审 p2-2:宽度表的实测值改正(同一张 736 图逐项量): `1.21` 26(余 6)、`1.20` 28(余 4)、`24w` **29**(余 3)、`All versions` 墨迹画到 x=247(裁切边 248,只差 1px)⇒ 桶标签余量是 **3~6px** 而不是 6;「短标签『全部』= 32 零余量」这条论证的对比强度随之写准(比桶标签的 3~6px 更薄)。 `rails/major.rs` 的表格、`options_shot/compact.rs` 的测试文档一并改成实测值; 「墨迹右边界」那条反例也从 216..244 改成实测 216..247。 r1 复审 p3-1:第二级「全部版本」的图标从网格(与第一级同字形同药丸、像素级同形) 换成文档/清单字形 `IconKind::Logs`,理由与「图标集里没有版本/历史字形」写进 `major_shape` 文档。 r1 复审 p3-2:chips 档最多三层滚动(列表 / 面板 / loader 菜单)作为**已知风险** 登记在 `install.rs` 文档里,并写明为什么「把实例名移出滚动区」本轮不做(要拆 `options::section`,动三个文件,而且改完仍无法验证滚轮冒泡——没有通道)。
This commit is contained in:
1 parent
9c623a6fd3
commit
0f26ed3753
9 files changed
+283
-58
No files matched your search
@@ -41,6 +41,8 @@ const WIDE_SHOT: &str = "ULL_DL_OPTIONS_SHOT";
|
||||
const CHIPS_SHOT: &str = "ULL_DL_CHIPS_SHOT";
|
||||
/// 736 宽那张(`04-options-fabric-en-light-compact736.png`)——Compact 档主版本栏用。
|
||||
const COMPACT_SHOT: &str = "ULL_DL_COMPACT_SHOT";
|
||||
/// 700 宽、**不设 `ULL_DL_DEMO`**(= `ready`,还没选版本)那张——r1 复审 P2-1 的守门用。
|
||||
const READY_SHOT: &str = "ULL_DL_READY_SHOT";
|
||||
|
||||
fn ui() -> Ui {
|
||||
Ui::with_platform(SchemeFlavor::Light, Platform::Windows, FAMILIES)
|
||||
@@ -183,6 +185,34 @@ impl Shot {
|
||||
(start, end - start + 1)
|
||||
}
|
||||
|
||||
/// `[from, to)` 里在 `[left, right)` 有墨迹的**条数**(两条之间空 ≥ 8 行才算两条)。
|
||||
///
|
||||
/// 用它数「读得出几个版本号」:一行版本号的文本墨迹约 11px 高、行距 44,中间空 30+ ⇒
|
||||
/// 一条对应一行。被压扁时整块只剩一条。
|
||||
fn ink_bands(
|
||||
&self,
|
||||
left: usize,
|
||||
right: usize,
|
||||
from: usize,
|
||||
to: usize,
|
||||
background: [u8; 3],
|
||||
) -> usize {
|
||||
let mut bands = 0;
|
||||
let mut gap = usize::MAX;
|
||||
for y in from..to.min(self.height) {
|
||||
let inked = (left..right).any(|x| self.at(x, y) != background);
|
||||
if inked {
|
||||
if gap >= 8 {
|
||||
bands += 1;
|
||||
}
|
||||
gap = 0;
|
||||
} else {
|
||||
gap = gap.saturating_add(1);
|
||||
}
|
||||
}
|
||||
bands
|
||||
}
|
||||
|
||||
/// 列表列里、`from` 起的**第一条薄通栏横线**的 y(`divider::full` 画的那条 1px 线)。
|
||||
///
|
||||
/// 用它量「版本列表到哪儿为止」:尾部面板上沿有一条通栏分隔线,它上面的高度就是列表拿到的。
|
||||
@@ -350,3 +380,5 @@ fn an_options_shot_shows_both_rails_and_the_whole_panel() {
|
||||
mod chips;
|
||||
|
||||
mod compact;
|
||||
|
||||
mod ready;
|
||||
Reference in new issue
Block a user