样式区「调整」行:系数调整(二级面板输入)+ 取绝对值 + 中心反转

- 移除上一轮新增的「系数增益」输入行与「取绝对值 / 中心反转」按钮行。
- 在「样式」下方、「线宽」上方新增「调整」行,一行三个等宽按钮:
  「系数调整」「取绝对值」「中心反转」(后两者即原按钮迁移至此)。
  样式区固定行数回到五行(颜色 / 样式 / 调整 / 线宽 / 透明度),标签列宽回到 44(只需容纳「调整」)。
- 「系数调整」交互与"自定义颜色色块入口"一致:按下只登记,**抬起**且指针仍在同一按钮上才展开
  二级面板;面板锚定在按钮下沿,内含一个数值输入框(默认 1,EditFilter::NUMBER)。
  提交后面板保持打开(与网格 Y 轴上下限的菜单内联编辑一致),并把夹取后的真实值回写输入框。
- 按钮启用态规则:绘制系数 != 1 时显示为"已启用"(与其它切换按钮启用样式完全一致:
  accentSoft 底 + accent 描边),等于默认值 1 时为"未启用"样式。
- 系数为 1 / 非保序变换的回退逻辑、SceneContentHash / 样式快照 / 折线缓存键等绘制链路不变。

验证(离屏 harness,SW_HIDE、不动鼠标键盘屏幕):
- [AL] 重构为:五行高度与行序(调整行在样式行与线宽行之间)、三按钮按序铺满且不重叠、
  三个标签都完整放得下(无裁切);
  「系数调整」按住不弹出 / 移开再松开取消 / 单击展开(SIGNAL_PANEL 范围、标题「系数调整」、
  初始值 1、锚定在按钮下沿)→ 点击输入框进入编辑 → 键入 2.5 回车提交(面板保持打开、
  输入框回显 2.5、折线缓存键携带新系数)→ 点别处关闭面板;
  像素级核对按钮样式:gain=1 时填充为 cardBg,gain=2.5 时填充与"取绝对值已启用"的按钮**逐像素同色**
  (0xFFCFE4F3)且与未启用态不同。
- 其余用例(样式变换顺序与顶点范围、拾色器两列等高、选区放大下 GX/图例命中、标题栏内存读数)
  保持不变。合计 549/549 通过;make clean && make all 零警告。
This commit is contained in:
DeepSeek V4.1 Flash committed 2026-10-13 13:51:31 +08:00
1 parent c3343907ec
commit 2f243dd557
2 files changed
+172 -123

No files matched your search

+20 -9
View File
@@ -34,7 +34,8 @@ namespace jdi
CMD_COLOR_BASE = 100, /**< 预设颜色基准(配合色块下标)。 */
CMD_MODE_BASE = 200, /**< 绘制样式基准(配合下标)。 */
CMD_LANE_BASE = 300, /**< 网格归属基准(配合下标)。 */
CMD_LANE_NEW = 400 /**< 新建网格。 */
CMD_LANE_NEW = 400, /**< 新建网格。 */
CMD_GAIN_EDIT = 500, /**< 「系数调整」二级面板里的系数输入框(幂等提交)。 */
};
/**
@@ -300,8 +301,7 @@ namespace jdi
WIDTH = 1, /**< 线宽数值。 */
OPACITY = 2, /**< 不透明度数值(百分比)。 */
SIGNAL_NAME = 3, /**< 信号显示名称(列表行内)。 */
FILE_NAME = 4, /**< 分组显示名称(列表行内)。 */
GAIN = 5 /**< 系数增益(绘制前把采样值乘以该系数)。 */
FILE_NAME = 4 /**< 分组显示名称(列表行内)。 */
};
/**
@@ -340,7 +340,7 @@ namespace jdi
OPACITY_VALUE, /**< 不透明度数值框(可点击输入)。 */
WIDTH_SLIDER, /**< 线宽滑块。 */
WIDTH_VALUE, /**< 线宽数值框(可点击输入)。 */
GAIN_FIELD, /**< 系数增益输入框。 */
GAIN_ADJUST, /**< 「系数调整」按钮(点击展开系数输入二级面板)。 */
ABSOLUTE_TOGGLE, /**< 「取绝对值」切换按钮。 */
INVERT_TOGGLE, /**< 「中心反转」切换按钮。 */
TOGGLE_ALL, /**< 全部显示/隐藏按钮。 */
@@ -493,6 +493,17 @@ namespace jdi
*/
bool OpenColorPickerPopup(const SignalStyle& style);
/**
* @brief 打开「系数调整」的**二级面板**(一个带输入框的浮动面板,锚定在该按钮下方)。
*
* 与自定义颜色入口同一套交互:点击按钮 → 抬起时展开浮动面板 → 面板内的输入框可编辑
* 绘制前乘上的系数(默认 1),回车 / 点击其它位置提交,面板保持打开(与网格 Y 轴上下限
* 的菜单内联输入框一致)。
*
* @return 面板已打开返回 true。
*/
bool OpenGainMenu();
/**
* @brief 判断当前标签页中全部信号是否均为可见状态。
* @return 全部可见且至少有一条信号返回 true。
@@ -596,17 +607,16 @@ namespace jdi
std::array<gd::RectF, 3> m_modeRects; /**< 绘制样式按钮矩形。 */
// 样式区固定六行:颜色 / 样式 / 线宽 / 透明度 / 系数增益 / 取绝对值与中心反转。
// 样式区固定五行:颜色 / 样式 / 调整(系数调整·取绝对值·中心反转)/ 线宽 / 透明度。
// 各行控件共用同一内容列宽度与左边界。
std::array<gd::RectF, 6> m_styleRowRects; /**< 六行整体矩形(含标签列)。 */
std::array<gd::RectF, 5> m_styleRowRects; /**< 五行整体矩形(含标签列)。 */
gd::RectF m_opacityTrackRect; /**< 不透明度滑块轨道矩形。 */
gd::RectF m_opacityValueRect; /**< 不透明度数值文本矩形。 */
gd::RectF m_widthTrackRect; /**< 线宽滑块轨道矩形。 */
gd::RectF m_widthValueRect; /**< 线宽数值文本矩形(双击可输入)。 */
gd::RectF m_gainFieldRect; /**< 系数增益输入框矩形。 */
gd::RectF m_absoluteRect; /**< 「取绝对值」切换按钮矩形。 */
gd::RectF m_invertedRect; /**< 「中心反转」切换按钮矩形。 */
/** 「调整」行的三个等宽按钮:0 = 系数调整,1 = 取绝对值,2 = 中心反转。 */
std::array<gd::RectF, 3> m_adjustRects;
std::vector<ListRow> m_rows; /**< 列表行集合(惰性缓存)。 */
bool m_rowsDirty = true; /**< 列表行集合是否需要重建。 */
@@ -648,6 +658,7 @@ namespace jdi
bool m_pendingLaneMenu = false; /**< 左键抬起时是否弹出网格归属菜单。 */
SignalRef m_pendingLaneRef; /**< 待弹出菜单的目标信号。 */
bool m_pendingColorPicker = false; /**< 左键抬起时是否弹出拾色器。 */
bool m_pendingGainMenu = false; /**< 左键抬起时是否弹出「系数调整」的系数输入二级面板。 */
/**
* @brief 待确认的「关闭类」按钮(✕)。