62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| var Path = require("../Path");
 | |
| 
 | |
| var roundRectHelper = require("../helper/roundRect");
 | |
| 
 | |
| var _subPixelOptimize = require("../helper/subPixelOptimize");
 | |
| 
 | |
| var subPixelOptimizeRect = _subPixelOptimize.subPixelOptimizeRect;
 | |
| 
 | |
| /**
 | |
|  * 矩形
 | |
|  * @module zrender/graphic/shape/Rect
 | |
|  */
 | |
| // Avoid create repeatly.
 | |
| var subPixelOptimizeOutputShape = {};
 | |
| 
 | |
| var _default = Path.extend({
 | |
|   type: 'rect',
 | |
|   shape: {
 | |
|     // 左上、右上、右下、左下角的半径依次为r1、r2、r3、r4
 | |
|     // r缩写为1         相当于 [1, 1, 1, 1]
 | |
|     // r缩写为[1]       相当于 [1, 1, 1, 1]
 | |
|     // r缩写为[1, 2]    相当于 [1, 2, 1, 2]
 | |
|     // r缩写为[1, 2, 3] 相当于 [1, 2, 3, 2]
 | |
|     r: 0,
 | |
|     x: 0,
 | |
|     y: 0,
 | |
|     width: 0,
 | |
|     height: 0
 | |
|   },
 | |
|   buildPath: function (ctx, shape) {
 | |
|     var x;
 | |
|     var y;
 | |
|     var width;
 | |
|     var height;
 | |
| 
 | |
|     if (this.subPixelOptimize) {
 | |
|       subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);
 | |
|       x = subPixelOptimizeOutputShape.x;
 | |
|       y = subPixelOptimizeOutputShape.y;
 | |
|       width = subPixelOptimizeOutputShape.width;
 | |
|       height = subPixelOptimizeOutputShape.height;
 | |
|       subPixelOptimizeOutputShape.r = shape.r;
 | |
|       shape = subPixelOptimizeOutputShape;
 | |
|     } else {
 | |
|       x = shape.x;
 | |
|       y = shape.y;
 | |
|       width = shape.width;
 | |
|       height = shape.height;
 | |
|     }
 | |
| 
 | |
|     if (!shape.r) {
 | |
|       ctx.rect(x, y, width, height);
 | |
|     } else {
 | |
|       roundRectHelper.buildPath(ctx, shape);
 | |
|     }
 | |
| 
 | |
|     ctx.closePath();
 | |
|     return;
 | |
|   }
 | |
| });
 | |
| 
 | |
| module.exports = _default; |