e-virt-table
Version:
A powerful data table based on canvas. You can use it as data grid、Microsoft Excel or Google sheets. It supports virtual scroll、cell edit etc.
105 lines (104 loc) • 3.29 kB
TypeScript
import { Align, LineClampType, VerticalAlign } from './types';
export type LineOptions = {
lineCap?: CanvasLineCap;
lineDash?: number[];
lineDashOffset?: number;
lineJoin?: CanvasLineJoin;
borderWidth?: number;
borderColor?: string | CanvasGradient | CanvasPattern;
fillColor?: string | CanvasGradient | CanvasPattern;
};
export type ShodowOptions = {
side: 'left' | 'right' | 'top' | 'bottom';
shadowWidth: number;
colorStart: string;
colorEnd: string;
fillColor?: string | CanvasGradient | CanvasPattern;
};
export type RectOptions = {
borderWidth?: number;
borderColor?: string;
fillColor?: string;
radius?: number | [number, number, number, number];
};
export type DrawTextOptions = {
font?: string;
color?: string;
align?: Align;
padding?: number;
verticalAlign?: VerticalAlign;
autoRowHeight?: boolean;
lineHeight?: number;
maxLineClamp?: LineClampType;
offsetLeft?: number;
offsetRight?: number;
textCallback?: (textInfo: TextInfo) => void;
cacheTextKey?: string;
};
export type TextInfo = {
x: number;
y: number;
width: number;
height: number;
left: number;
right: number;
top: number;
bottom: number;
};
export declare class Paint {
private ctx;
private textCacheMap;
constructor(target: HTMLCanvasElement);
clearTextCache(): void;
scale(dpr: number): void;
save(): void;
restore(): void;
translate(x: number, y: number): void;
setCursor(cursor?: string): void;
clear(x?: number, y?: number, width?: number, height?: number): void;
/**
* 在 Canvas 上绘制单侧阴影
* @param {number} x - 矩形的 x 坐标
* @param {number} y - 矩形的 y 坐标
* @param {number} width - 矩形的宽度
* @param {number} height - 矩形的高度
* @param {string} side - 阴影的位置('left', 'right', 'top', 'bottom')
* @param {number} shadowWidth - 阴影的宽度
* @param {string} color - 阴影的颜色
*/
drawShadow(x: number, y: number, width: number, height: number, options: ShodowOptions): void;
drawLine(points: number[], options: LineOptions): void;
drawImage(img: CanvasImageSource, x: number, y: number, width: number, height: number): void;
drawRect(x: number, y: number, width: number, height: number, { borderWidth, borderColor, fillColor, radius }?: RectOptions): void;
/**
* 画文本
* @param text
* @param x
* @param y
* @param width
* @param height
* @param options
* @returns 是否溢出
*/
drawText(text: string | undefined, x: number, y: number, width: number, height: number, options?: DrawTextOptions): boolean;
/**
* 将文本按宽度换行
* @param text
* @param maxWidth
* @returns
*/
private wrapText;
/**
* 计算文本自适应高度
* @param text
* @param width
* @param options
* @returns 计算出的高度
*/
calculateTextHeight(text: string | undefined, width: number, options?: DrawTextOptions): number;
handleEllipsis(text: string, width: number, padding?: number, font?: string): {
_text: string;
ellipsis: boolean;
};
}
export default Paint;