123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- /**
- * AUTO-GENERATED FILE. DO NOT MODIFY.
- */
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- import { __extends } from "tslib";
- /**
- * Simple view coordinate system
- * Mapping given x, y to transformd view x, y
- */
- import * as vector from 'zrender/lib/core/vector.js';
- import * as matrix from 'zrender/lib/core/matrix.js';
- import BoundingRect from 'zrender/lib/core/BoundingRect.js';
- import Transformable from 'zrender/lib/core/Transformable.js';
- import { parsePercent } from '../util/number.js';
- var v2ApplyTransform = vector.applyTransform;
- var View =
- /** @class */
- function (_super) {
- __extends(View, _super);
- function View(name) {
- var _this = _super.call(this) || this;
- _this.type = 'view';
- _this.dimensions = ['x', 'y'];
- /**
- * Represents the transform brought by roam/zoom.
- * If `View['_viewRect']` applies roam transform,
- * we can get the final displayed rect.
- */
- _this._roamTransformable = new Transformable();
- /**
- * Represents the transform from `View['_rect']` to `View['_viewRect']`.
- */
- _this._rawTransformable = new Transformable();
- _this.name = name;
- return _this;
- }
- View.prototype.setBoundingRect = function (x, y, width, height) {
- this._rect = new BoundingRect(x, y, width, height);
- return this._rect;
- };
- /**
- * @return {module:zrender/core/BoundingRect}
- */
- View.prototype.getBoundingRect = function () {
- return this._rect;
- };
- View.prototype.setViewRect = function (x, y, width, height) {
- this._transformTo(x, y, width, height);
- this._viewRect = new BoundingRect(x, y, width, height);
- };
- /**
- * Transformed to particular position and size
- */
- View.prototype._transformTo = function (x, y, width, height) {
- var rect = this.getBoundingRect();
- var rawTransform = this._rawTransformable;
- rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));
- var rawParent = rawTransform.parent;
- rawTransform.parent = null;
- rawTransform.decomposeTransform();
- rawTransform.parent = rawParent;
- this._updateTransform();
- };
- /**
- * Set center of view
- */
- View.prototype.setCenter = function (centerCoord, api) {
- if (!centerCoord) {
- return;
- }
- this._center = [parsePercent(centerCoord[0], api.getWidth()), parsePercent(centerCoord[1], api.getHeight())];
- this._updateCenterAndZoom();
- };
- View.prototype.setZoom = function (zoom) {
- zoom = zoom || 1;
- var zoomLimit = this.zoomLimit;
- if (zoomLimit) {
- if (zoomLimit.max != null) {
- zoom = Math.min(zoomLimit.max, zoom);
- }
- if (zoomLimit.min != null) {
- zoom = Math.max(zoomLimit.min, zoom);
- }
- }
- this._zoom = zoom;
- this._updateCenterAndZoom();
- };
- /**
- * Get default center without roam
- */
- View.prototype.getDefaultCenter = function () {
- // Rect before any transform
- var rawRect = this.getBoundingRect();
- var cx = rawRect.x + rawRect.width / 2;
- var cy = rawRect.y + rawRect.height / 2;
- return [cx, cy];
- };
- View.prototype.getCenter = function () {
- return this._center || this.getDefaultCenter();
- };
- View.prototype.getZoom = function () {
- return this._zoom || 1;
- };
- View.prototype.getRoamTransform = function () {
- return this._roamTransformable.getLocalTransform();
- };
- /**
- * Remove roam
- */
- View.prototype._updateCenterAndZoom = function () {
- // Must update after view transform updated
- var rawTransformMatrix = this._rawTransformable.getLocalTransform();
- var roamTransform = this._roamTransformable;
- var defaultCenter = this.getDefaultCenter();
- var center = this.getCenter();
- var zoom = this.getZoom();
- center = vector.applyTransform([], center, rawTransformMatrix);
- defaultCenter = vector.applyTransform([], defaultCenter, rawTransformMatrix);
- roamTransform.originX = center[0];
- roamTransform.originY = center[1];
- roamTransform.x = defaultCenter[0] - center[0];
- roamTransform.y = defaultCenter[1] - center[1];
- roamTransform.scaleX = roamTransform.scaleY = zoom;
- this._updateTransform();
- };
- /**
- * Update transform props on `this` based on the current
- * `this._roamTransformable` and `this._rawTransformable`.
- */
- View.prototype._updateTransform = function () {
- var roamTransformable = this._roamTransformable;
- var rawTransformable = this._rawTransformable;
- rawTransformable.parent = roamTransformable;
- roamTransformable.updateTransform();
- rawTransformable.updateTransform();
- matrix.copy(this.transform || (this.transform = []), rawTransformable.transform || matrix.create());
- this._rawTransform = rawTransformable.getLocalTransform();
- this.invTransform = this.invTransform || [];
- matrix.invert(this.invTransform, this.transform);
- this.decomposeTransform();
- };
- View.prototype.getTransformInfo = function () {
- var rawTransformable = this._rawTransformable;
- var roamTransformable = this._roamTransformable; // Because roamTransformabel has `originX/originY` modified,
- // but the caller of `getTransformInfo` can not handle `originX/originY`,
- // so need to recalculate them.
- var dummyTransformable = new Transformable();
- dummyTransformable.transform = roamTransformable.transform;
- dummyTransformable.decomposeTransform();
- return {
- roam: {
- x: dummyTransformable.x,
- y: dummyTransformable.y,
- scaleX: dummyTransformable.scaleX,
- scaleY: dummyTransformable.scaleY
- },
- raw: {
- x: rawTransformable.x,
- y: rawTransformable.y,
- scaleX: rawTransformable.scaleX,
- scaleY: rawTransformable.scaleY
- }
- };
- };
- View.prototype.getViewRect = function () {
- return this._viewRect;
- };
- /**
- * Get view rect after roam transform
- */
- View.prototype.getViewRectAfterRoam = function () {
- var rect = this.getBoundingRect().clone();
- rect.applyTransform(this.transform);
- return rect;
- };
- /**
- * Convert a single (lon, lat) data item to (x, y) point.
- */
- View.prototype.dataToPoint = function (data, noRoam, out) {
- var transform = noRoam ? this._rawTransform : this.transform;
- out = out || [];
- return transform ? v2ApplyTransform(out, data, transform) : vector.copy(out, data);
- };
- /**
- * Convert a (x, y) point to (lon, lat) data
- */
- View.prototype.pointToData = function (point) {
- var invTransform = this.invTransform;
- return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]];
- };
- View.prototype.convertToPixel = function (ecModel, finder, value) {
- var coordSys = getCoordSys(finder);
- return coordSys === this ? coordSys.dataToPoint(value) : null;
- };
- View.prototype.convertFromPixel = function (ecModel, finder, pixel) {
- var coordSys = getCoordSys(finder);
- return coordSys === this ? coordSys.pointToData(pixel) : null;
- };
- /**
- * @implements
- */
- View.prototype.containPoint = function (point) {
- return this.getViewRectAfterRoam().contain(point[0], point[1]);
- };
- View.dimensions = ['x', 'y'];
- return View;
- }(Transformable);
- function getCoordSys(finder) {
- var seriesModel = finder.seriesModel;
- return seriesModel ? seriesModel.coordinateSystem : null; // e.g., graph.
- }
- export default View;
|