mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-14 01:37:26 +00:00
# Conflicts: # codecs/cpp.Dockerfile # codecs/imagequant/example.html # codecs/webp/dec/webp_dec.d.ts # codecs/webp/dec/webp_dec.js # codecs/webp/dec/webp_dec.wasm # codecs/webp/enc/webp_enc.d.ts # codecs/webp/enc/webp_enc.js # codecs/webp/enc/webp_enc.wasm # package-lock.json # package.json # src/codecs/tiny.webp # src_old/codecs/encoders.ts # src_old/codecs/processor-worker/tiny.avif # src_old/codecs/processor-worker/tiny.webp # src_old/codecs/tiny.webp # src_old/components/compress/index.tsx # src_old/lib/util.ts # src_old/sw/util.ts
76 lines
1.6 KiB
TypeScript
76 lines
1.6 KiB
TypeScript
type BrowserResizeMethods =
|
|
| 'browser-pixelated'
|
|
| 'browser-low'
|
|
| 'browser-medium'
|
|
| 'browser-high';
|
|
type WorkerResizeMethods =
|
|
| 'triangle'
|
|
| 'catrom'
|
|
| 'mitchell'
|
|
| 'lanczos3'
|
|
| 'hqx';
|
|
const workerResizeMethods: WorkerResizeMethods[] = [
|
|
'triangle',
|
|
'catrom',
|
|
'mitchell',
|
|
'lanczos3',
|
|
'hqx',
|
|
];
|
|
|
|
export type ResizeOptions =
|
|
| BrowserResizeOptions
|
|
| WorkerResizeOptions
|
|
| VectorResizeOptions;
|
|
|
|
export interface ResizeOptionsCommon {
|
|
width: number;
|
|
height: number;
|
|
fitMethod: 'stretch' | 'contain';
|
|
}
|
|
|
|
export interface BrowserResizeOptions extends ResizeOptionsCommon {
|
|
method: BrowserResizeMethods;
|
|
}
|
|
|
|
export interface WorkerResizeOptions extends ResizeOptionsCommon {
|
|
method: WorkerResizeMethods;
|
|
premultiply: boolean;
|
|
linearRGB: boolean;
|
|
}
|
|
|
|
export interface VectorResizeOptions extends ResizeOptionsCommon {
|
|
method: 'vector';
|
|
}
|
|
|
|
/**
|
|
* Return whether a set of options are worker resize options.
|
|
*
|
|
* @param opts
|
|
*/
|
|
export function isWorkerOptions(
|
|
opts: ResizeOptions,
|
|
): opts is WorkerResizeOptions {
|
|
return (workerResizeMethods as string[]).includes(opts.method);
|
|
}
|
|
|
|
/**
|
|
* Return whether a set of options are from the HQ<n>X set
|
|
*
|
|
* @param opts
|
|
*/
|
|
export function isHqx(opts: ResizeOptions): opts is WorkerResizeOptions {
|
|
return opts.method === 'hqx';
|
|
}
|
|
|
|
export const defaultOptions: ResizeOptions = {
|
|
// Width and height will always default to the image size.
|
|
// This is set elsewhere.
|
|
width: 1,
|
|
height: 1,
|
|
// This will be set to 'vector' if the input is SVG.
|
|
method: 'lanczos3',
|
|
fitMethod: 'stretch',
|
|
premultiply: true,
|
|
linearRGB: true,
|
|
};
|