You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
4 weeks ago
|
import { __extends } from "tslib";
|
||
|
import Path from '../Path.js';
|
||
|
var EllipseShape = (function () {
|
||
|
function EllipseShape() {
|
||
|
this.cx = 0;
|
||
|
this.cy = 0;
|
||
|
this.rx = 0;
|
||
|
this.ry = 0;
|
||
|
}
|
||
|
return EllipseShape;
|
||
|
}());
|
||
|
export { EllipseShape };
|
||
|
var Ellipse = (function (_super) {
|
||
|
__extends(Ellipse, _super);
|
||
|
function Ellipse(opts) {
|
||
|
return _super.call(this, opts) || this;
|
||
|
}
|
||
|
Ellipse.prototype.getDefaultShape = function () {
|
||
|
return new EllipseShape();
|
||
|
};
|
||
|
Ellipse.prototype.buildPath = function (ctx, shape) {
|
||
|
var k = 0.5522848;
|
||
|
var x = shape.cx;
|
||
|
var y = shape.cy;
|
||
|
var a = shape.rx;
|
||
|
var b = shape.ry;
|
||
|
var ox = a * k;
|
||
|
var oy = b * k;
|
||
|
ctx.moveTo(x - a, y);
|
||
|
ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);
|
||
|
ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);
|
||
|
ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);
|
||
|
ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);
|
||
|
ctx.closePath();
|
||
|
};
|
||
|
return Ellipse;
|
||
|
}(Path));
|
||
|
Ellipse.prototype.type = 'ellipse';
|
||
|
export default Ellipse;
|