75 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| var Path = require("../Path");
 | |
| 
 | |
| var _subPixelOptimize = require("../helper/subPixelOptimize");
 | |
| 
 | |
| var subPixelOptimizeLine = _subPixelOptimize.subPixelOptimizeLine;
 | |
| 
 | |
| /**
 | |
|  * 直线
 | |
|  * @module zrender/graphic/shape/Line
 | |
|  */
 | |
| // Avoid create repeatly.
 | |
| var subPixelOptimizeOutputShape = {};
 | |
| 
 | |
| var _default = Path.extend({
 | |
|   type: 'line',
 | |
|   shape: {
 | |
|     // Start point
 | |
|     x1: 0,
 | |
|     y1: 0,
 | |
|     // End point
 | |
|     x2: 0,
 | |
|     y2: 0,
 | |
|     percent: 1
 | |
|   },
 | |
|   style: {
 | |
|     stroke: '#000',
 | |
|     fill: null
 | |
|   },
 | |
|   buildPath: function (ctx, shape) {
 | |
|     var x1;
 | |
|     var y1;
 | |
|     var x2;
 | |
|     var y2;
 | |
| 
 | |
|     if (this.subPixelOptimize) {
 | |
|       subPixelOptimizeLine(subPixelOptimizeOutputShape, shape, this.style);
 | |
|       x1 = subPixelOptimizeOutputShape.x1;
 | |
|       y1 = subPixelOptimizeOutputShape.y1;
 | |
|       x2 = subPixelOptimizeOutputShape.x2;
 | |
|       y2 = subPixelOptimizeOutputShape.y2;
 | |
|     } else {
 | |
|       x1 = shape.x1;
 | |
|       y1 = shape.y1;
 | |
|       x2 = shape.x2;
 | |
|       y2 = shape.y2;
 | |
|     }
 | |
| 
 | |
|     var percent = shape.percent;
 | |
| 
 | |
|     if (percent === 0) {
 | |
|       return;
 | |
|     }
 | |
| 
 | |
|     ctx.moveTo(x1, y1);
 | |
| 
 | |
|     if (percent < 1) {
 | |
|       x2 = x1 * (1 - percent) + x2 * percent;
 | |
|       y2 = y1 * (1 - percent) + y2 * percent;
 | |
|     }
 | |
| 
 | |
|     ctx.lineTo(x2, y2);
 | |
|   },
 | |
| 
 | |
|   /**
 | |
|    * Get point at percent
 | |
|    * @param  {number} percent
 | |
|    * @return {Array.<number>}
 | |
|    */
 | |
|   pointAt: function (p) {
 | |
|     var shape = this.shape;
 | |
|     return [shape.x1 * (1 - p) + shape.x2 * p, shape.y1 * (1 - p) + shape.y2 * p];
 | |
|   }
 | |
| });
 | |
| 
 | |
| module.exports = _default; |