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