Skip to content

Commit

Permalink
fix: Correct use of 'largest' option when decoding images
Browse files Browse the repository at this point in the history
  • Loading branch information
yegor-pelykh committed Apr 12, 2024
1 parent fc30ff1 commit 82ac6f3
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -388,14 +388,19 @@ export interface DecodeOptions {

export interface DecodeImageOptions extends DecodeOptions {
frameIndex?: number;
}

export interface DecodeImageLargestOptions extends DecodeOptions {
frameIndex?: number;
largest?: boolean;
}

export interface DecodeImageByMimeTypeOptions extends DecodeImageOptions {
export interface DecodeImageByMimeTypeOptions
extends DecodeImageLargestOptions {
mimeType: string;
}

export interface DecodeNamedImageOptions extends DecodeImageOptions {
export interface DecodeNamedImageOptions extends DecodeImageLargestOptions {
name: string;
}

Expand Down Expand Up @@ -685,7 +690,9 @@ export function findDecoderForData(data: TypedArray): Decoder | undefined {
* **WARNING:** Since this will check the image data against all known decoders,
* it is much slower than using an explicit decoder.
*/
export function decodeImage(opt: DecodeImageOptions): MemoryImage | undefined {
export function decodeImage(
opt: DecodeImageLargestOptions
): MemoryImage | undefined {
const decoder = findDecoderForData(opt.data);
if (decoder === undefined) {
return undefined;
Expand Down Expand Up @@ -971,9 +978,15 @@ export function encodeBmp(opt: EncodeOptions): Uint8Array {
/**
* Decode an ICO image.
*/
export function decodeIco(opt: DecodeImageOptions): MemoryImage | undefined {
export function decodeIco(
opt: DecodeImageLargestOptions
): MemoryImage | undefined {
const dataUint8 = new Uint8Array(opt.data);
return new IcoDecoder().decode({
const decoder = new IcoDecoder();
if (opt.largest === true) {
return decoder.decodeImageLargest(dataUint8);
}
return decoder.decode({
bytes: dataUint8,
frameIndex: opt.frameIndex,
});
Expand Down

0 comments on commit 82ac6f3

Please sign in to comment.