| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 
							- var round = Math.round;
 
- export function subPixelOptimizeLine(outputShape, inputShape, style) {
 
-     if (!inputShape) {
 
-         return;
 
-     }
 
-     var x1 = inputShape.x1;
 
-     var x2 = inputShape.x2;
 
-     var y1 = inputShape.y1;
 
-     var y2 = inputShape.y2;
 
-     outputShape.x1 = x1;
 
-     outputShape.x2 = x2;
 
-     outputShape.y1 = y1;
 
-     outputShape.y2 = y2;
 
-     var lineWidth = style && style.lineWidth;
 
-     if (!lineWidth) {
 
-         return outputShape;
 
-     }
 
-     if (round(x1 * 2) === round(x2 * 2)) {
 
-         outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);
 
-     }
 
-     if (round(y1 * 2) === round(y2 * 2)) {
 
-         outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);
 
-     }
 
-     return outputShape;
 
- }
 
- export function subPixelOptimizeRect(outputShape, inputShape, style) {
 
-     if (!inputShape) {
 
-         return;
 
-     }
 
-     var originX = inputShape.x;
 
-     var originY = inputShape.y;
 
-     var originWidth = inputShape.width;
 
-     var originHeight = inputShape.height;
 
-     outputShape.x = originX;
 
-     outputShape.y = originY;
 
-     outputShape.width = originWidth;
 
-     outputShape.height = originHeight;
 
-     var lineWidth = style && style.lineWidth;
 
-     if (!lineWidth) {
 
-         return outputShape;
 
-     }
 
-     outputShape.x = subPixelOptimize(originX, lineWidth, true);
 
-     outputShape.y = subPixelOptimize(originY, lineWidth, true);
 
-     outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);
 
-     outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);
 
-     return outputShape;
 
- }
 
- export function subPixelOptimize(position, lineWidth, positiveOrNegative) {
 
-     if (!lineWidth) {
 
-         return position;
 
-     }
 
-     var doubledPosition = round(position * 2);
 
-     return (doubledPosition + round(lineWidth)) % 2 === 0
 
-         ? doubledPosition / 2
 
-         : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;
 
- }
 
 
  |