refactor(panels): 面板静态特征收敛为唯一登记表 + 标记面板绘制分段(§17.6 第 1/2 项)
- 新增 pvdetail::PanelKindTraits + PanelTraitsOf(唯一 switch):标题 / 排版类别 / 滚动字段 / 面板状态 / 功能开关同表登记;新增面板只改「枚举 + 一行」, -Wswitch 仍在唯一登记点生效。PanelTitle 改为「前缀 + rangeSuffix 标志」, 不再依赖 switch(标题降级为数据,不再需要函数指针)。 - PaintPanelMarkerGroups(约 340 行)拆成 6 个具名函数,主函数只保留绘制顺序 (普通分组栏 -> 条目 -> 表头 -> 吸顶栏 -> 滚动条 -> 透明度行);纯搬移、0 字节变化。 - 顺手修正该函数体遗留的多余缩进。 验证:release/debug/tools 零 warning;UnitTests 260/19;OffscreenChecks -all 7/133; panels -mode compare 7 面板像素哈希逐项不变;rowgeom compare 965+7 / 1268+7 键 0 差异。 产物 781,824 -> 782,336 B(+512,全部来自登记表)。
This commit is contained in:
1 parent
a9f1563896
commit
0c26da07d2
8 files changed
+761
-453
No files matched your search
@@ -19,25 +19,17 @@ namespace jdi
|
||||
{
|
||||
std::wstring PlotView::PanelTitle(EdgePanelKind kind) const
|
||||
{
|
||||
// ⚠️ 穷举且不写 `default:`(`-Wswitch` 会在新增面板时报警)。
|
||||
switch (kind)
|
||||
// ⚠️ 标题前缀来自**唯一登记表**(`PanelTraitsOf`):新增面板时不需要改这个函数。
|
||||
// 只有「边沿计数」「中心轴边沿计数」需要追加运行时后缀(`EdgeRangeSuffix()` 取决于
|
||||
// 双光标是否启用),所以表里存的是"前缀 + 标志"而不是 `std::wstring`(无法 constexpr)
|
||||
// 或函数指针(会把"数据"重新变成"代码",新增面板又要写一个函数)。
|
||||
const PanelKindTraits traits = PanelTraitsOf(kind);
|
||||
std::wstring title(traits.title);
|
||||
if (traits.rangeSuffix)
|
||||
{
|
||||
case EdgePanelKind::COUNT:
|
||||
return std::wstring(L"边沿计数") + EdgeRangeSuffix();
|
||||
case EdgePanelKind::CENTER:
|
||||
return std::wstring(L"中心轴边沿计数") + EdgeRangeSuffix();
|
||||
case EdgePanelKind::MEAN:
|
||||
return std::wstring(L"均值滤波");
|
||||
case EdgePanelKind::PEAK:
|
||||
return std::wstring(kWeakPeakTitle);
|
||||
case EdgePanelKind::MARK:
|
||||
return std::wstring(L"自由标记");
|
||||
case EdgePanelKind::RESAMPLE:
|
||||
return std::wstring(kResampleTitle);
|
||||
case EdgePanelKind::CLIP:
|
||||
return std::wstring(kClipTitle);
|
||||
title += EdgeRangeSuffix();
|
||||
}
|
||||
return std::wstring();
|
||||
return title;
|
||||
}
|
||||
|
||||
PlotView::PanelColumnMetrics PlotView::MeasurePanelColumns(const Lane& lane,
|
||||
|
||||
Reference in new issue
Block a user