laya-coreui-es
Version:
laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改
339 lines (338 loc) • 13.2 kB
TypeScript
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;
}