Skip to content

Commit 2645f57

Browse files
committed
Update exported types for image parsers.
1 parent 35e8ca9 commit 2645f57

File tree

16 files changed

+566
-32
lines changed

16 files changed

+566
-32
lines changed

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,6 @@ import { JpegParser } from './bitjs/image/parsers/jpeg.js'
136136
import { ExifTagNumber } from './bitjs/image/parsers/exif.js';
137137

138138
const parser = new JpegParser(someArrayBuffer);
139-
let exif;
140-
const parser = new JpegParser(ab);
141139
parser.onApp1Exif(evt => {
142140
console.log(evt.exifValueMap.get(ExifTagNumber.IMAGE_DESCRIPTION).stringValue);
143141
});

image/parsers/jpeg.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export const JpegParseEventType = {
3434
}
3535

3636
/** @enum {number} */
37-
const JpegSegmentType = {
37+
export const JpegSegmentType = {
3838
SOF0: 0xC0,
3939
SOF1: 0xC1,
4040
SOF2: 0xC2,
@@ -155,14 +155,14 @@ export class JpegDefineHuffmanTableEvent extends Event {
155155
}
156156

157157
/** @enum {number} */
158-
const JpegDctType = {
158+
export const JpegDctType = {
159159
BASELINE: 0,
160160
EXTENDED_SEQUENTIAL: 1,
161161
PROGRESSIVE: 2,
162162
};
163163

164164
/** @enum {number} */
165-
const JpegComponentType = {
165+
export const JpegComponentType = {
166166
Y: 1,
167167
CB: 2,
168168
CR: 3,

index.js

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,26 @@
66
* Copyright(c) 2020 Google Inc.
77
*/
88

9-
/**
10-
* @typedef {import('./codecs/codecs.js').ProbeStream} ProbeStream
11-
*/
12-
/**
13-
* @typedef {import('./codecs/codecs.js').ProbeFormat} ProbeFormat
14-
*/
15-
/**
16-
* @typedef {import('./codecs/codecs.js').ProbeInfo} ProbeInfo
17-
*/
9+
/** @typedef {import('./codecs/codecs.js').ProbeStream} ProbeStream */
10+
/** @typedef {import('./codecs/codecs.js').ProbeFormat} ProbeFormat */
11+
/** @typedef {import('./codecs/codecs.js').ProbeInfo} ProbeInfo */
12+
13+
/** @typedef {import('./image/parsers/gif.js').GifApplicationExtension} GifApplicationExtension */
14+
/** @typedef {import('./image/parsers/gif.js').GifColor} GifColor */
15+
/** @typedef {import('./image/parsers/gif.js').GifCommentExtension} GifCommentExtension */
16+
/** @typedef {import('./image/parsers/gif.js').GifGraphicControlExtension} GifGraphicControlExtension */
17+
/** @typedef {import('./image/parsers/gif.js').GifHeader} GifHeader */
18+
/** @typedef {import('./image/parsers/gif.js').GifLogicalScreen} GifLogicalScreen */
19+
/** @typedef {import('./image/parsers/gif.js').GifPlainTextExtension} GifPlainTextExtension */
20+
/** @typedef {import('./image/parsers/gif.js').GifTableBasedImage} GifTableBasedImage */
21+
22+
/** @typedef {import('./image/parsers/jpeg.js').JpegApp0Extension} JpegApp0Extension */
23+
/** @typedef {import('./image/parsers/jpeg.js').JpegApp0Marker} JpegApp0Marker */
24+
/** @typedef {import('./image/parsers/jpeg.js').JpegComponentDetail} JpegComponentDetail */
25+
/** @typedef {import('./image/parsers/jpeg.js').JpegDefineHuffmanTable} JpegDefineHuffmanTable */
26+
/** @typedef {import('./image/parsers/jpeg.js').JpegDefineQuantizationTable} JpegDefineQuantizationTable */
27+
/** @typedef {import('./image/parsers/jpeg.js').JpegStartOfFrame} JpegStartOfFrame */
28+
/** @typedef {import('./image/parsers/jpeg.js').JpegStartOfScan} JpegStartOfScan */
1829

1930
export {
2031
UnarchiveEvent, UnarchiveEventType, UnarchiveInfoEvent, UnarchiveErrorEvent,
@@ -26,6 +37,11 @@ export { findMimeType } from './file/sniffer.js';
2637
export { GifApplicationExtensionEvent, GifCommentExtensionEvent, GifGraphicControlExtensionEvent,
2738
GifHeaderEvent, GifLogicalScreenEvent, GifParseEventType, GifParser,
2839
GifPlainTextExtensionEvent, GifTableBasedImageEvent } from './image/parsers/gif.js';
40+
export { JpegApp0ExtensionEvent, JpegApp0MarkerEvent, JpegApp1ExifEvent, JpegComponentType,
41+
JpegDctType, JpegDefineHuffmanTableEvent, JpegDefineQuantizationTableEvent,
42+
JpegDensityUnits, JpegExtensionThumbnailFormat, JpegHuffmanTableType, JpegParseEventType,
43+
JpegParser, JpegSegmentType, JpegStartOfFrameEvent,
44+
JpegStartOfScanEvent } from './image/parsers/jpeg.js';
2945
export { convertWebPtoPNG, convertWebPtoJPG } from './image/webp-shim/webp-shim.js';
3046
export { BitBuffer } from './io/bitbuffer.js';
3147
export { BitStream } from './io/bitstream.js';

io/bytestream.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ export class ByteStream {
7373

7474
/**
7575
* Big-Endian is sometimes called Motorola-style.
76-
* @param {boolean=} The value to set. If not present, the stream is set to big-endian.
76+
* @param {boolean=} val The value to set. If not present, the stream is set to big-endian.
7777
*/
7878
setBigEndian(val = true) {
7979
this.littleEndian_ = !val;
8080
}
8181

8282
/**
8383
* Little-Endian is sometimes called Intel-style.
84-
* @param {boolean=} The value to set. If not present, the stream is set to little-endian.
84+
* @param {boolean=} val The value to set. If not present, the stream is set to little-endian.
8585
*/
8686
setLittleEndian(val = true) {
8787
this.littleEndian_ = val;

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"file",
2020
"codecs",
2121
"gif",
22+
"jpeg",
2223
"mp4",
2324
"avc",
2425
"webm",

types/image/parsers/exif.d.ts

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
/**
2+
* @param {ByteStream} stream
3+
* @param {ByteStream} lookAheadStream
4+
* @param {boolean} debug
5+
* @returns {ExifValue}
6+
*/
7+
export function getExifValue(stream: ByteStream, lookAheadStream: ByteStream, DEBUG?: boolean): ExifValue;
8+
export type ExifTagNumber = number;
9+
export namespace ExifTagNumber {
10+
const IMAGE_DESCRIPTION: number;
11+
const MAKE: number;
12+
const MODEL: number;
13+
const ORIENTATION: number;
14+
const X_RESOLUTION: number;
15+
const Y_RESOLUTION: number;
16+
const RESOLUTION_UNIT: number;
17+
const SOFTWARE: number;
18+
const DATE_TIME: number;
19+
const WHITE_POINT: number;
20+
const PRIMARY_CHROMATICITIES: number;
21+
const Y_CB_CR_COEFFICIENTS: number;
22+
const Y_CB_CR_POSITIONING: number;
23+
const REFERENCE_BLACK_WHITE: number;
24+
const COPYRIGHT: number;
25+
const EXIF_OFFSET: number;
26+
const EXPOSURE_TIME: number;
27+
const F_NUMBER: number;
28+
const EXPOSURE_PROGRAM: number;
29+
const ISO_SPEED_RATINGS: number;
30+
const EXIF_VERSION: number;
31+
const DATE_TIME_ORIGINAL: number;
32+
const DATE_TIME_DIGITIZED: number;
33+
const COMPONENT_CONFIGURATION: number;
34+
const COMPRESSED_BITS_PER_PIXEL: number;
35+
const SHUTTER_SPEED_VALUE: number;
36+
const APERTURE_VALUE: number;
37+
const BRIGHTNESS_VALUE: number;
38+
const EXPOSURE_BIAS_VALUE: number;
39+
const MAX_APERTURE_VALUE: number;
40+
const SUBJECT_DISTANCE: number;
41+
const METERING_MODE: number;
42+
const LIGHT_SOURCE: number;
43+
const FLASH: number;
44+
const FOCAL_LENGTH: number;
45+
const MAKER_NOTE: number;
46+
const USER_COMMENT: number;
47+
const FLASH_PIX_VERSION: number;
48+
const COLOR_SPACE: number;
49+
const EXIF_IMAGE_WIDTH: number;
50+
const EXIF_IMAGE_HEIGHT: number;
51+
const RELATED_SOUND_FILE: number;
52+
const EXIF_INTEROPERABILITY_OFFSET: number;
53+
const FOCAL_PLANE_X_RESOLUTION: number;
54+
const FOCAL_PLANE_Y_RESOLUTION: number;
55+
const FOCAL_PLANE_RESOLUTION_UNIT: number;
56+
const SENSING_METHOD: number;
57+
const FILE_SOURCE: number;
58+
const SCENE_TYPE: number;
59+
const IMAGE_WIDTH: number;
60+
const IMAGE_LENGTH: number;
61+
const BITS_PER_SAMPLE: number;
62+
const COMPRESSION: number;
63+
const PHOTOMETRIC_INTERPRETATION: number;
64+
const STRIP_OFFSETS: number;
65+
const SAMPLES_PER_PIXEL: number;
66+
const ROWS_PER_STRIP: number;
67+
const STRIP_BYTE_COUNTS: number;
68+
const PLANAR_CONFIGURATION: number;
69+
const JPEG_IF_OFFSET: number;
70+
const JPEG_IF_BYTE_COUNT: number;
71+
const Y_CB_CR_SUB_SAMPLING: number;
72+
}
73+
export type ExifDataFormat = number;
74+
export namespace ExifDataFormat {
75+
const UNSIGNED_BYTE: number;
76+
const ASCII_STRING: number;
77+
const UNSIGNED_SHORT: number;
78+
const UNSIGNED_LONG: number;
79+
const UNSIGNED_RATIONAL: number;
80+
const SIGNED_BYTE: number;
81+
const UNDEFINED: number;
82+
const SIGNED_SHORT: number;
83+
const SIGNED_LONG: number;
84+
const SIGNED_RATIONAL: number;
85+
const SINGLE_FLOAT: number;
86+
const DOUBLE_FLOAT: number;
87+
}
88+
export type ExifValue = {
89+
/**
90+
* The numerical value of the tag.
91+
*/
92+
tagNumber: ExifTagNumber;
93+
/**
94+
* A string representing the tag number.
95+
*/
96+
tagName?: string | undefined;
97+
/**
98+
* The data format.
99+
*/
100+
dataFormat: ExifDataFormat;
101+
/**
102+
* Populated for SIGNED/UNSIGNED BYTE/SHORT/LONG/FLOAT.
103+
*/
104+
numericalValue?: number | undefined;
105+
/**
106+
* Populated only for ASCII_STRING.
107+
*/
108+
stringValue?: string | undefined;
109+
/**
110+
* Populated only for SIGNED/UNSIGNED RATIONAL.
111+
*/
112+
numeratorValue?: number | undefined;
113+
/**
114+
* Populated only for SIGNED/UNSIGNED RATIONAL.
115+
*/
116+
denominatorValue?: number | undefined;
117+
/**
118+
* Populated only for UNDEFINED data format.
119+
*/
120+
numComponents?: number | undefined;
121+
/**
122+
* Populated only for UNDEFINED data format.
123+
*/
124+
offsetValue?: number | undefined;
125+
};
126+
import { ByteStream } from "../../io/bytestream.js";
127+
//# sourceMappingURL=exif.d.ts.map

types/image/parsers/exif.d.ts.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

types/image/parsers/gif.d.ts

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export namespace GifParseEventType {
1212
* @typedef GifHeader
1313
* @property {string} version
1414
*/
15-
export class GifHeaderParseEvent extends Event {
15+
export class GifHeaderEvent extends Event {
1616
/** @param {GifHeader} header */
1717
constructor(header: GifHeader);
1818
/** @type {GifHeader} */
@@ -36,7 +36,7 @@ export class GifHeaderParseEvent extends Event {
3636
* @property {number} pixelAspectRatio
3737
* @property {GifColor[]=} globalColorTable Only if globalColorTableFlag is true.
3838
*/
39-
export class GifLogicalScreenParseEvent extends Event {
39+
export class GifLogicalScreenEvent extends Event {
4040
/** @param {GifLogicalScreen} */
4141
constructor(logicalScreen: any);
4242
/** @type {GifLogicalScreen} */
@@ -134,9 +134,7 @@ export class GifTrailerEvent extends Event {
134134
* Comment Extension
135135
*/
136136
export class GifParser extends EventTarget {
137-
/**
138-
* @param {ArrayBuffer} ab
139-
*/
137+
/** @param {ArrayBuffer} ab */
140138
constructor(ab: ArrayBuffer);
141139
/**
142140
* @type {ByteStream}
@@ -149,12 +147,53 @@ export class GifParser extends EventTarget {
149147
*/
150148
private version;
151149
/**
152-
* Overridden so that the type hints for eventType are specific.
153-
* @param {'application_extension'|'comment_extension'|'graphical_control_extension'|'header'|'logical_screen'|'plain_text_extension'|'table_based_image'|'trailer'} eventType
154-
* @param {EventListenerOrEventListenerObject} listener
155-
* @override
150+
* Type-safe way to bind a listener for a GifApplicationExtensionEvent.
151+
* @param {function(GifApplicationExtensionEvent): void} listener
152+
* @returns {GifParser} for chaining
153+
*/
154+
onApplicationExtension(listener: (arg0: GifApplicationExtensionEvent) => void): GifParser;
155+
/**
156+
* Type-safe way to bind a listener for a GifCommentExtensionEvent.
157+
* @param {function(GifCommentExtensionEvent): void} listener
158+
* @returns {GifParser} for chaining
159+
*/
160+
onCommentExtension(listener: (arg0: GifCommentExtensionEvent) => void): GifParser;
161+
/**
162+
* Type-safe way to bind a listener for a GifGraphicControlExtensionEvent.
163+
* @param {function(GifGraphicControlExtensionEvent): void} listener
164+
* @returns {GifParser} for chaining
165+
*/
166+
onGraphicControlExtension(listener: (arg0: GifGraphicControlExtensionEvent) => void): GifParser;
167+
/**
168+
* Type-safe way to bind a listener for a GifHeaderEvent.
169+
* @param {function(GifHeaderEvent): void} listener
170+
* @returns {GifParser} for chaining
171+
*/
172+
onHeader(listener: (arg0: GifHeaderEvent) => void): GifParser;
173+
/**
174+
* Type-safe way to bind a listener for a GifLogicalScreenEvent.
175+
* @param {function(GifLogicalScreenEvent): void} listener
176+
* @returns {GifParser} for chaining
177+
*/
178+
onLogicalScreen(listener: (arg0: GifLogicalScreenEvent) => void): GifParser;
179+
/**
180+
* Type-safe way to bind a listener for a GifPlainTextExtensionEvent.
181+
* @param {function(GifPlainTextExtensionEvent): void} listener
182+
* @returns {GifParser} for chaining
183+
*/
184+
onPlainTextExtension(listener: (arg0: GifPlainTextExtensionEvent) => void): GifParser;
185+
/**
186+
* Type-safe way to bind a listener for a GifTableBasedImageEvent.
187+
* @param {function(GifTableBasedImageEvent): void} listener
188+
* @returns {GifParser} for chaining
189+
*/
190+
onTableBasedImage(listener: (arg0: GifTableBasedImageEvent) => void): GifParser;
191+
/**
192+
* Type-safe way to bind a listener for a GifTrailerEvent.
193+
* @param {function(GifTrailerEvent): void} listener
194+
* @returns {GifParser} for chaining
156195
*/
157-
override addEventListener(eventType: 'application_extension' | 'comment_extension' | 'graphical_control_extension' | 'header' | 'logical_screen' | 'plain_text_extension' | 'table_based_image' | 'trailer', listener: EventListenerOrEventListenerObject): void;
196+
onTrailer(listener: (arg0: GifTrailerEvent) => void): GifParser;
158197
/**
159198
* @returns {Promise<void>} A Promise that resolves when the parsing is complete.
160199
*/

types/image/parsers/gif.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)