UNPKG

laya-coreui-es

Version:

laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改

339 lines (338 loc) 13.2 kB
import { Sprite } from "../display/Sprite"; import { ColorFilter } from "../filters/ColorFilter"; import { Matrix } from "../maths/Matrix"; import { Point } from "../maths/Point"; import { Rectangle } from "../maths/Rectangle"; import { HTMLChar } from "../utils/HTMLChar"; import { WordText } from "../utils/WordText"; import { SaveMark } from "../webgl/canvas/save/SaveMark"; import { Shader2D } from "../webgl/shader/d2/Shader2D"; import { Value2D } from "../webgl/shader/d2/value/Value2D"; import { Shader } from "../webgl/shader/Shader"; import { ISubmit } from "../webgl/submit/ISubmit"; import { SubmitBase } from "../webgl/submit/SubmitBase"; import { SubmitKey } from "../webgl/submit/SubmitKey"; import { CharSubmitCache } from "../webgl/text/CharSubmitCache"; import { TextRender } from "../webgl/text/TextRender"; import { IndexBuffer2D } from "../webgl/utils/IndexBuffer2D"; import { MeshQuadTexture } from "../webgl/utils/MeshQuadTexture"; import { MeshTexture } from "../webgl/utils/MeshTexture"; import { MeshVG } from "../webgl/utils/MeshVG"; import { VertexBuffer2D } from "../webgl/utils/VertexBuffer2D"; import { HTMLCanvas } from "./HTMLCanvas"; import { RenderTexture2D } from "./RenderTexture2D"; import { Texture } from "./Texture"; /** * @private * Context扩展类 */ export declare class Context { static ENUM_TEXTALIGN_DEFAULT: number; static ENUM_TEXTALIGN_CENTER: number; static ENUM_TEXTALIGN_RIGHT: number; static _SUBMITVBSIZE: number; static _MAXSIZE: number; private static _MAXVERTNUM; static MAXCLIPRECT: Rectangle; static _COUNT: number; private static SEGNUM; private static _contextcount; private _drawTexToDrawTri_Vert; private _drawTexToDrawTri_Index; private _tempUV; private _drawTriUseAbsMatrix; static __init__(): void; /**@private */ drawImage(...args: any[]): void; /**@private */ getImageData(...args: any[]): any; /**@private */ measureText(text: string): any; /**@private */ setTransform(...args: any[]): void; /**@private */ $transform(a: number, b: number, c: number, d: number, tx: number, ty: number): void; /**@private */ get lineJoin(): string; /**@private */ set lineJoin(value: string); /**@private */ get lineCap(): string; /**@private */ set lineCap(value: string); /**@private */ get miterLimit(): string; /**@private */ set miterLimit(value: string); /**@private */ clearRect(x: number, y: number, width: number, height: number): void; /**@private */ /**@private */ drawTexture2(x: number, y: number, pivotX: number, pivotY: number, m: Matrix, args2: any[]): void; transformByMatrix(matrix: Matrix, tx: number, ty: number): void; saveTransform(matrix: Matrix): void; restoreTransform(matrix: Matrix): void; drawRect(x: number, y: number, width: number, height: number, fillColor: any, lineColor: any, lineWidth: number): void; alpha(value: number): void; drawCurves(x: number, y: number, points: any[], lineColor: any, lineWidth: number): void; private _fillAndStroke; /**Math.PI*2的结果缓存 */ static PI2: number; static set2DRenderConfig(): void; private _other; private _renderNextSubmitIndex; private _path; private _width; private _height; private _renderCount; meshlist: any[]; private _transedPoints; private _temp4Points; private _clipID_Gen; private _lastMat_a; private _lastMat_b; private _lastMat_c; private _lastMat_d; /** * 所cacheAs精灵 * 对于cacheas bitmap的情况,如果图片还没准备好,需要有机会重画,所以要保存sprite。例如在图片 * 加载完成后,调用repaint */ sprite: Sprite | null; private _fillColor; private _flushCnt; private defTexture; drawTexAlign: boolean; isMain: boolean; constructor(); clearBG(r: number, g: number, b: number, a: number): void; /** * 释放占用内存 * @param keepRT 是否保留rendertarget */ private _releaseMem; /** * 释放所有资源 * @param keepRT 是否保留rendertarget */ destroy(keepRT?: boolean): void; clear(): void; /** * 设置ctx的size,这个不允许直接设置,必须是canvas调过来的。所以这个函数里也不用考虑canvas相关的东西 * @param w * @param h */ size(w: number, h: number): void; /** * 当前canvas请求保存渲染结果。 * 实现: * 如果value==true,就要给_target赋值 * @param value {Boolean} */ set asBitmap(value: boolean); /** * 获得当前矩阵的缩放值 * 避免每次都计算getScaleX * @return */ getMatScaleX(): number; getMatScaleY(): number; setFillColor(color: number): void; getFillColor(): number; set fillStyle(value: any); get fillStyle(): any; set globalAlpha(value: number); get globalAlpha(): number; set textAlign(value: string); get textAlign(): string; set textBaseline(value: string); get textBaseline(): string; set globalCompositeOperation(value: string); get globalCompositeOperation(): string; set strokeStyle(value: any); get strokeStyle(): any; translate(x: number, y: number): void; set lineWidth(value: number); get lineWidth(): number; save(): void; restore(): void; set font(str: string); fillText(txt: string | WordText, x: number, y: number, fontStr: string, color: string, align: string, lineWidth?: number, borderColor?: string): void; drawText(text: string | WordText, x: number, y: number, font: string, color: string, textAlign: string): void; fillWords(words: HTMLChar[], x: number, y: number, fontStr: string, color: string): void; strokeWord(text: string | WordText, x: number, y: number, font: string, color: string, lineWidth: number, textAlign: string): void; fillBorderText(txt: string | WordText, x: number, y: number, font: string, color: string, borderColor: string, lineWidth: number, textAlign: string): void; fillBorderWords(words: HTMLChar[], x: number, y: number, font: string, color: string, borderColor: string, lineWidth: number): void; private _fillRect; fillRect(x: number, y: number, width: number, height: number, fillStyle: any): void; fillTexture(texture: Texture, x: number, y: number, width: number, height: number, type: string, offset: Point, other: any): void; /** * 反正只支持一种filter,就不要叫setFilter了,直接叫setColorFilter * @param value */ setColorFilter(filter: ColorFilter): void; drawTexture(tex: Texture, x: number, y: number, width: number, height: number): void; drawTextures(tex: Texture, pos: any[], tx: number, ty: number): void; /** * 为drawTexture添加一个新的submit。类型是 SubmitTexture * @param vbSize * @param alpha * @param webGLImg * @param tex */ private _drawTextureAddSubmit; submitDebugger(): void; private isSameClipInfo; drawCallOptimize(enable: boolean): boolean; /** * 转换4个顶点。为了效率这个不做任何检查。需要调用者的配合。 * @param a 输入。8个元素表示4个点 * @param out 输出 */ transform4Points(a: any[], m: Matrix, out: any[]): void; /** * pt所描述的多边形完全在clip外边,整个被裁掉了 * @param pt * @return */ clipedOff(pt: any[]): boolean; /** * 应用当前矩阵。把转换后的位置放到输出数组中。 * @param x * @param y * @param w * @param h * @param italicDeg 倾斜角度,单位是度。0度无,目前是下面不动。以后要做成可调的 */ transformQuad(x: number, y: number, w: number, h: number, italicDeg: number, m: Matrix, out: any[]): void; pushRT(): void; popRT(): void; useRT(rt: RenderTexture2D): void; /** * 异步执行rt的restore函数 * @param rt */ RTRestore(rt: RenderTexture2D): void; /** * 强制拒绝submit合并 * 例如切换rt的时候 */ breakNextMerge(): void; private _repaintSprite; /** * * @param tex * @param x * @param y * @param width * @param height * @param transform 图片本身希望的矩阵 * @param tx 节点的位置 * @param ty * @param alpha */ drawTextureWithTransform(tex: Texture, x: number, y: number, width: number, height: number, transform: Matrix | null, tx: number, ty: number, alpha: number, blendMode: string | null, colorfilter?: ColorFilter | null, uv?: number[]): void; /** * * 把ctx中的submits提交。结果渲染到target上 * @param ctx * @param target */ private _flushToTarget; drawCanvas(canvas: HTMLCanvas, x: number, y: number, width: number, height: number): void; drawTarget(rt: RenderTexture2D, x: number, y: number, width: number, height: number, m: Matrix, shaderValue: Value2D, uv?: ArrayLike<number> | null, blend?: number): boolean; drawTriangles(tex: Texture, x: number, y: number, vertices: Float32Array, uvs: Float32Array, indices: Uint16Array, matrix: Matrix, alpha: number, color: ColorFilter, blendMode: string, colorNum?: number): void; transform(a: number, b: number, c: number, d: number, tx: number, ty: number): void; setTransformByMatrix(value: Matrix): void; rotate(angle: number): void; scale(scaleX: number, scaleY: number): void; clipRect(x: number, y: number, width: number, height: number): void; /** * 从setIBVB改为drawMesh * type 参数不知道是干什么的,先删掉。offset好像跟attribute有关,删掉 * @param x * @param y * @param ib * @param vb * @param numElement * @param mat * @param shader * @param shaderValues * @param startIndex * @param offset */ drawMesh(x: number, y: number, ib: IndexBuffer2D, vb: VertexBuffer2D, numElement: number, mat: Matrix, shader: Shader, shaderValues: Value2D, startIndex?: number): void; addRenderObject(o: ISubmit): void; /** * * @param start * @param end */ submitElement(start: number, end: number): number; flush(): number; /*******************************************start矢量绘制***************************************************/ beginPath(convex?: boolean): void; closePath(): void; /** * 添加一个path。 * @param points [x,y,x,y....] 这个会被保存下来,所以调用者需要注意复制。 * @param close 是否闭合 * @param convex 是否是凸多边形。convex的优先级是这个最大。fill的时候的次之。其实fill的时候不应该指定convex,因为可以多个path * @param dx 需要添加的平移。这个需要在应用矩阵之前应用。 * @param dy */ addPath(points: any[], close: boolean, convex: boolean, dx: number, dy: number): void; fill(): void; private addVGSubmit; stroke(): void; moveTo(x: number, y: number): void; /** * * @param x * @param y * @param b 是否应用矩阵 */ lineTo(x: number, y: number): void; arcTo(x1: number, y1: number, x2: number, y2: number, r: number): void; arc(cx: number, cy: number, r: number, startAngle: number, endAngle: number, counterclockwise?: boolean, b?: boolean): void; quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; /** * 把颜色跟当前设置的alpha混合 * @return */ mixRGBandAlpha(color: number): number; strokeRect(x: number, y: number, width: number, height: number, parameterLineWidth: number): void; clip(): void; /*******************************************end矢量绘制***************************************************/ drawParticle(x: number, y: number, pt: any): void; private _getPath; /**获取canvas*/ get canvas(): HTMLCanvas; private static tmpuv1; /** * 专用函数。通过循环创建来水平填充 * @param tex * @param bmpid * @param uv 希望循环的部分的uv * @param oriw * @param orih * @param x * @param y * @param w */ private _fillTexture_h; /** * 专用函数。通过循环创建来垂直填充 * @param tex * @param imgid * @param uv * @param oriw * @param orih * @param x * @param y * @param h */ private _fillTexture_v; private static tmpUV; private static tmpUVRect; drawTextureWithSizeGrid(tex: Texture, tx: number, ty: number, width: number, height: number, sizeGrid: any[], gx: number, gy: number): void; }