|   | 
| /* | 
| * 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 * as graphic from '../../util/graphic.js'; | 
| import { round } from '../../util/number.js'; | 
| import { isFunction } from 'zrender/lib/core/util.js'; | 
| function createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) { | 
|   var rect = cartesian.getArea(); | 
|   var x = rect.x; | 
|   var y = rect.y; | 
|   var width = rect.width; | 
|   var height = rect.height; | 
|   var lineWidth = seriesModel.get(['lineStyle', 'width']) || 0; | 
|   // Expand the clip path a bit to avoid the border is clipped and looks thinner | 
|   x -= lineWidth / 2; | 
|   y -= lineWidth / 2; | 
|   width += lineWidth; | 
|   height += lineWidth; | 
|   // fix: https://github.com/apache/incubator-echarts/issues/11369 | 
|   width = Math.ceil(width); | 
|   if (x !== Math.floor(x)) { | 
|     x = Math.floor(x); | 
|     // if no extra 1px on `width`, it will still be clipped since `x` is floored | 
|     width++; | 
|   } | 
|   var clipPath = new graphic.Rect({ | 
|     shape: { | 
|       x: x, | 
|       y: y, | 
|       width: width, | 
|       height: height | 
|     } | 
|   }); | 
|   if (hasAnimation) { | 
|     var baseAxis = cartesian.getBaseAxis(); | 
|     var isHorizontal = baseAxis.isHorizontal(); | 
|     var isAxisInversed = baseAxis.inverse; | 
|     if (isHorizontal) { | 
|       if (isAxisInversed) { | 
|         clipPath.shape.x += width; | 
|       } | 
|       clipPath.shape.width = 0; | 
|     } else { | 
|       if (!isAxisInversed) { | 
|         clipPath.shape.y += height; | 
|       } | 
|       clipPath.shape.height = 0; | 
|     } | 
|     var duringCb = isFunction(during) ? function (percent) { | 
|       during(percent, clipPath); | 
|     } : null; | 
|     graphic.initProps(clipPath, { | 
|       shape: { | 
|         width: width, | 
|         height: height, | 
|         x: x, | 
|         y: y | 
|       } | 
|     }, seriesModel, null, done, duringCb); | 
|   } | 
|   return clipPath; | 
| } | 
| function createPolarClipPath(polar, hasAnimation, seriesModel) { | 
|   var sectorArea = polar.getArea(); | 
|   // Avoid float number rounding error for symbol on the edge of axis extent. | 
|   var r0 = round(sectorArea.r0, 1); | 
|   var r = round(sectorArea.r, 1); | 
|   var clipPath = new graphic.Sector({ | 
|     shape: { | 
|       cx: round(polar.cx, 1), | 
|       cy: round(polar.cy, 1), | 
|       r0: r0, | 
|       r: r, | 
|       startAngle: sectorArea.startAngle, | 
|       endAngle: sectorArea.endAngle, | 
|       clockwise: sectorArea.clockwise | 
|     } | 
|   }); | 
|   if (hasAnimation) { | 
|     var isRadial = polar.getBaseAxis().dim === 'angle'; | 
|     if (isRadial) { | 
|       clipPath.shape.endAngle = sectorArea.startAngle; | 
|     } else { | 
|       clipPath.shape.r = r0; | 
|     } | 
|     graphic.initProps(clipPath, { | 
|       shape: { | 
|         endAngle: sectorArea.endAngle, | 
|         r: r | 
|       } | 
|     }, seriesModel); | 
|   } | 
|   return clipPath; | 
| } | 
| function createClipPath(coordSys, hasAnimation, seriesModel, done, during) { | 
|   if (!coordSys) { | 
|     return null; | 
|   } else if (coordSys.type === 'polar') { | 
|     return createPolarClipPath(coordSys, hasAnimation, seriesModel); | 
|   } else if (coordSys.type === 'cartesian2d') { | 
|     return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during); | 
|   } | 
|   return null; | 
| } | 
| export { createGridClipPath, createPolarClipPath, createClipPath }; |