zxing-wasm
Version:
ZXing-C++ WebAssembly as an ES/CJS module with types
153 lines (152 loc) • 5.51 kB
TypeScript
import { type WriteInputBarcodeFormat } from "./barcodeFormat.js";
import type { EcLevel } from "./ecLevel.js";
/**
* @internal
*/
export interface ZXingWriterOptions {
/**
* @internal
*/
format: string;
/**
* Comma separated list of symbology specific options and flags.
*
* @internal
*/
options: string;
/**
* Scale factor for rendering, i.e. the module size.
* Passing a negative value will choose the scale automatically
* to fit the size of the barcode to abs(scale) as close as possible.
*
* @defaultValue `1`
*/
scale: number;
/**
* Rotate the barcode by given degrees (0, 90, 180, 270).
*
* @defaultValue `0`
*/
rotate: number;
/**
* Invert the colors of the barcode.
*
* @defaultValue `false`
*/
invert: boolean;
/**
* Add human readable text (HRI) to the barcode.
*
* @defaultValue `false`
*/
addHRT: boolean;
/**
* Add quiet zones around the barcode.
*
* @defaultValue `true`
*/
addQuietZones: boolean;
}
/**
* Writer options for writing barcodes.
*/
export interface WriterOptions extends Partial<Omit<ZXingWriterOptions, "format">> {
/**
* The format of the barcode to write.
*
* Accepted values are derived from `barcodeFormat.ts` (`BCF`) and include:
* - canonical format names,
* - human-readable labels from the table,
* - backward-compatible aliases (e.g. `"rMQRCode"`).
*
* @remarks
* - Values are normalized by {@link encodeFormat | `encodeFormat`} before being sent to C++.
* - The concrete writable set is zint-aware in this package build (`w` flag or non-zero `zint` id).
*
* @defaultValue `"QRCode"`
*/
format?: WriteInputBarcodeFormat;
/**
* Comma separated list of symbology specific options and flags.
*
* This string is parsed by the underlying C++ library to extract named parameters.
* For boolean flags, include the name (e.g., `"gs1"`).
* For options with values, use a `key=value` format (e.g., `"version=5"`).
* Multiple options can be combined, separated by commas (e.g., `"gs1,version=2"`).
*
* Known keys used by `CreatorOptions` in the C++ backend:
* - `eci`: (string/integer) Specifies ECI designator.
* - `gs1`: (boolean) Enables GS1 encoding.
* - `readerInit`: (boolean) Sets reader-initialization / programming mode.
* - `stacked`: (boolean) Generates a stacked version for DataBar / DataBarExpanded.
* - `forceSquare`: (boolean) Only consider square symbol versions.
* Supported only for the `DataMatrix` format.
* - `columns`: (integer) Specifies number of columns (e.g., PDF417 / DataBarExpanded stacked).
* - `rows`: (integer) Specifies number of rows (e.g., PDF417 / DataBarExpanded stacked).
* - `version`: (integer) Specifies the version / size of most 2D symbols.
* - `dataMask`: (integer) Specifies the data mask pattern for QRCode / MicroQRCode.
* - `ecLevel`: (string) Error correction level / percentage where supported (e.g. `L`, `M`, `Q`, `H`, `30%`).
*
* @remarks This field is forwarded directly to ZXing C++ `CreatorOptions` for parsing.
* @defaultValue `""`
*/
options?: string;
/**
* A size hint to determine the scale of the barcode. `0` means unset.
*
* This only takes effect if `scale` is unset.
*
* @defaultValue `0`
* @deprecated This option is translated to `scale = -abs(sizeHint)` when `scale` is not provided. Use `scale` directly.
*/
sizeHint?: number;
/**
* Set if this is the reader initialisation / programming symbol.
*
* @see {@link ReadResult.readerInit | `ReadResult.readerInit`}
* @defaultValue `false`
* @deprecated This option will be translated into `options="readerInit"` and may be removed in the next major version. Use `options` instead.
*/
readerInit?: boolean;
/**
* Force the Data Matrix to be square.
*
* @defaultValue `false`
* @deprecated This option is translated into `options="forceSquare"`. Use `options` instead.
*/
forceSquareDataMatrix?: boolean;
/**
* The error correction level of the symbol (empty string if not applicable)
*
* @see {@link ReadResult.ecLevel | `ReadResult.ecLevel`}
* @defaultValue `""`
* @deprecated This option will be translated into `options="ecLevel=<value>"` and may be removed in the next major version. Use `options` instead.
*/
ecLevel?: EcLevel;
/**
* Legacy alias of {@link WriterOptions.addHRT | `addHRT`}.
*
* Only used when `addHRT` is not provided.
*
* @defaultValue `false`
* @deprecated Use `addHRT` instead.
*/
withHRT?: boolean;
/**
* Legacy alias of {@link WriterOptions.addQuietZones | `addQuietZones`}.
*
* Only used when `addQuietZones` is not provided.
*
* @defaultValue `true`
* @deprecated Use `addQuietZones` instead.
*/
withQuietZones?: boolean;
}
export declare const defaultWriterOptions: Required<WriterOptions>;
/**
* Converts WriterOptions to ZXingWriterOptions format.
*
* @param writerOptions - Optional writer options to be converted
* @returns A ZXingWriterOptions object with the encoded format
*/
export declare function writerOptionsToZXingWriterOptions(writerOptions?: WriterOptions): ZXingWriterOptions;