目录规范化(Inc/Src)+「自由标记」第六轮交互调整
1) 目录规范化:所有 .hpp 只放 Inc,Src 只放 .cpp
- 4 个 *Internal.hpp 从 Src 迁到 Inc(DataModel/Application/PlotView/SignalPanel)
- Makefile 固化该约定(注释必须单独成行:写在同一行会把 CXX_INCLUDES_PATHS 整条注释掉)
- include 全是扁平形式,搬家无需改任何 include
2) 常规模式 = 普通鼠标(未开启「自由标记点选取」)
- ProbeFreeMarker 早退:不预览、不画纵向光标、单击不固定
- 补 if (!hitCurve) continue:否则整列光标下 probe.ref 恒有效,任意位置都能固定
- 固定点仍恒吸附到真实采样时刻;「已吸附」圆环只在稀疏判据成立时画
3) 两个显示开关:按钮改名「自由标记点选取」,其下新增「显示增量 | 显示枚举文本」
- 默认关闭,只影响已固定点的胶囊文本;预览胶囊恒为「值 = 枚举」
- 开关行计入面板高度与内容区高度
4) 面板六列:新增恒存在的「序号」列(组内 1 起)
- 枚举列存在时,无枚举/对不上任何枚举项显示 N/A
- 列与列之间画竖线;悬停某行时其它固定点封顶 50% 不透明度,移出恢复
- 删除固定点 ✕ 的悬停浮动提示(PaintFreeMarkerTooltip 实现与声明全部移除)
- 开启选取模式的网格上,信号悬停提示只显示信号名
5) 缓存键补齐
- FreeMarkerContents 混入枚举表指纹(旧键会让加上枚举表后仍显示 N/A)
- PanelSlotKey 混入两个新按钮矩形与开关状态
6) 注释/文档
- 修正 FreeMarkerProbe、SetLaneFreeMarkerCursor、标记透明度等处的过期说明
- 空态提示按是否开启选取模式区分文案
验证(全离屏,未占用鼠标/键盘/屏幕)
- 新增 .preflight/mark5check 52/52
- 回归:markcheck 67/67、mark4check 40/40、fixcheck 37/37、round3check 31/31、
round4check 34/34、round5check 5/5、editcheck 20/20、convcheck 18/18、diag 19/19
- check 136/137(唯一失败项为既有不稳定项,drift=15818 与改动前逐位相同)
- make release / make debug 零警告;Release 产物 TargetCheck.exe 857,600 字节
This commit is contained in:
1 parent
79eebc281e
commit
affb9cc340
12 files changed
+561
-187
No files matched your search
+28
-12
@@ -939,16 +939,32 @@ namespace jdi
|
||||
bool freeMarker = false;
|
||||
|
||||
/**
|
||||
* @brief 「自由标记」的光标模式(浮动面板最下方的切换按钮)。
|
||||
* @brief 「自由标记」的**光标模式**(浮动面板底部「自由标记点选取」切换按钮)。
|
||||
*
|
||||
* `false`(默认):鼠标在信号曲线上(判据同 `PlotView::ProbeFreeMarker`:
|
||||
* 到画出来的折线的垂直距离 ≤ `kSignalHitTolerance`)时才显示取值预览;
|
||||
* 鼠标下方没有曲线时按下就是普通的平移/框选,不会误固定数据点。
|
||||
* `true`:与最初实现的语义相同 —— 网格内始终跟随鼠标画一条**仅限本网格**的纵向光标
|
||||
*(上下各一个三角把手、不显示时间读数),光标穿过信号时标注离鼠标最近的数据点。
|
||||
* `false`(默认):鼠标就是**普通鼠标** —— 不显示任何取值预览、不画纵向光标,
|
||||
* 按下/拖动完全走常规语义(平移 / 框选 / 拖信号),**不会**固定数据点。
|
||||
* `true`:进入「自由标记点选取」—— 网格内始终跟随鼠标画一条**仅限本网格**的纵向光标
|
||||
*(上下各一个三角把手、不显示时间读数),鼠标接触到信号曲线时标注离鼠标最近的数据点,
|
||||
* 左键单击把该数据点固定下来(此时左键**不再**用于平移/框选/拖信号)。
|
||||
*/
|
||||
bool freeMarkerCursor = false;
|
||||
|
||||
/**
|
||||
* @brief 固定点的数值显示是否附带**括号内增量**(浮动面板的「显示增量」开关)。
|
||||
*
|
||||
* 默认 `false`:胶囊只显示当前值。⚠️ 只影响**已固定点**的显示,
|
||||
* 不影响「自由标记点选取」模式下跟随鼠标的预览胶囊,也不影响面板统计列。
|
||||
*/
|
||||
bool freeMarkerShowDelta = false;
|
||||
|
||||
/**
|
||||
* @brief 固定点的数值显示是否附带**枚举文本**(浮动面板的「显示枚举文本」开关)。
|
||||
*
|
||||
* 默认 `false`:胶囊只显示当前值。⚠️ 只影响**已固定点**的显示,
|
||||
* 不影响跟随鼠标的预览胶囊,也不影响面板统计列(那一列只看有没有枚举表)。
|
||||
*/
|
||||
bool freeMarkerShowEnum = false;
|
||||
|
||||
/**
|
||||
* @brief 已固定的自由标记点(**未排序**,按加入顺序)。
|
||||
*
|
||||
@@ -994,9 +1010,9 @@ namespace jdi
|
||||
/**
|
||||
* @brief 网格内固定数据点(纵向细线 / 数据点 / 取值胶囊 / 行尾 ✕)的显示不透明度。
|
||||
*
|
||||
* 0 = 完全透明(看不见),1 = 完全不透明(默认)。由浮动面板底部「光标选取模式」
|
||||
* 激活时出现的「标记透明度」滑动条驱动;只影响**本网格**的固定点显示内容,
|
||||
* 不影响面板自身的像素与鼠标交互。
|
||||
* 0 = 完全透明(看不见),1 = 完全不透明(默认)。由浮动面板底部**总是显示**的
|
||||
* 「标记透明度」滑动条驱动(与「自由标记点选取」是否开启无关);只影响**本网格**的
|
||||
* 固定点显示内容,不影响面板自身的像素与鼠标交互。
|
||||
*/
|
||||
float freeMarkerOpacity = 1.0f;
|
||||
|
||||
@@ -1026,15 +1042,15 @@ namespace jdi
|
||||
int freeMarkerSelected = -1;
|
||||
|
||||
/**
|
||||
* @brief 「自由标记」面板五列的**实测内容宽度**(设备像素,0 = 还没量过)。
|
||||
* @brief 「自由标记」面板六列的**实测内容宽度**(设备像素,0 = 还没量过)。
|
||||
*
|
||||
* 用户 2026-10-21 明确要求:面板里的取值 / 枚举文本 / 增量 / 时刻 / 间隔
|
||||
* 用户 2026-10-21 明确要求:面板里的序号 / 取值 / 枚举文本 / 增量 / 时刻 / 间隔
|
||||
* **不得出现省略号(…)**。因此列宽不能再用固定值:绘制该面板时顺便把每格
|
||||
* 真实文本量一遍,取最大值存到这里;布局(`EdgePanelWidth` / `EdgePanelLayoutFor`)
|
||||
* 用它与缺省列宽 `kFreeMarkerColumnWidths` 的较大者,于是列宽自然贴合内容。
|
||||
* ⚠️ 存的是**设备像素**(已经乘过 DPI 缩放),与字体直接对应。
|
||||
*/
|
||||
std::array<float, 5> freeMarkerColumnWidths{};
|
||||
std::array<float, 6> freeMarkerColumnWidths{};
|
||||
|
||||
/** 某信号分组在「自由标记」面板里是否被收起。 */
|
||||
bool FreeMarkerGroupCollapsed(const SignalRef& ref) const
|
||||
|
||||
@@ -137,6 +137,8 @@ namespace jdi
|
||||
float freeMarkerOpacity = 1.0f;
|
||||
float freeMarkerScroll = 0.0f;
|
||||
int freeMarkerSelected = -1;
|
||||
bool freeMarkerShowDelta = false;
|
||||
bool freeMarkerShowEnum = false;
|
||||
std::vector<SignalRef> freeMarkerCollapsedGroups;
|
||||
};
|
||||
|
||||
@@ -182,6 +184,8 @@ namespace jdi
|
||||
carry.freeMarkerOpacity = lane.freeMarkerOpacity;
|
||||
carry.freeMarkerScroll = lane.freeMarkerScroll;
|
||||
carry.freeMarkerSelected = lane.freeMarkerSelected;
|
||||
carry.freeMarkerShowDelta = lane.freeMarkerShowDelta;
|
||||
carry.freeMarkerShowEnum = lane.freeMarkerShowEnum;
|
||||
carry.freeMarkerCollapsedGroups = lane.freeMarkerCollapsedGroups;
|
||||
for (std::size_t signalIndex = 0; signalIndex < lane.signals.size(); ++signalIndex)
|
||||
{
|
||||
@@ -248,6 +252,8 @@ namespace jdi
|
||||
lane.freeMarkerOpacity = carry.freeMarkerOpacity;
|
||||
lane.freeMarkerScroll = carry.freeMarkerScroll;
|
||||
lane.freeMarkerSelected = carry.freeMarkerSelected;
|
||||
lane.freeMarkerShowDelta = carry.freeMarkerShowDelta;
|
||||
lane.freeMarkerShowEnum = carry.freeMarkerShowEnum;
|
||||
lane.freeMarkerCollapsedGroups = carry.freeMarkerCollapsedGroups;
|
||||
};
|
||||
|
||||
@@ -445,6 +445,8 @@ namespace jdi
|
||||
lane.meanFilterPanel = source.meanFilterPanel;
|
||||
lane.freeMarker = source.freeMarker;
|
||||
lane.freeMarkerCursor = source.freeMarkerCursor;
|
||||
lane.freeMarkerShowDelta = source.freeMarkerShowDelta;
|
||||
lane.freeMarkerShowEnum = source.freeMarkerShowEnum;
|
||||
lane.freeMarkerPanel = source.freeMarkerPanel;
|
||||
lane.freeMarkerOpacity = source.freeMarkerOpacity;
|
||||
// 拆分后每个子网格只保留自己那个信号的均值滤波 / 中心轴 / 弱峰调整 / 自由标记条目。
|
||||
|
||||
Reference in new issue
Block a user