UNPKG

@devexperts/dxcharts-lite

Version:
44 lines (43 loc) 1.81 kB
/* * Copyright (C) 2019 - 2026 Devexperts Solutions IE Limited * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. */ export const ratioFromZoomXY = (zoomX, zoomY) => zoomX / zoomY; export const zoomXToZoomY = (zoomX, ratio) => zoomX / ratio; export const zoomYToZoomX = (zoomY, ratio) => zoomY * ratio; /** * Locks the zoomY with zoomX and zooms y-scale depending on x-scale. * @param prevState * @param newState */ export const changeYToKeepRatio = (prevState, newState) => { const prevZoomX = prevState.zoomX; const prevZoomY = prevState.zoomY; const prevZoomXY = ratioFromZoomXY(prevZoomX, prevZoomY); const prevYHeight = prevState.yEnd - prevState.yStart; // recalculate zoomY newState.zoomY = zoomXToZoomY(newState.zoomX, prevZoomXY); const zoomYMult = newState.zoomY / prevZoomY; const newYHeight = prevYHeight * zoomYMult; const delta = newYHeight - prevYHeight; newState.yEnd = newState.yEnd + delta / 2; newState.yStart = newState.yStart - delta / 2; }; /** * Locks the zoomY with zoomX and zooms x-scale depending on y-scale. * @param prevState * @param newState */ export const changeXToKeepRatio = (prevState, newState) => { const prevZoomX = prevState.zoomX; const prevZoomY = prevState.zoomY; const prevZoomXY = ratioFromZoomXY(prevZoomX, prevZoomY); const prevXWidth = prevState.xEnd - prevState.xStart; // recalculate zoomX newState.zoomX = zoomYToZoomX(newState.zoomY, prevZoomXY); const zoomXMult = newState.zoomX / prevZoomX; const newXWidth = prevXWidth * zoomXMult; const delta = newXWidth - prevXWidth; newState.xStart = newState.xStart - delta; };