/**
 * 适配 canvas 2d 上下文
 * @param ctx canvas 2d 上下文
 * @returns
 */
export function canvas2dAdapter(
  ctx: CanvasRenderingContext2D,
): UniApp.CanvasContext {
  return Object.assign(ctx, {
    setFillStyle(color: string | CanvasGradient) {
      ctx.fillStyle = color;
    },
    setStrokeStyle(color: string | CanvasGradient | CanvasPattern) {
      ctx.strokeStyle = color;
    },
    setLineWidth(lineWidth: number) {
      ctx.lineWidth = lineWidth;
    },
    setLineCap(lineCap: "butt" | "round" | "square") {
      ctx.lineCap = lineCap;
    },

    setFontSize(font: string) {
      ctx.font = font;
    },
    setGlobalAlpha(alpha: number) {
      ctx.globalAlpha = alpha;
    },
    setLineJoin(lineJoin: "bevel" | "round" | "miter") {
      ctx.lineJoin = lineJoin;
    },
    setTextAlign(align: "left" | "center" | "right") {
      ctx.textAlign = align;
    },
    setMiterLimit(miterLimit: number) {
      ctx.miterLimit = miterLimit;
    },
    setShadow(offsetX: number, offsetY: number, blur: number, color: string) {
      ctx.shadowOffsetX = offsetX;
      ctx.shadowOffsetY = offsetY;
      ctx.shadowBlur = blur;
      ctx.shadowColor = color;
    },
    setTextBaseline(textBaseline: "top" | "bottom" | "middle") {
      ctx.textBaseline = textBaseline;
    },
    createCircularGradient() {},
    draw() {},
    addColorStop() {},
  }) as unknown as UniApp.CanvasContext;
}
