Files
@ 90792e984249
Branch filter:
Location: light9/web/drawing.ts - annotation
90792e984249
1.7 KiB
video/MP2T
isolate import warnings to one file
4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 4556eebe5d73 |
export function svgPathFromPoints(pts: { forEach: (arg0: (p: any) => void) => void }) {
let out = "";
pts.forEach(function (p: Number[] | { elements: Number[] }) {
let x, y;
if ((p as any).elements) {
// for vec2
[x, y] = (p as any).elements;
} else {
[x, y] = p as Number[];
}
if (out.length === 0) {
out = "M ";
} else {
out += "L ";
}
out += "" + x + "," + y + " ";
});
return out;
};
export function line(
ctx: { moveTo: (arg0: any, arg1: any) => void; lineTo: (arg0: any, arg1: any) => any },
p1: { e: (arg0: number) => any },
p2: { e: (arg0: number) => any }
) {
ctx.moveTo(p1.e(1), p1.e(2));
return ctx.lineTo(p2.e(1), p2.e(2));
};
// http://stackoverflow.com/a/4959890
export function roundRect(
ctx: {
beginPath: () => void;
moveTo: (arg0: any, arg1: any) => void;
lineTo: (arg0: number, arg1: number) => void;
arc: (arg0: number, arg1: number, arg2: any, arg3: number, arg4: number, arg5: boolean) => void;
closePath: () => any;
},
sx: number,
sy: number,
ex: number,
ey: number,
r: number
) {
const d2r = Math.PI / 180;
if (ex - sx - 2 * r < 0) {
r = (ex - sx) / 2;
} // ensure that the radius isn't too large for x
if (ey - sy - 2 * r < 0) {
r = (ey - sy) / 2;
} // ensure that the radius isn't too large for y
ctx.beginPath();
ctx.moveTo(sx + r, sy);
ctx.lineTo(ex - r, sy);
ctx.arc(ex - r, sy + r, r, d2r * 270, d2r * 360, false);
ctx.lineTo(ex, ey - r);
ctx.arc(ex - r, ey - r, r, d2r * 0, d2r * 90, false);
ctx.lineTo(sx + r, ey);
ctx.arc(sx + r, ey - r, r, d2r * 90, d2r * 180, false);
ctx.lineTo(sx, sy + r);
ctx.arc(sx + r, sy + r, r, d2r * 180, d2r * 270, false);
return ctx.closePath();
};
|