console
CanvasRenderingContext2D.prototype.drawRoundRectPath = function (x, y, width, height, radius) {
this.save();
this.beginPath();
let min = Math.min(width,height);
if(radius>min/2){
radius = min/2;
}
let points = [
[x+radius,y],
[x+width-radius,y],
[x+width,y+radius],
[x+width,y+height-radius],
[x+width-radius,y+height],
[x+radius,y+height],
[x,y+height-radius],
[x,y+radius]
]
this.moveTo(...points[0]);
this.lineTo(...points[1]);
this.arcTo(x+width,y,...points[3],radius);
this.lineTo(...points[3]);
this.arcTo(x+width,y+height,...points[5],radius);
this.lineTo(...points[5]);
this.arcTo(x,y+height,...points[7],radius);
this.lineTo(...points[7]);
this.arcTo(x,y,...points[1],radius);
this.lineJoin='round'
this.stroke();
this.closePath();
this.restore();
}
let canvas = document.createElement('canvas');
canvas.height = 500;
canvas.width = 500;
canvas.style.backgroundColor = 'white'
document.body.appendChild(canvas);
ctx = canvas.getContext('2d');
console.log(ctx);
ctx.drawRoundRectPath(20, 20, 200, 100, 20);
<html>
<body>
</body>
</html>