You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

275 lines
7.8 KiB

/*
* 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 zrUtil from 'zrender/lib/core/util';
import * as vector from 'zrender/lib/core/vector';
import * as matrix from 'zrender/lib/core/matrix';
import BoundingRect from 'zrender/lib/core/BoundingRect';
import Transformable from 'zrender/lib/core/Transformable';
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'];
_this._roamTransformable = new Transformable();
_this._rawTransformable = new Transformable();
_this.name = name;
return _this;
} // PENDING to getRect
View.prototype.setBoundingRect = function (x, y, width, height) {
this._rect = new BoundingRect(x, y, width, height);
return this._rect;
};
/**
* @return {module:zrender/core/BoundingRect}
*/
// PENDING to getRect
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));
rawTransform.decomposeTransform();
this._updateTransform();
};
/**
* Set center of view
*/
View.prototype.setCenter = function (centerCoord) {
if (!centerCoord) {
return;
}
this._center = centerCoord;
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 from roam and mapLocation
*/
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 roamTransform = this._roamTransformable.transform;
var rawTransformable = this._rawTransformable;
return {
roamTransform: roamTransform ? zrUtil.slice(roamTransform) : matrix.create(),
rawScaleX: rawTransformable.scaleX,
rawScaleY: rawTransformable.scaleY,
rawX: rawTransformable.x,
rawY: rawTransformable.y
};
};
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;