UNPKG

meui-js

Version:
323 lines (296 loc) 9.42 kB
/* * SPDX-FileCopyrightText: 2022 Yu Zhu <891085309@qq.com> * * SPDX-License-Identifier: MIT */ declare module "meui-native" { export interface MeuiKeyboardRawEvent { type: "keydown" | "keyup" keyCode: number key: string altKey: boolean ctrlKey: boolean shiftKey: boolean } export interface MeuiMouseRawEvent { type: "mousedown" | "mouseup" | "mousemove" x: number y: number button: number } export interface MeuiWheelRawEvent { type: "mousewheel" deltaX: number deltaY: number deltaZ: number button: number } export interface MeuiUnloadRawEvent { type: "unload" } export type MeuiRawEvent = | MeuiKeyboardRawEvent | MeuiMouseRawEvent | MeuiWheelRawEvent | MeuiUnloadRawEvent export class NativeMEUI { constructor(width: number, height: number) render(root: Box): void flush(): void update(): void debug(): void addFontFace(fontFamily: string, path: string): void getConnectNumber(): number pending(): number nextEvent(): MeuiRawEvent | null } export class Box { constructor(type: string) getStyle(state: UI_STATE): Record<string, any> setStyle(style: Record<string, any>, state: UI_STATE): void getChildCount(): number addChild(child: Box): void insertChild(child: Box, index: number): void removeChild(child: Box): void setState(state: UI_STATE): void getState(): UI_STATE hit(x: number, y: number): boolean search(x: number, y: number): number[] toClient(x: number, y: number): [number, number] toOffset(x: number, y: number): [number, number] textContent: string scrollLeft: number scrollTop: number scrollWidth: number scrollHeight: number clientWidth: number clientHeight: number } export const BOX_STATE: { DEFAULT: 0 FOCUS: 1 ACTIVE: 2 HOVER: 3 SELECT: 4 DISABLE: 5 CHECK: 6 } export type UI_STATE = typeof BOX_STATE[keyof typeof BOX_STATE] export class Path2D { constructor(path?: Path2D | string) arc( x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean ): void arcTo( x1: number, y1: number, x2: number, y2: number, radius: number ): void bezierCurveTo( cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number ): void closePath(): void ellipse( x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean ): void lineTo(x: number, y: number): void moveTo(x: number, y: number): void quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void rect(x: number, y: number, w: number, h: number): void addPath( path: Path2D, transform?: [number, number, number, number, number, number] ): void } export class CanvasGradient { constructor( type: "linear", x1: number, y1: number, x2: number, y2: number ) constructor( type: "radial", cx: number, cy: number, cr: number, fx: number, fy: number, fr: number ) addColorStop( offset: number, r: number, g: number, b: number, a: number ): void } /** The dimensions of a piece of text in the canvas, as created by the CanvasRenderingContext2D.measureText() method. */ export interface TextMetrics { /** Returns the measurement described below. */ readonly actualBoundingBoxAscent: number /** Returns the measurement described below. */ readonly actualBoundingBoxDescent: number /** Returns the measurement described below. */ readonly actualBoundingBoxLeft: number /** Returns the measurement described below. */ readonly actualBoundingBoxRight: number /** Returns the measurement described below. */ readonly fontBoundingBoxAscent: number /** Returns the measurement described below. */ readonly fontBoundingBoxDescent: number /** Returns the measurement described below. */ readonly width: number } export const Canvas: { restore(): void save(): void getImage( sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings ): ArrayBuffer putImage( buffer: ArrayBuffer, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number, width: number, height: number, format?: number ): void getWidth(): number setWidth(width: number): void getHeight(): number setHeight(height: number): void getFit(): boolean setFit(fit: boolean): void beginPath(): void closePath(): void fillText(text: string, x: number, y: number, maxWidth?: number): void strokeText(text: string, x: number, y: number, maxWidth?: number): void measureText(text: string): TextMetrics setFontSize(fontSize: number): void setFontFamily(fontFamily: string): void setDirection(dir: "inherit" | "ltr" | "rtl"): void // setFont(font: string): void setTextAlign( textAlign: "center" | "end" | "left" | "right" | "start" ): void setTextBaseline( textBaseline: | "alphabetic" | "bottom" | "hanging" | "ideographic" | "middle" | "top" ): void arc( x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean ): void arcTo( x1: number, y1: number, x2: number, y2: number, radius: number ): void bezierCurveTo( cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number ): void ellipse( x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean ): void lineTo(x: number, y: number): void moveTo(x: number, y: number): void quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void rect(x: number, y: number, w: number, h: number): void stroke(): void stroke(path: Path2D): void fill(fillRule?: "evenodd" | "nonzero"): void fill(path: Path2D, fillRule?: "evenodd" | "nonzero"): void clip(fillRule?: "evenodd" | "nonzero"): void clip(path: Path2D, fillRule?: "evenodd" | "nonzero"): void clearRect(x: number, y: number, w: number, h: number): void strokeRect(x: number, y: number, w: number, h: number): void fillRect(x: number, y: number, w: number, h: number): void setStrokeStyle(r: number, g: number, b: number, a: number): void setStrokeStyle(strokeStyle: CanvasGradient): void setFillStyle(r: number, g: number, b: number, a: number): void setFillStyle(strokeStyle: CanvasGradient): void setLineCap(lineCap: "butt" | "round" | "square"): void setLineJoin(lineJoin: "bevel" | "miter" | "round"): void setMiterLimit(miterLimit: number): void setLineWidth(lineWidth: number): void setLineDash(lineDashOffset: number, segments: number[]): void getTransform(): [number, number, number, number, number, number] resetTransform(): void rotate(angle: number): void scale(x: number, y: number): void setTransform( a: number, b: number, c: number, d: number, e: number, f: number ): void setTransform( transform?: [number, number, number, number, number, number] ): void setTransform(a?: any, b?: any, c?: any, d?: any, e?: any, f?: any): void transform( a: number, b: number, c: number, d: number, e: number, f: number ): void translate(x: number, y: number): void } }