|   | 
| /* | 
| * 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); | 
|         } | 
|       }; | 
|     } | 
|   }; | 
| } | 
| ; |