feat: 完善graphics接口

This commit is contained in:
unanmed 2024-11-28 19:50:29 +08:00
parent cf3b41cc7c
commit 20faa0d4b9

View File

@ -25,6 +25,8 @@ interface IGraphicProperty extends ILineProperty {
fill: CanvasStyle;
/** 描边样式 */
stroke: CanvasStyle;
/** 填充算法 */
fillRule: CanvasFillRule;
}
export const enum GraphicMode {
@ -49,6 +51,7 @@ export abstract class GraphicItemBase
lineJoin: CanvasLineJoin = 'bevel';
lineCap: CanvasLineCap = 'butt';
miterLimit: number = 10;
fillRule: CanvasFillRule = 'nonzero';
/**
*
@ -101,11 +104,28 @@ export class Rect extends GraphicItemBase {
}
export class Circle extends GraphicItemBase {
radius: number = 10;
start: number = 0;
end: number = Math.PI * 2;
protected render(
canvas: MotaOffscreenCanvas2D,
transform: Transform
): void {}
/**
*
* @param radius
*/
setRadius(radius: number) {}
/**
*
* @param start
* @param end
*/
setAngle(start: number, end: number) {}
patchProp(
key: string,
prevValue: any,
@ -120,11 +140,30 @@ export class Circle extends GraphicItemBase {
}
export class Ellipse extends GraphicItemBase {
radiusX: number = 10;
radiusY: number = 10;
start: number = 0;
end: number = Math.PI * 2;
protected render(
canvas: MotaOffscreenCanvas2D,
transform: Transform
): void {}
/**
*
* @param x
* @param y
*/
setRadius(x: number, y: number) {}
/**
*
* @param start
* @param end
*/
setAngle(start: number, end: number) {}
patchProp(
key: string,
prevValue: any,
@ -139,11 +178,26 @@ export class Ellipse extends GraphicItemBase {
}
export class Line extends GraphicItemBase {
x1: number = 0;
y1: number = 0;
x2: number = 0;
y2: number = 0;
protected render(
canvas: MotaOffscreenCanvas2D,
transform: Transform
): void {}
/**
*
*/
setPoint1(x: number, y: number) {}
/**
*
*/
setPoint2(x: number, y: number) {}
patchProp(
key: string,
prevValue: any,
@ -158,11 +212,40 @@ export class Line extends GraphicItemBase {
}
export class BezierCurve extends GraphicItemBase {
sx: number = 0;
sy: number = 0;
cp1x: number = 0;
cp1y: number = 0;
cp2x: number = 0;
cp2y: number = 0;
ex: number = 0;
ey: number = 0;
protected render(
canvas: MotaOffscreenCanvas2D,
transform: Transform
): void {}
/**
*
*/
setStart(x: number, y: number) {}
/**
* 1
*/
setControl1(x: number, y: number) {}
/**
* 2
*/
setControl2(x: number, y: number) {}
/**
*
*/
setEnd(x: number, y: number) {}
patchProp(
key: string,
prevValue: any,
@ -177,11 +260,33 @@ export class BezierCurve extends GraphicItemBase {
}
export class QuadraticCurve extends GraphicItemBase {
sx: number = 0;
sy: number = 0;
cpx: number = 0;
cpy: number = 0;
ex: number = 0;
ey: number = 0;
protected render(
canvas: MotaOffscreenCanvas2D,
transform: Transform
): void {}
/**
*
*/
setStart(x: number, y: number) {}
/**
*
*/
setControl(x: number, y: number) {}
/**
*
*/
setEnd(x: number, y: number) {}
patchProp(
key: string,
prevValue: any,
@ -204,6 +309,19 @@ export class Path extends GraphicItemBase {
transform: Transform
): void {}
/**
*
*/
getPath() {
return this.path;
}
/**
*
* @param path
*/
addPath(path: Path2D) {}
patchProp(
key: string,
prevValue: any,