弱峰增强改回逐信号滑块;迭代次数上限可就地编辑
一、参数输入方式(回到滑块形态,但每个信号各有一套) - 面板布局:每个被勾选的信号 = 名称行(+复选框)+ 两行滑块: 「增强等级 %」(0~200%)与「迭代次数 N」(1 ~ 该信号自己的上限)。 EdgePanelLayout 新增逐信号矩形 rowLevelTracks/rowLevelValues/rowIterTracks/rowIterValues; PEAK 的 rowPoints/rowIterations 恒为空(MEAN/CENTER 仍用文本输入框)。 - 恢复 kWeakPeakSliderRowHeight/kWeakPeakTrackHeight/kWeakPeakTrackMinWidth 与 WeakPeakSliderHit();恢复 PlotDragMode::PEAK_LEVEL/PEAK_ITERATIONS, 并新增 m_peakDragRef(拖动时必须知道是哪个信号)。 - 列宽算式集中在 WeakPeakLabelColumnWidth()/WeakPeakValueColumnWidth(), 与 EdgePanelWidth 共用,避免布局与面板宽度计算漂移。 二、迭代次数滑块上限可就地编辑(用户要求的行为) - 点击「迭代次数 N」滑块右侧的数值文本 → 整条滑块行(轨道 + 数值)变成一个输入框; 左侧标签保留可见。 - 输入框以空内容开始;空内容时以灰色提示当前上限值(m_peakEditCurrentMax,EndEdit 清零)。 - 过滤器为 EditFilter::BYTE(纯数字):负号、小数点、字母无法键入,粘贴同样被清洗, 从源头满足"只允许输入正整数"。 - 提交(回车 / 点击别处):仅当解析成功且 1 <= 值 <= 1000 时才作为新上限; 空内容、0、超范围一律保持原上限不变;生效后若当前迭代次数超过新上限则自动替换为新上限。 - 输入框在 paintOverlays() 中与 Y 轴上下限输入框一起绘制(覆盖在面板之上)。 - 新增 PlotEditTarget::PEAK_ITERATIONS_MAX;删除 PEAK_LEVEL_PERCENT/PEAK_ITERATIONS (等级只能拖滑块,迭代次数只能拖滑块)。 三、数据与缓存 - Lane::WeakPeakItem 新增 maxIterations(默认 10)。 - maxIterations 参与 PanelSlotKey(决定圆钮位置,面板必须重画), 但不参与 SceneContentHash(不影响网格内曲线,不应触发波形重画)。 四、测试 - uitest [X] 改为:滑块存在性/层序/列宽、等级滑块拖动(中间=100%、右端=200%)、 迭代滑块拖动(左端=1、右端=当前上限)、点击数值进入上限编辑(空内容 + 提示值 + 输入框 横跨整行、空内容回车不改、'-'/字母被拒、输入 40 生效且右端变 40、下调到 4 时当前值被夹到 4、 输入 0 被拒、点击别处提交),并保存编辑态截图供目视核对。 - make all 零警告;uitest 409/409 通过;panperf PASS;layercheck 保持像素一致。
This commit is contained in:
1 parent
1ddbc37b78
commit
a30a6fcf4d
4 files changed
+598
-112
No files matched your search
@@ -43,6 +43,8 @@ namespace jdi
|
||||
MOVE_SIGNAL, /**< 拖拽信号曲线到其它网格。 */
|
||||
EDGE_MOVE, /**< 拖动「边沿计数」的横向光标(上下移动幅值)。 */
|
||||
EDGE_PANEL_MOVE, /**< 拖动边沿计数浮动面板。 */
|
||||
PEAK_LEVEL, /**< 拖动「弱峰增强」某信号的等级滑块(0–200%)。 */
|
||||
PEAK_ITERATIONS, /**< 拖动「弱峰增强」某信号的迭代次数滑块(1 … 该信号自定义上限)。 */
|
||||
LANE_REORDER /**< 拖动网格图例中的 GX 编号徽标:上下调整网格次序。 */
|
||||
};
|
||||
|
||||
@@ -71,8 +73,7 @@ namespace jdi
|
||||
EDGE_CENTER_ITERATIONS, /**< 编辑「中心轴边沿计数」的迭代次数 N。 */
|
||||
MEAN_FILTER_POINTS, /**< 编辑「均值滤波」的均值点数 X。 */
|
||||
MEAN_FILTER_ITERATIONS, /**< 编辑「均值滤波」的迭代次数 N。 */
|
||||
PEAK_LEVEL_PERCENT, /**< 编辑「弱峰增强」某信号的增强等级(0–200%)。 */
|
||||
PEAK_ITERATIONS /**< 编辑「弱峰增强」某信号的迭代次数 N。 */
|
||||
PEAK_ITERATIONS_MAX /**< 编辑「弱峰增强」某信号「迭代次数 N」滑块的**上限**(正整数)。 */
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1133,15 +1134,26 @@ namespace jdi
|
||||
* @brief 「逐条目」面板的矩形(MEAN / CENTER / PEAK 面板共用同一套排布)。
|
||||
*
|
||||
* 索引与 `rowRefs` 一一对应(即网格内可见信号的顺序):
|
||||
* `rowChecks` 为第一排右侧的复选框;`rowPoints` / `rowIterations` 为第二排的两个输入框
|
||||
*(PEEK 信号分别为「增强等级 %」与「迭代次数 N」);
|
||||
* `rowStats` 为第三排的统计结果(中心轴边沿计数专用)。
|
||||
* `rowChecks` 为第一排右侧的复选框;`rowPoints` / `rowIterations` 为**输入框**
|
||||
*(MEAN / CENTER 使用);`rowStats` 为第三排的统计结果(中心轴边沿计数专用)。
|
||||
* 未勾选的条目对应的矩形均为空。
|
||||
*/
|
||||
std::vector<gd::RectF> rowChecks;
|
||||
std::vector<gd::RectF> rowPoints;
|
||||
std::vector<gd::RectF> rowIterations;
|
||||
std::vector<gd::RectF> rowStats;
|
||||
/**
|
||||
* @brief 「弱峰增强」每个被勾选信号自己的两行**滑块**(与 `rowRefs` 同序)。
|
||||
*
|
||||
* `rowLevelTracks/rowLevelValues` = 增强等级滑块与它右侧的数值文本;
|
||||
* `rowIterTracks/rowIterValues` = 迭代次数滑块与它右侧的数值文本
|
||||
*(**点值数值文本可以把滑块上限改为别的正整数**)。
|
||||
* 未勾选或非 PEAK 面板时对应元素为空矩形(数组也可能为空)。
|
||||
*/
|
||||
std::vector<gd::RectF> rowLevelTracks;
|
||||
std::vector<gd::RectF> rowLevelValues;
|
||||
std::vector<gd::RectF> rowIterTracks;
|
||||
std::vector<gd::RectF> rowIterValues;
|
||||
std::vector<SignalRef> rowRefs;
|
||||
};
|
||||
|
||||
@@ -1153,6 +1165,14 @@ namespace jdi
|
||||
*/
|
||||
EdgePanelLayout EdgePanelLayoutFor(int laneIndex, EdgePanelKind kind) const;
|
||||
|
||||
/**
|
||||
* @brief 在面板布局里找出某个信号对应的「逐条目」行下标。
|
||||
* @param [IN] layout 面板布局。
|
||||
* @param [IN] ref 目标信号。
|
||||
* @return 行下标(与 `rowRefs` 同序);未找到返回 -1。
|
||||
*/
|
||||
int PeakRowIndexOf(const EdgePanelLayout& layout, const SignalRef& ref) const;
|
||||
|
||||
/**
|
||||
* @brief 计算单个面板的缓存键(全局键之外,面板自身的内容)。
|
||||
* @param [IN] laneIndex 面板所属网格。
|
||||
@@ -1658,6 +1678,14 @@ namespace jdi
|
||||
std::vector<MeanFilterBuild> m_pendingMeanFilterItems; /**< 待构建的信号及其参数。 */
|
||||
std::vector<WeakPeakBuild> m_pendingWeakPeakItems; /**< 待构建的弱峰增强信号及其参数。 */
|
||||
bool m_mouseOverPanel = false; /**< 上一帧鼠标是否落在某个实验性功能面板上。 */
|
||||
int m_peakDragLane = -1; /**< 正在拖动弱峰滑块的面板所属网格。 */
|
||||
SignalRef m_peakDragRef; /**< 正在拖动弱峰滑块的**信号**(每个信号一套参数)。 */
|
||||
/**
|
||||
* @brief 正在编辑「迭代次数 N 上限」时,输入框内灰色提示用的**当前上限值**。
|
||||
*
|
||||
* 输入框以空内容开始,空内容时显示这个值作为提示;进入编辑时记录,提交后清零。
|
||||
*/
|
||||
int m_peakEditCurrentMax = 0;
|
||||
/**
|
||||
* @brief 本帧是否使用「快速绘制」(交互期间关闭波形与派生曲线的抗锯齿)。
|
||||
*
|
||||
|
||||
Reference in new issue
Block a user