UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

54 lines (53 loc) 1.92 kB
import { create, invert } from "../../../../zrender/lib/core/matrix.mjs"; import { applyTransform } from "../../../../zrender/lib/core/vector.mjs"; function GLViewHelper(viewGL) { this.viewGL = viewGL; } GLViewHelper.prototype.reset = function(seriesModel, api) { this._updateCamera(api.getWidth(), api.getHeight(), api.getDevicePixelRatio()); this._viewTransform = create(); this.updateTransform(seriesModel, api); }; GLViewHelper.prototype.updateTransform = function(seriesModel, api) { var coordinateSystem = seriesModel.coordinateSystem; if (coordinateSystem.getRoamTransform) { invert(this._viewTransform, coordinateSystem.getRoamTransform()); this._setCameraTransform(this._viewTransform); api.getZr().refresh(); } }; GLViewHelper.prototype.dataToPoint = function(coordSys, data, pt) { pt = coordSys.dataToPoint(data, null, pt); var viewTransform = this._viewTransform; if (viewTransform) { applyTransform(pt, pt, viewTransform); } }; GLViewHelper.prototype.removeTransformInPoint = function(pt) { if (this._viewTransform) { applyTransform(pt, pt, this._viewTransform); } return pt; }; GLViewHelper.prototype.getZoom = function() { if (this._viewTransform) { var m = this._viewTransform; return 1 / Math.max(Math.sqrt(m[0] * m[0] + m[1] * m[1]), Math.sqrt(m[2] * m[2] + m[3] * m[3])); } return 1; }; GLViewHelper.prototype._setCameraTransform = function(m) { var camera = this.viewGL.camera; camera.position.set(m[4], m[5], 0); camera.scale.set(Math.sqrt(m[0] * m[0] + m[1] * m[1]), Math.sqrt(m[2] * m[2] + m[3] * m[3]), 1); }; GLViewHelper.prototype._updateCamera = function(width, height, dpr) { this.viewGL.setViewport(0, 0, width, height, dpr); var camera = this.viewGL.camera; camera.left = camera.top = 0; camera.bottom = height; camera.right = width; camera.near = 0; camera.far = 100; }; export { GLViewHelper as default };