digital-vcd-render/src/hook/wave-view/x-scale-update.js

31 lines
755 B
JavaScript

import xOffsetUpdate from './x-offset-update';
/**
*
* @param {{
* xScale: number
* }} pstate
* @returns
*/
function xScaleUpdate(pstate, xScaleNextFn) {
let xScaleNext = xScaleNextFn();
const { xOffset, xCursor, xScale, xScaleMin, xScaleMax } = pstate;
xScaleNext = (xScaleNext > xScaleMax) ? xScaleMax : xScaleNext;
xScaleNext = (xScaleNext < xScaleMin) ? xScaleMin : xScaleNext;
// console.log('scale next', xScaleNext);
if (xScaleNext === xScale) {
return false; // exit without scale change
}
pstate.oldXScale = pstate.xScale;
pstate.xScale = xScaleNext;
xOffsetUpdate(pstate, () => xCursor - (xCursor - xOffset) * xScaleNext / xScale);
return true;
}
export default xScaleUpdate;