-
+
{{ t('toolbar.search.value') }}
-
+
{{ t('toolbar.search.name') }}
-
@@ -155,7 +180,7 @@ function makeSignalIconClass(signal) {
.value-input-wrapper {
position: relative;
margin-left: 5px;
- width: 120px;
+ transition: var(--animation-5s);
}
.toolbar-search-container {
@@ -255,4 +280,36 @@ function makeSignalIconClass(signal) {
padding: 5px;
}
+.value-text {
+ margin-left: 5px;
+ margin-right: 5px;
+}
+
+.value-choose > span {
+ cursor: pointer;
+ padding: 3px;
+ border-radius: .3em;
+ font-weight: 800;
+ font-size: 22px;
+ margin-left: 3px;
+ transition: var(--animation-3s);
+}
+
+.value-choose > span:hover {
+ background-color: var(--main-color);
+ color: var(--sidebar);
+ transition: var(--animation-3s);
+}
+
+.value-choose.disabled > span {
+ cursor: not-allowed;
+ opacity: 0.5;
+}
+
+.value-choose.disabled > span:hover {
+ background-color: unset;
+ color: unset;
+}
+
+
\ No newline at end of file
diff --git a/src/hook/global.js b/src/hook/global.js
index 846652e..91d4088 100644
--- a/src/hook/global.js
+++ b/src/hook/global.js
@@ -129,7 +129,7 @@ export const globalLookup = reactive({
/**
*
* @param {string} link
- * @param {'height' | 'color' | 'valueFormat' | 'renderModal'} option
+ * @param {'height' | 'color' | 'valueFormat' | 'renderModal' | 'highlight'} option
* @param {any} value
* @returns {boolean} true 代表改变了值,否则则没有,可以用来判断是否需要重复塑造 Vertices
*/
diff --git a/src/hook/sidebar-select-wire.js b/src/hook/sidebar-select-wire.js
index 8bf0e99..89cfa08 100644
--- a/src/hook/sidebar-select-wire.js
+++ b/src/hook/sidebar-select-wire.js
@@ -24,6 +24,9 @@ export const sidebarSelectedWires = {
add(link) {
globalLookup.sidebarSelectedWireLinks.add(link);
+ // 让渲染进行高亮
+ globalLookup.setRenderOption(link, 'highlight', 1);
+ globalLookup.render({ type: 'wave-only' });
this.lastLink = link;
this.togglePipe();
},
@@ -37,6 +40,8 @@ export const sidebarSelectedWires = {
break;
}
}
+ globalLookup.setRenderOption(link, 'highlight', 0);
+ globalLookup.render({ type: 'wave-only' });
this.togglePipe();
},
diff --git a/src/hook/utils.js b/src/hook/utils.js
index d701efd..1313e39 100644
--- a/src/hook/utils.js
+++ b/src/hook/utils.js
@@ -161,9 +161,12 @@ function getSmartCurrentSignalValue(changoItem, time) {
}
}
-async function updateWireCurrentValue() {
+async function updateWireCurrentValue(time) {
const chango = globalLookup.chango;
- const time = globalLookup.currentTime;
+ if (time === undefined) {
+ time = globalLookup.currentTime;
+ }
+
const currentSignalValues = globalLookup.currentSignalValues;
for (const signal of globalLookup.currentWires) {
diff --git a/src/hook/wave-view/render-shader.js b/src/hook/wave-view/render-shader.js
index d7b7215..e4ff13c 100644
--- a/src/hook/wave-view/render-shader.js
+++ b/src/hook/wave-view/render-shader.js
@@ -37,6 +37,7 @@ out vec4 v_color;
uniform float posYFactor;
uniform vec2 scale;
uniform vec2 offset;
+uniform vec3 colorOffset;
uniform vec4 colors[${colorsLength}];
uniform vec2 shifts[7]; // 基础八位图偏移量,为了性能,pos 只传入整数,需要的坐标负数由该值提供
uniform vec2 widthShifts[9]; // 用于构造线宽的偏移
@@ -44,7 +45,13 @@ uniform vec2 widthShifts[9]; // 用于构造线宽的偏移
void main() {
vec2 shift = shifts[control.x];
vec2 ws = widthShifts[control.y];
- v_color = colors[control.z];
+ vec4 color = colors[control.z];
+ v_color = vec4(
+ color.x + colorOffset.x,
+ color.y + colorOffset.y,
+ color.z + colorOffset.z,
+ color.w
+ );
// 为了性能,传递进来进来的都是整数,pos.y 需要除以 posYFactor
float posX = float(pos.x);
diff --git a/src/hook/wave-view/render-wave.js b/src/hook/wave-view/render-wave.js
index e15e354..607ea82 100644
--- a/src/hook/wave-view/render-wave.js
+++ b/src/hook/wave-view/render-wave.js
@@ -1,4 +1,4 @@
-import { globalSetting, globalStyle } from '../global';
+import { globalLookup, globalSetting, globalStyle } from '../global';
import { gl_Colors, gl_Shifts, gl_Shifts_for_bar, gl_WidthShifts, barShift, getRatio, screenHeightPixel, maskColorIndexOffset, posYFactor, glslInputLength, prettyPrint, ladderAnalog_GL_WidthShifts, lineAnlog_GL_WidthShifts } from './render-utils.js';
import { vertexShader, fragmentShader } from './render-shader.js';
@@ -56,6 +56,7 @@ class WebGL2WaveRender {
* offset: WebGLUniformLocation,
* pos: number,
* control: number,
+ * colorOffset: number,
* widthShifts: WebGLUniformLocation,
* gl: WebGL2RenderingContext
* }}
@@ -73,6 +74,7 @@ class WebGL2WaveRender {
posYFactor: gl.getUniformLocation(program, 'posYFactor'),
scale: gl.getUniformLocation(program, 'scale'),
offset: gl.getUniformLocation(program, 'offset'),
+ colorOffset: gl.getUniformLocation(program, 'colorOffset'),
pos: gl.getAttribLocation(program, 'pos'),
control: gl.getAttribLocation(program, 'control'),
widthShifts: gl.getUniformLocation(program, 'widthShifts'),
@@ -485,10 +487,19 @@ class WebGL2WaveRender {
const lineVertices = lineVerticesMap.get(id);
const maskVertices = maskVerticesMap.get(id);
+ const highlightCode = getHighlightCode(id);
+ if (highlightCode > 0) {
+ const colorIncrement = 0.3;
+ gl.uniform3f(webglLocation.colorOffset, colorIncrement, colorIncrement, colorIncrement);
+ } else {
+ gl.uniform3f(webglLocation.colorOffset, 0, 0, 0);
+ }
+
if (signal.size === 1) {
// 如果是 bit
gl.uniform2fv(webglLocation.widthShifts, gl_WidthShifts);
+
gl.uniform2fv(webglLocation.shifts, gl_Shifts);
gl.bindVertexArray(signalItem.lineVao);
gl.drawArrays(gl.TRIANGLE_STRIP, 0, lineVertices.length / glslInputLength);
@@ -529,6 +540,9 @@ class WebGL2WaveRender {
}
}
+ if (renderConfig.type === 'wave-only') {
+ return;
+ }
plugins.map(fn => fn(globalLookup, pstate, elements));
}
@@ -558,7 +572,22 @@ class WebGL2WaveRender {
requestAnimationFrame(drawWaves);
}
}
+}
+/**
+ *
+ * @param {string} link
+ * @returns {number}
+ */
+function getHighlightCode(link) {
+ const renderOptions = globalLookup.currentSignalRenderOptions;
+ if (renderOptions.has(link)) {
+ const option = renderOptions.get(link);
+ if (typeof option.highlight === 'number') {
+ return option.highlight;
+ }
+ }
+ return 0;
}
export default WebGL2WaveRender;
\ No newline at end of file
diff --git a/src/hook/wave-view/toolbar/renderFormat.js b/src/hook/wave-view/toolbar/renderFormat.js
index a823eb8..41104a2 100644
--- a/src/hook/wave-view/toolbar/renderFormat.js
+++ b/src/hook/wave-view/toolbar/renderFormat.js
@@ -121,7 +121,7 @@ export class FormatValueRender {
}
let valueString = value.toString(radix);
- if (valueString.length <= pos) {
+ if (pos === -1 || valueString.length <= pos) {
return valueString;
}
const valSign = (value < 0) ? '-' : '';
@@ -137,7 +137,7 @@ export class FormatValueRender {
// 无符号的各类进制数字
const valueString = value.toString(radix);
- if (valueString.length <= pos) {
+ if (pos === -1 || valueString.length <= pos) {
return valueString;
}
if (pos === 1) {
@@ -166,7 +166,7 @@ export class FormatValueRender {
}
const valueString = value.toString();
- if (valueString.length <= pos) {
+ if (pos === -1 || valueString.length <= pos) {
return valueString;
}
const valSign = (value < 0) ? '-' : '';
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 5ae1c77..00103af 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -93,6 +93,13 @@
"toolbar.location.to-prev-change": "Go to Previous Change Edge",
"toolbar.location.make-location": "Create New Pivot",
+ "context-menu.cannot-join-repeat-group": "current signal is already contained in this group",
+
+ "toolbar.no-result": "No Result",
+ "toolbar.search.value.already-to-head": "already to head",
+ "toolbar.search.value.already-to-tail": "already to tail",
+ "toolbar.search.value.searching": "searching",
+
"current-version": "current version",
"copyright": "The copyright of this software belongs to
Digital-IDE project team. Welcome to
Star."
}
\ No newline at end of file
diff --git a/src/i18n/zh.json b/src/i18n/zh.json
index 68d4975..e030970 100644
--- a/src/i18n/zh.json
+++ b/src/i18n/zh.json
@@ -91,6 +91,13 @@
"toolbar.location.to-prev-change": "前往上一个变化的边沿",
"toolbar.location.make-location": "创建新的信标",
+ "context-menu.cannot-join-repeat-group": "当前信号已在此分组中",
+
+ "toolbar.no-result": "无结果",
+ "toolbar.search.value.already-to-head": "已经到开头了",
+ "toolbar.search.value.already-to-tail": "已经到结尾了",
+ "toolbar.search.value.searching": "搜索中",
+
"current-version": "当前版本",
"copyright": "本软件版权归
Digital-IDE 项目组所有,欢迎
Star。"
}
\ No newline at end of file
diff --git a/src/types/jsdoc.js b/src/types/jsdoc.js
index 67bf8a4..d7bd70d 100644
--- a/src/types/jsdoc.js
+++ b/src/types/jsdoc.js
@@ -35,7 +35,7 @@
* @typedef {Object} WaveRenderSidebarItem
* @property {WireItemBaseInfo} signalInfo
* @property {GroupBaseInfo} groupInfo
- * @property {0 | 1} renderType 0 代表单条波形,1 代表 分组
+ * @property {0 | 1 | 2} renderType 0:单条波形,1:分组,2:bus聚合
* @property {WaveRenderSidebarItem[]} children 分组内的波形,只有当 renderType 为 1 时才不为空数组
*/
@@ -129,7 +129,7 @@
/**
* @description
* @typedef {Object} RenderConfig
- * @property {'common' | 'action' | 'value' | undefined} type
+ * @property {'common' | 'action' | 'value' | 'wave-only' | undefined} type
*/
/**
@@ -155,5 +155,6 @@
* @property {number | undefined} color 波形的颜色,可以在右击菜单栏中设置
* @property {number | undefined} valueFormat 波形数字的展示形式,可以在上侧的下拉菜单中设置,vec 类型的波形,可以设置为:0:二进制、1:八进制、2:十六进制、3:有符号整型、4:无符号整型、5:浮点数(半精度、6:单精度、7:双精度)
* @property {number | undefined} renderModal 波形的渲染模式,默认为 bit 和 vec,vec 类型的波形,可以设置为:0:数字形式、1:折线模拟形式、2:阶梯模拟形式
+ * @property {number | undefined} highlight 当前是否需要进行高亮 1 代表需要
*/
diff --git a/yarn.lock b/yarn.lock
index c3b83b5..9fe8471 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2982,10 +2982,10 @@ electron-to-chromium@^1.4.668:
resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz"
integrity sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw==
-element-plus@^2.5.6:
- version "2.5.6"
- resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.5.6.tgz"
- integrity sha512-zctKTiyIDmcnMp3K5WG1hglgraW9EbiCLiIDVtaMCS5mPMl2fRKdS0vOFGnECIq9taFoxnyoDwxHD81nv0B4RA==
+element-plus@^2.6.3:
+ version "2.6.3"
+ resolved "https://registry.npmjs.org/element-plus/-/element-plus-2.6.3.tgz"
+ integrity sha512-U4L/mr+1r+EmAUYUHrs0V/8hHMdBGP07rPymSC72LZCN4jK1UwygQYICegTQ5us4mxeqBvW6wfoEfo003fwCqw==
dependencies:
"@ctrl/tinycolor" "^3.4.1"
"@element-plus/icons-vue" "^2.3.1"