qrcode-generator-es
Version:
128 lines • 4.65 kB
TypeScript
//#region src/mode.d.ts
/** Describes how a segment's data bits are interpreted. Immutable. */
declare class Mode {
modeBits: number;
private numBitsCharCount;
constructor(modeBits: number, numBitsCharCount: [number, number, number]);
numCharCountBits(ver: number): number;
}
//#endregion
//#region src/segment.d.ts
type bit = number;
type byte$1 = number;
type int$1 = number;
declare class QrSegment {
readonly mode: Mode;
readonly numChars: int$1;
private readonly bitData;
static makeBytes(data: Readonly<Array<byte$1>>): QrSegment;
static makeNumeric(digits: string): QrSegment;
static makeAlphanumeric(text: string): QrSegment;
static makeSegments(text: string): Array<QrSegment>;
static makeEci(assignVal: int$1): QrSegment;
static isNumeric(text: string): boolean;
static isAlphanumeric(text: string): boolean;
constructor(mode: Mode, numChars: int$1, bitData: Array<bit>);
getData(): Array<bit>;
static getTotalBits(segs: Readonly<Array<QrSegment>>, version: int$1): number;
private static toUtf8ByteArray;
}
//#endregion
//#region src/ecc.d.ts
type EccValue = {
readonly ordinal: number;
readonly formatBits: number;
};
//#endregion
//#region src/qrcodegen.d.ts
type byte = number;
type int = number;
declare class QrCode {
readonly version: int;
readonly errorCorrectionLevel: EccValue;
static encodeText(text: string, ecl: EccValue): QrCode;
static encodeBinary(data: Readonly<Array<byte>>, ecl: EccValue): QrCode;
static encodeSegments(segs: Readonly<Array<QrSegment>>, ecl: EccValue, minVersion?: int, maxVersion?: int, mask?: int, boostEcl?: boolean): QrCode;
readonly size: int;
readonly mask: int;
private readonly modules;
private readonly isFunction;
constructor(version: int, errorCorrectionLevel: EccValue, dataCodewords: Readonly<Array<byte>>, msk: int);
getModule(x: int, y: int): boolean;
private drawFunctionPatterns;
private drawFormatBits;
private drawVersion;
private drawFinderPattern;
private drawAlignmentPattern;
private setFunctionModule;
private addEccAndInterleave;
private drawCodewords;
private applyMask;
private getPenaltyScore;
private getAlignmentPatternPositions;
private static getNumRawDataModules;
private static getNumDataCodewords;
private static reedSolomonComputeDivisor;
private static reedSolomonComputeRemainder;
private static reedSolomonMultiply;
private finderPenaltyCountPatterns;
private finderPenaltyTerminateAndCount;
private finderPenaltyAddHistory;
}
//#endregion
//#region src/index.d.ts
type ErrorCorrectionLevel = "L" | "M" | "Q" | "H";
type RenderFunction = (qrcode: QrCode, option: RequiredOption) => HTMLElement;
/** 图标配置 */
interface IconOption {
/** 图标大小 */
size?: number;
/** 图标地址 */
src: string;
image?: HTMLImageElement;
}
/** 二维码渲染的配置项 */
interface QRCodeRenderOption {
/** 生成的二维码大小 */
size?: number;
/** 二维码渲染的节点 */
el?: HTMLElement | null | string;
/** 二维码内容 */
text?: string | null;
/** 二维码纠错等级, L(默认)、M、Q、H */
level?: ErrorCorrectionLevel;
/** 渲染函数 */
renderFn: RenderFunction;
/** 二维码填充颜色 */
fill?: string;
/** 二维码背景色 */
background?: string;
/** 嵌入图片 */
icon?: IconOption;
}
type RequiredOption = Required<Omit<QRCodeRenderOption, "icon">> & Pick<QRCodeRenderOption, "icon">;
declare function createElement(el?: HTMLElement | null | string, tagName?: string, namespace?: string | null): HTMLElement;
/** 渲染二维码到表格 */
declare function renderToTable(qrcode: QrCode, option: RequiredOption): HTMLTableElement;
declare function renderToSvg(qrcode: QrCode, option: RequiredOption): HTMLElement;
declare function renderToCanvas(qr: QrCode, option: RequiredOption): HTMLCanvasElement;
declare function renderToImg(qrcode: QrCode, option: RequiredOption): HTMLImageElement;
/** 二维码渲染 */
declare class QRCodeRender {
option: RequiredOption;
private _defaultOption;
constructor(option: QRCodeRenderOption);
/** 渲染二维码 */
render(): HTMLElement;
/** 批量修改渲染配置 */
setOption(option: Partial<QRCodeRenderOption>): void;
/** 修改渲染配置项 */
set<K extends keyof QRCodeRenderOption>(key: K, value: QRCodeRenderOption[K]): void;
/** 添加数据并渲染二维码 */
addData(data: string): HTMLElement;
/** 重置二维码 */
resetData(data: string): HTMLElement;
destroy(): void;
}
//#endregion
export { QRCodeRender, QRCodeRenderOption, createElement, renderToCanvas, renderToImg, renderToSvg, renderToTable };