提交 f7145b35 编写于 作者: P pissang

Fix large scatter draw with transform.

上级 34cee641
......@@ -51,7 +51,7 @@ var LargeSymbolPath = graphic.extendShape({
return;
}
// Don't consider transform.
this.setTransform(ctx);
// PENDING If style or other canvas status changed?
for (var i = 0; i < points.length;) {
var x = points[i++];
......@@ -66,6 +66,8 @@ var LargeSymbolPath = graphic.extendShape({
size[0], size[1]
);
}
this.restoreTransform(ctx);
},
findDataIndex: function (x, y) {
......
......@@ -10,38 +10,58 @@ echarts.extendChartView({
render: function (seriesModel, ecModel, api) {
var data = seriesModel.getData();
this._removeRoamTransformInPoints(seriesModel, 0, data.count());
this._updateGroupTransform(seriesModel);
var symbolDraw = this._updateSymbolDraw(data, seriesModel);
symbolDraw.updateData(data);
this._finished = true;
},
incrementalPrepareRender: function (seriesModel, ecModel, api) {
this._updateGroupTransform(seriesModel);
var data = seriesModel.getData();
var symbolDraw = this._updateSymbolDraw(data, seriesModel);
symbolDraw.incrementalPrepareUpdate(data);
this._finished = false;
},
incrementalRender: function (taskParams, seriesModel, ecModel) {
this._removeRoamTransformInPoints(seriesModel, taskParams.start, taskParams.end);
this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData());
this._finished = taskParams.end === seriesModel.getData().count();
},
updateTransform: function (seriesModel, ecModel, api) {
var coordSys = seriesModel.coordinateSystem;
var update = true;
// Must mark group dirty and make sure the incremental layer will be cleared
// PENDING
this.group.dirty();
if (coordSys.getRoamTransform && this._symbolDraw.isPersistent()) {
this.group.transform = matrix.clone(coordSys.getRoamTransform());
this.group.decomposeTransform();
if (coordSys.getRoamTransform) {
update = false;
this._updateGroupTransform(seriesModel);
}
else {
if (update || !this._finished || !this._symbolDraw.isPersistent()) {
return {
update: true
};
}
},
_updateGroupTransform: function (seriesModel) {
var coordSys = seriesModel.coordinateSystem;
if (coordSys && coordSys.getRoamTransform) {
this.group.transform = matrix.clone(coordSys.getRoamTransform());
this.group.decomposeTransform();
}
},
_removeRoamTransformInPoints: function (seriesModel, start, end) {
var coordSys = seriesModel.coordinateSystem;
if (coordSys && coordSys.removeRoamTransformInPoint) {
......
......@@ -37,7 +37,7 @@ export default function (seriesType) {
var x = tmpIn[0] = data.get(dims[0], i, true);
var y = tmpIn[1] = data.get(dims[1], i, true);
// Also {Array.<number>}, not undefined to avoid if...else... statement
point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, tmpOut);
point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, null, tmpOut);
}
if (isLargeRender) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册