| 
/* 
 | 
* 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 { map } from 'zrender/lib/core/util.js'; 
 | 
import createRenderPlanner from '../chart/helper/createRenderPlanner.js'; 
 | 
import { isDimensionStacked } from '../data/helper/dataStackHelper.js'; 
 | 
import { createFloat32Array } from '../util/vendor.js'; 
 | 
export default function pointsLayout(seriesType, forceStoreInTypedArray) { 
 | 
  return { 
 | 
    seriesType: seriesType, 
 | 
    plan: createRenderPlanner(), 
 | 
    reset: function (seriesModel) { 
 | 
      var data = seriesModel.getData(); 
 | 
      var coordSys = seriesModel.coordinateSystem; 
 | 
      var pipelineContext = seriesModel.pipelineContext; 
 | 
      var useTypedArray = forceStoreInTypedArray || pipelineContext.large; 
 | 
      if (!coordSys) { 
 | 
        return; 
 | 
      } 
 | 
      var dims = map(coordSys.dimensions, function (dim) { 
 | 
        return data.mapDimension(dim); 
 | 
      }).slice(0, 2); 
 | 
      var dimLen = dims.length; 
 | 
      var stackResultDim = data.getCalculationInfo('stackResultDimension'); 
 | 
      if (isDimensionStacked(data, dims[0])) { 
 | 
        dims[0] = stackResultDim; 
 | 
      } 
 | 
      if (isDimensionStacked(data, dims[1])) { 
 | 
        dims[1] = stackResultDim; 
 | 
      } 
 | 
      var store = data.getStore(); 
 | 
      var dimIdx0 = data.getDimensionIndex(dims[0]); 
 | 
      var dimIdx1 = data.getDimensionIndex(dims[1]); 
 | 
      return dimLen && { 
 | 
        progress: function (params, data) { 
 | 
          var segCount = params.end - params.start; 
 | 
          var points = useTypedArray && createFloat32Array(segCount * dimLen); 
 | 
          var tmpIn = []; 
 | 
          var tmpOut = []; 
 | 
          for (var i = params.start, offset = 0; i < params.end; i++) { 
 | 
            var point = void 0; 
 | 
            if (dimLen === 1) { 
 | 
              var x = store.get(dimIdx0, i); 
 | 
              // NOTE: Make sure the second parameter is null to use default strategy. 
 | 
              point = coordSys.dataToPoint(x, null, tmpOut); 
 | 
            } else { 
 | 
              tmpIn[0] = store.get(dimIdx0, i); 
 | 
              tmpIn[1] = store.get(dimIdx1, i); 
 | 
              // Let coordinate system to handle the NaN data. 
 | 
              point = coordSys.dataToPoint(tmpIn, null, tmpOut); 
 | 
            } 
 | 
            if (useTypedArray) { 
 | 
              points[offset++] = point[0]; 
 | 
              points[offset++] = point[1]; 
 | 
            } else { 
 | 
              data.setItemLayout(i, point.slice()); 
 | 
            } 
 | 
          } 
 | 
          useTypedArray && data.setLayout('points', points); 
 | 
        } 
 | 
      }; 
 | 
    } 
 | 
  }; 
 | 
} 
 | 
; 
 |