@loaders.gl/images 4.0.0-alpha.21 → 4.0.0-alpha.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +1 -1
- package/dist/dist.min.js.map +2 -2
- package/dist/es5/image-loader.js +2 -3
- package/dist/es5/image-loader.js.map +1 -1
- package/dist/es5/lib/parsers/parse-image.js +7 -7
- package/dist/es5/lib/parsers/parse-image.js.map +1 -1
- package/dist/es5/lib/parsers/parse-to-image-bitmap.js +3 -3
- package/dist/es5/lib/parsers/parse-to-image-bitmap.js.map +1 -1
- package/dist/es5/lib/parsers/parse-to-image.js +1 -1
- package/dist/es5/lib/parsers/parse-to-image.js.map +1 -1
- package/dist/es5/lib/parsers/parse-to-node-image.js +1 -1
- package/dist/es5/lib/parsers/parse-to-node-image.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image.js +3 -3
- package/dist/es5/lib/texture-api/load-image.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/esm/image-loader.js +1 -1
- package/dist/esm/image-loader.js.map +1 -1
- package/dist/esm/lib/parsers/parse-image.js +4 -4
- package/dist/esm/lib/parsers/parse-image.js.map +1 -1
- package/dist/esm/lib/parsers/parse-to-image-bitmap.js +2 -2
- package/dist/esm/lib/parsers/parse-to-image-bitmap.js.map +1 -1
- package/dist/esm/lib/parsers/parse-to-image.js +1 -1
- package/dist/esm/lib/parsers/parse-to-image.js.map +1 -1
- package/dist/esm/lib/parsers/parse-to-node-image.js +1 -1
- package/dist/esm/lib/parsers/parse-to-node-image.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image.js +1 -1
- package/dist/esm/lib/texture-api/load-image.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/image-loader.js +2 -5
- package/dist/lib/parsers/parse-image.d.ts +1 -1
- package/dist/lib/parsers/parse-image.d.ts.map +1 -1
- package/dist/lib/parsers/parse-image.js +8 -10
- package/dist/lib/parsers/parse-to-image-bitmap.d.ts +1 -1
- package/dist/lib/parsers/parse-to-image-bitmap.d.ts.map +1 -1
- package/dist/lib/parsers/parse-to-image-bitmap.js +4 -6
- package/dist/lib/parsers/parse-to-image.d.ts +1 -1
- package/dist/lib/parsers/parse-to-image.d.ts.map +1 -1
- package/dist/lib/parsers/parse-to-image.js +2 -2
- package/dist/lib/parsers/parse-to-node-image.d.ts +1 -1
- package/dist/lib/parsers/parse-to-node-image.d.ts.map +1 -1
- package/dist/lib/parsers/parse-to-node-image.js +2 -1
- package/dist/lib/texture-api/load-image.js +3 -6
- package/package.json +3 -3
- package/src/image-loader.ts +1 -1
- package/src/lib/parsers/parse-image.ts +4 -4
- package/src/lib/parsers/parse-to-image-bitmap.ts +2 -2
- package/src/lib/parsers/parse-to-image.ts +1 -1
- package/src/lib/parsers/parse-to-node-image.ts +1 -1
- package/src/lib/texture-api/load-image.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-to-node-image.js","names":["_loaderUtils","require","_binaryImageApi","parseToNodeImage","_x","_x2","_parseToNodeImage","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","options","_ref","mimeType","_parseImageNode","wrap","_callee$","_context","prev","next","getBinaryImageMetadata","globalThis","assert","abrupt","sent","stop"],"sources":["../../../../src/lib/parsers/parse-to-node-image.ts"],"sourcesContent":["import type {ImageLoaderOptions} from '../../image-loader';\nimport type {ImageDataType} from '../../types';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {getBinaryImageMetadata} from '../category-api/binary-image-api';\n\n// Note: These types should be consistent with loaders.gl/polyfills\n\ntype NDArray = {\n shape: number[];\n data: Uint8Array;\n width: number;\n height: number;\n components: number;\n layers: number[];\n};\n\ntype ParseImageNode = (arrayBuffer: ArrayBuffer, mimeType: string) => Promise<NDArray>;\n\n// Use polyfills if installed to parsed image using get-pixels\nexport
|
|
1
|
+
{"version":3,"file":"parse-to-node-image.js","names":["_loaderUtils","require","_binaryImageApi","parseToNodeImage","_x","_x2","_parseToNodeImage","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","options","_ref","mimeType","_parseImageNode","wrap","_callee$","_context","prev","next","getBinaryImageMetadata","globalThis","assert","abrupt","sent","stop"],"sources":["../../../../src/lib/parsers/parse-to-node-image.ts"],"sourcesContent":["import type {ImageLoaderOptions} from '../../image-loader';\nimport type {ImageDataType} from '../../types';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {getBinaryImageMetadata} from '../category-api/binary-image-api';\n\n// Note: These types should be consistent with loaders.gl/polyfills\n\ntype NDArray = {\n shape: number[];\n data: Uint8Array;\n width: number;\n height: number;\n components: number;\n layers: number[];\n};\n\ntype ParseImageNode = (arrayBuffer: ArrayBuffer, mimeType: string) => Promise<NDArray>;\n\n// Use polyfills if installed to parsed image using get-pixels\nexport async function parseToNodeImage(\n arrayBuffer: ArrayBuffer,\n options: ImageLoaderOptions\n): Promise<ImageDataType> {\n const {mimeType} = getBinaryImageMetadata(arrayBuffer) || {};\n\n // @ts-ignore\n const _parseImageNode: ParseImageNode = globalThis._parseImageNode;\n assert(_parseImageNode); // '@loaders.gl/polyfills not installed'\n\n // @ts-expect-error TODO should we throw error in this case?\n return await _parseImageNode(arrayBuffer, mimeType);\n}\n"],"mappings":";;;;;;;;;AAEA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAAwE,SAgBlDE,gBAAgBA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,kBAAA;EAAAA,iBAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAA/B,SAAAC,QACLC,WAAwB,EACxBC,OAA2B;IAAA,IAAAC,IAAA,EAAAC,QAAA,EAAAC,eAAA;IAAA,OAAAP,YAAA,CAAAD,OAAA,CAAAS,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAP,IAAA,GAER,IAAAQ,sCAAsB,EAACV,WAAW,CAAC,IAAI,CAAC,CAAC,EAArDG,QAAQ,GAAAD,IAAA,CAARC,QAAQ;UAGTC,eAA+B,GAAGO,UAAU,CAACP,eAAe;UAClE,IAAAQ,mBAAM,EAACR,eAAe,CAAC;UAACG,QAAA,CAAAE,IAAA;UAAA,OAGXL,eAAe,CAACJ,WAAW,EAAEG,QAAQ,CAAC;QAAA;UAAA,OAAAI,QAAA,CAAAM,MAAA,WAAAN,QAAA,CAAAO,IAAA;QAAA;QAAA;UAAA,OAAAP,QAAA,CAAAQ,IAAA;MAAA;IAAA,GAAAhB,OAAA;EAAA,CACpD;EAAA,OAAAP,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
|
|
@@ -11,7 +11,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
|
11
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
13
|
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
14
|
-
var _parseImage =
|
|
14
|
+
var _parseImage = require("../parsers/parse-image");
|
|
15
15
|
var _parsedImageApi = require("../category-api/parsed-image-api");
|
|
16
16
|
var _generateUrl = require("./generate-url");
|
|
17
17
|
var _deepLoad = require("./deep-load");
|
|
@@ -34,7 +34,7 @@ function _loadImage() {
|
|
|
34
34
|
case 3:
|
|
35
35
|
imageUrls = _context.sent;
|
|
36
36
|
_context.next = 6;
|
|
37
|
-
return (0, _deepLoad.deepLoad)(imageUrls, _parseImage.
|
|
37
|
+
return (0, _deepLoad.deepLoad)(imageUrls, _parseImage.parseImage, options);
|
|
38
38
|
case 6:
|
|
39
39
|
return _context.abrupt("return", _context.sent);
|
|
40
40
|
case 7:
|
|
@@ -98,7 +98,7 @@ function _getMipmappedImageUrls() {
|
|
|
98
98
|
lod: 0
|
|
99
99
|
}));
|
|
100
100
|
_context3.next = 5;
|
|
101
|
-
return (0, _deepLoad.shallowLoad)(url, _parseImage.
|
|
101
|
+
return (0, _deepLoad.shallowLoad)(url, _parseImage.parseImage, options);
|
|
102
102
|
case 5:
|
|
103
103
|
image = _context3.sent;
|
|
104
104
|
_getImageSize = (0, _parsedImageApi.getImageSize)(image), width = _getImageSize.width, height = _getImageSize.height;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-image.js","names":["_loaderUtils","require","_parseImage","
|
|
1
|
+
{"version":3,"file":"load-image.js","names":["_loaderUtils","require","_parseImage","_parsedImageApi","_generateUrl","_deepLoad","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","loadImage","_x","_loadImage","_asyncToGenerator2","_regenerator","mark","_callee","getUrl","options","imageUrls","_args","wrap","_callee$","_context","prev","next","undefined","getImageUrls","sent","deepLoad","parseImage","abrupt","stop","_x2","_x3","_getImageUrls","_callee2","urlOptions","mipLevels","_args2","_callee2$","_context2","image","getMipmappedImageUrls","t0","generateUrl","_x4","_x5","_x6","_x7","_getMipmappedImageUrls","_callee3","urls","url","_getImageSize","width","height","mipLevel","_url","_callee3$","_context3","lod","shallowLoad","getImageSize","getMipLevels","assert","_ref","Math","floor","log2","max"],"sources":["../../../../src/lib/texture-api/load-image.ts"],"sourcesContent":["import {assert} from '@loaders.gl/loader-utils';\nimport {parseImage} from '../parsers/parse-image';\nimport {getImageSize} from '../category-api/parsed-image-api';\nimport {generateUrl} from './generate-url';\nimport {deepLoad, shallowLoad} from './deep-load';\n\nexport async function loadImage(getUrl, options = {}) {\n const imageUrls = await getImageUrls(getUrl, options);\n return await deepLoad(imageUrls, parseImage, options);\n}\n\nexport async function getImageUrls(getUrl, options, urlOptions = {}) {\n const mipLevels = (options && options.image && options.image.mipLevels) || 0;\n return mipLevels !== 0\n ? await getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions)\n : generateUrl(getUrl, options, urlOptions);\n}\n\nasync function getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions) {\n const urls: string[] = [];\n\n // If no mip levels supplied, we need to load the level 0 image and calculate based on size\n if (mipLevels === 'auto') {\n const url = generateUrl(getUrl, options, {...urlOptions, lod: 0});\n const image = await shallowLoad(url, parseImage, options);\n\n const {width, height} = getImageSize(image);\n mipLevels = getMipLevels({width, height});\n\n // TODO - push image and make `deepLoad` pass through non-url values, avoid loading twice?\n urls.push(url);\n }\n\n // We now know how many mipLevels we need, remaining image urls can now be constructed\n assert(mipLevels > 0);\n\n for (let mipLevel = urls.length; mipLevel < mipLevels; ++mipLevel) {\n const url = generateUrl(getUrl, options, {...urlOptions, lod: mipLevel});\n urls.push(url);\n }\n\n return urls;\n}\n\n// Calculates number of mipmaps based on texture size (log2)\nexport function getMipLevels({width, height}) {\n return 1 + Math.floor(Math.log2(Math.max(width, height)));\n}\n"],"mappings":"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"}
|
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.VERSION = void 0;
|
|
7
|
-
var VERSION = typeof "4.0.0-alpha.
|
|
7
|
+
var VERSION = typeof "4.0.0-alpha.23" !== 'undefined' ? "4.0.0-alpha.23" : 'latest';
|
|
8
8
|
exports.VERSION = VERSION;
|
|
9
9
|
//# sourceMappingURL=version.js.map
|
package/dist/esm/image-loader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { VERSION } from './lib/utils/version';
|
|
2
|
-
import parseImage from './lib/parsers/parse-image';
|
|
2
|
+
import { parseImage } from './lib/parsers/parse-image';
|
|
3
3
|
import { getBinaryImageMetadata } from './lib/category-api/binary-image-api';
|
|
4
4
|
const EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'];
|
|
5
5
|
const MIME_TYPES = ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/avif', 'image/bmp', 'image/vnd.microsoft.icon', 'image/svg+xml'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-loader.js","names":["VERSION","parseImage","getBinaryImageMetadata","EXTENSIONS","MIME_TYPES","DEFAULT_IMAGE_LOADER_OPTIONS","image","type","decode","ImageLoader","id","module","name","version","mimeTypes","extensions","parse","tests","arrayBuffer","Boolean","DataView","options"],"sources":["../../src/image-loader.ts"],"sourcesContent":["import type {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {ImageType} from './types';\n// import type { ImageType } from '@loaders.gl/schema';\nimport {VERSION} from './lib/utils/version';\nimport parseImage from './lib/parsers/parse-image';\nimport {getBinaryImageMetadata} from './lib/category-api/binary-image-api';\n\nconst EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'];\nconst MIME_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/avif',\n 'image/bmp',\n 'image/vnd.microsoft.icon',\n 'image/svg+xml'\n];\n\nexport type ImageLoaderOptions = LoaderOptions & {\n image?: {\n type?: 'auto' | 'data' | 'imagebitmap' | 'image';\n decode?: boolean;\n };\n imagebitmap?: ImageBitmapOptions;\n};\n\nconst DEFAULT_IMAGE_LOADER_OPTIONS: ImageLoaderOptions = {\n image: {\n type: 'auto',\n decode: true // if format is HTML\n }\n // imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor\n};\n\n/**\n * Loads a platform-specific image type\n * Note: This type can be used as input data to WebGL texture creation\n */\nexport const ImageLoader: LoaderWithParser<ImageType, never, ImageLoaderOptions> = {\n id: 'image',\n module: 'images',\n name: 'Images',\n version: VERSION,\n mimeTypes: MIME_TYPES,\n extensions: EXTENSIONS,\n parse: parseImage,\n // TODO: byteOffset, byteLength;\n tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],\n options: DEFAULT_IMAGE_LOADER_OPTIONS\n};\n"],"mappings":"AAGA,SAAQA,OAAO,QAAO,qBAAqB;AAC3C,
|
|
1
|
+
{"version":3,"file":"image-loader.js","names":["VERSION","parseImage","getBinaryImageMetadata","EXTENSIONS","MIME_TYPES","DEFAULT_IMAGE_LOADER_OPTIONS","image","type","decode","ImageLoader","id","module","name","version","mimeTypes","extensions","parse","tests","arrayBuffer","Boolean","DataView","options"],"sources":["../../src/image-loader.ts"],"sourcesContent":["import type {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {ImageType} from './types';\n// import type { ImageType } from '@loaders.gl/schema';\nimport {VERSION} from './lib/utils/version';\nimport {parseImage} from './lib/parsers/parse-image';\nimport {getBinaryImageMetadata} from './lib/category-api/binary-image-api';\n\nconst EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'];\nconst MIME_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/avif',\n 'image/bmp',\n 'image/vnd.microsoft.icon',\n 'image/svg+xml'\n];\n\nexport type ImageLoaderOptions = LoaderOptions & {\n image?: {\n type?: 'auto' | 'data' | 'imagebitmap' | 'image';\n decode?: boolean;\n };\n imagebitmap?: ImageBitmapOptions;\n};\n\nconst DEFAULT_IMAGE_LOADER_OPTIONS: ImageLoaderOptions = {\n image: {\n type: 'auto',\n decode: true // if format is HTML\n }\n // imagebitmap: {} - passes (platform dependent) parameters to ImageBitmap constructor\n};\n\n/**\n * Loads a platform-specific image type\n * Note: This type can be used as input data to WebGL texture creation\n */\nexport const ImageLoader: LoaderWithParser<ImageType, never, ImageLoaderOptions> = {\n id: 'image',\n module: 'images',\n name: 'Images',\n version: VERSION,\n mimeTypes: MIME_TYPES,\n extensions: EXTENSIONS,\n parse: parseImage,\n // TODO: byteOffset, byteLength;\n tests: [(arrayBuffer) => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer)))],\n options: DEFAULT_IMAGE_LOADER_OPTIONS\n};\n"],"mappings":"AAGA,SAAQA,OAAO,QAAO,qBAAqB;AAC3C,SAAQC,UAAU,QAAO,2BAA2B;AACpD,SAAQC,sBAAsB,QAAO,qCAAqC;AAE1E,MAAMC,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;AACrF,MAAMC,UAAU,GAAG,CACjB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,0BAA0B,EAC1B,eAAe,CAChB;AAUD,MAAMC,4BAAgD,GAAG;EACvDC,KAAK,EAAE;IACLC,IAAI,EAAE,MAAM;IACZC,MAAM,EAAE;EACV;AAEF,CAAC;AAMD,OAAO,MAAMC,WAAmE,GAAG;EACjFC,EAAE,EAAE,OAAO;EACXC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,OAAO,EAAEb,OAAO;EAChBc,SAAS,EAAEV,UAAU;EACrBW,UAAU,EAAEZ,UAAU;EACtBa,KAAK,EAAEf,UAAU;EAEjBgB,KAAK,EAAE,CAAEC,WAAW,IAAKC,OAAO,CAACjB,sBAAsB,CAAC,IAAIkB,QAAQ,CAACF,WAAW,CAAC,CAAC,CAAC,CAAC;EACpFG,OAAO,EAAEhB;AACX,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { assert } from '@loaders.gl/loader-utils';
|
|
2
2
|
import { isImageTypeSupported, getDefaultImageType } from '../category-api/image-type';
|
|
3
3
|
import { getImageData } from '../category-api/parsed-image-api';
|
|
4
|
-
import parseToImage from './parse-to-image';
|
|
5
|
-
import parseToImageBitmap from './parse-to-image-bitmap';
|
|
6
|
-
import parseToNodeImage from './parse-to-node-image';
|
|
7
|
-
export
|
|
4
|
+
import { parseToImage } from './parse-to-image';
|
|
5
|
+
import { parseToImageBitmap } from './parse-to-image-bitmap';
|
|
6
|
+
import { parseToNodeImage } from './parse-to-node-image';
|
|
7
|
+
export async function parseImage(arrayBuffer, options, context) {
|
|
8
8
|
options = options || {};
|
|
9
9
|
const imageOptions = options.image || {};
|
|
10
10
|
const imageType = imageOptions.type || 'auto';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-image.js","names":["assert","isImageTypeSupported","getDefaultImageType","getImageData","parseToImage","parseToImageBitmap","parseToNodeImage","parseImage","arrayBuffer","options","context","imageOptions","image","imageType","type","url","loadType","getLoadableImageType"],"sources":["../../../../src/lib/parsers/parse-image.ts"],"sourcesContent":["import type {LoaderContext} from '@loaders.gl/loader-utils';\nimport {assert} from '@loaders.gl/loader-utils';\nimport type {ImageType} from '../../types';\nimport type {ImageLoaderOptions} from '../../image-loader';\nimport {isImageTypeSupported, getDefaultImageType} from '../category-api/image-type';\nimport {getImageData} from '../category-api/parsed-image-api';\nimport parseToImage from './parse-to-image';\nimport parseToImageBitmap from './parse-to-image-bitmap';\nimport parseToNodeImage from './parse-to-node-image';\n\n// Parse to platform defined image type (data on node, ImageBitmap or HTMLImage on browser)\n// eslint-disable-next-line complexity\nexport
|
|
1
|
+
{"version":3,"file":"parse-image.js","names":["assert","isImageTypeSupported","getDefaultImageType","getImageData","parseToImage","parseToImageBitmap","parseToNodeImage","parseImage","arrayBuffer","options","context","imageOptions","image","imageType","type","url","loadType","getLoadableImageType"],"sources":["../../../../src/lib/parsers/parse-image.ts"],"sourcesContent":["import type {LoaderContext} from '@loaders.gl/loader-utils';\nimport {assert} from '@loaders.gl/loader-utils';\nimport type {ImageType} from '../../types';\nimport type {ImageLoaderOptions} from '../../image-loader';\nimport {isImageTypeSupported, getDefaultImageType} from '../category-api/image-type';\nimport {getImageData} from '../category-api/parsed-image-api';\nimport {parseToImage} from './parse-to-image';\nimport {parseToImageBitmap} from './parse-to-image-bitmap';\nimport {parseToNodeImage} from './parse-to-node-image';\n\n// Parse to platform defined image type (data on node, ImageBitmap or HTMLImage on browser)\n// eslint-disable-next-line complexity\nexport async function parseImage(\n arrayBuffer: ArrayBuffer,\n options?: ImageLoaderOptions,\n context?: LoaderContext\n): Promise<ImageType> {\n options = options || {};\n const imageOptions = options.image || {};\n\n // The user can request a specific output format via `options.image.type`\n const imageType = imageOptions.type || 'auto';\n\n const {url} = context || {};\n\n // Note: For options.image.type === `data`, we may still need to load as `image` or `imagebitmap`\n const loadType = getLoadableImageType(imageType);\n\n let image;\n switch (loadType) {\n case 'imagebitmap':\n image = await parseToImageBitmap(arrayBuffer, options, url);\n break;\n case 'image':\n image = await parseToImage(arrayBuffer, options, url);\n break;\n case 'data':\n // Node.js loads imagedata directly\n image = await parseToNodeImage(arrayBuffer, options);\n break;\n default:\n assert(false);\n }\n\n // Browser: if options.image.type === 'data', we can now extract data from the loaded image\n if (imageType === 'data') {\n image = getImageData(image);\n }\n\n return image;\n}\n\n// Get a loadable image type from image type\nfunction getLoadableImageType(type) {\n switch (type) {\n case 'auto':\n case 'data':\n // Browser: For image data we need still need to load using an image format\n // Node: the default image type is `data`.\n return getDefaultImageType();\n default:\n // Throw an error if not supported\n isImageTypeSupported(type);\n return type;\n }\n}\n"],"mappings":"AACA,SAAQA,MAAM,QAAO,0BAA0B;AAG/C,SAAQC,oBAAoB,EAAEC,mBAAmB,QAAO,4BAA4B;AACpF,SAAQC,YAAY,QAAO,kCAAkC;AAC7D,SAAQC,YAAY,QAAO,kBAAkB;AAC7C,SAAQC,kBAAkB,QAAO,yBAAyB;AAC1D,SAAQC,gBAAgB,QAAO,uBAAuB;AAItD,OAAO,eAAeC,UAAUA,CAC9BC,WAAwB,EACxBC,OAA4B,EAC5BC,OAAuB,EACH;EACpBD,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;EACvB,MAAME,YAAY,GAAGF,OAAO,CAACG,KAAK,IAAI,CAAC,CAAC;EAGxC,MAAMC,SAAS,GAAGF,YAAY,CAACG,IAAI,IAAI,MAAM;EAE7C,MAAM;IAACC;EAAG,CAAC,GAAGL,OAAO,IAAI,CAAC,CAAC;EAG3B,MAAMM,QAAQ,GAAGC,oBAAoB,CAACJ,SAAS,CAAC;EAEhD,IAAID,KAAK;EACT,QAAQI,QAAQ;IACd,KAAK,aAAa;MAChBJ,KAAK,GAAG,MAAMP,kBAAkB,CAACG,WAAW,EAAEC,OAAO,EAAEM,GAAG,CAAC;MAC3D;IACF,KAAK,OAAO;MACVH,KAAK,GAAG,MAAMR,YAAY,CAACI,WAAW,EAAEC,OAAO,EAAEM,GAAG,CAAC;MACrD;IACF,KAAK,MAAM;MAETH,KAAK,GAAG,MAAMN,gBAAgB,CAACE,WAAW,EAAEC,OAAO,CAAC;MACpD;IACF;MACET,MAAM,CAAC,KAAK,CAAC;EACjB;EAGA,IAAIa,SAAS,KAAK,MAAM,EAAE;IACxBD,KAAK,GAAGT,YAAY,CAACS,KAAK,CAAC;EAC7B;EAEA,OAAOA,KAAK;AACd;AAGA,SAASK,oBAAoBA,CAACH,IAAI,EAAE;EAClC,QAAQA,IAAI;IACV,KAAK,MAAM;IACX,KAAK,MAAM;MAGT,OAAOZ,mBAAmB,CAAC,CAAC;IAC9B;MAEED,oBAAoB,CAACa,IAAI,CAAC;MAC1B,OAAOA,IAAI;EACf;AACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { isSVG, getBlob } from './svg-utils';
|
|
2
|
-
import parseToImage from './parse-to-image';
|
|
2
|
+
import { parseToImage } from './parse-to-image';
|
|
3
3
|
const EMPTY_OBJECT = {};
|
|
4
4
|
let imagebitmapOptionsSupported = true;
|
|
5
|
-
export
|
|
5
|
+
export async function parseToImageBitmap(arrayBuffer, options, url) {
|
|
6
6
|
let blob;
|
|
7
7
|
if (isSVG(url)) {
|
|
8
8
|
const image = await parseToImage(arrayBuffer, options, url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-to-image-bitmap.js","names":["isSVG","getBlob","parseToImage","EMPTY_OBJECT","imagebitmapOptionsSupported","parseToImageBitmap","arrayBuffer","options","url","blob","image","imagebitmapOptions","imagebitmap","safeCreateImageBitmap","arguments","length","undefined","isEmptyObject","createImageBitmap","error","console","warn","object","key"],"sources":["../../../../src/lib/parsers/parse-to-image-bitmap.ts"],"sourcesContent":["import type {ImageLoaderOptions} from '../../image-loader';\nimport {isSVG, getBlob} from './svg-utils';\nimport parseToImage from './parse-to-image';\n\nconst EMPTY_OBJECT = {};\n\nlet imagebitmapOptionsSupported = true;\n\n/**\n * Asynchronously parses an array buffer into an ImageBitmap - this contains the decoded data\n * ImageBitmaps are supported on worker threads, but not supported on Edge, IE11 and Safari\n * https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap#Browser_compatibility\n *\n * TODO - createImageBitmap supports source rect (5 param overload), pass through?\n */\nexport
|
|
1
|
+
{"version":3,"file":"parse-to-image-bitmap.js","names":["isSVG","getBlob","parseToImage","EMPTY_OBJECT","imagebitmapOptionsSupported","parseToImageBitmap","arrayBuffer","options","url","blob","image","imagebitmapOptions","imagebitmap","safeCreateImageBitmap","arguments","length","undefined","isEmptyObject","createImageBitmap","error","console","warn","object","key"],"sources":["../../../../src/lib/parsers/parse-to-image-bitmap.ts"],"sourcesContent":["import type {ImageLoaderOptions} from '../../image-loader';\nimport {isSVG, getBlob} from './svg-utils';\nimport {parseToImage} from './parse-to-image';\n\nconst EMPTY_OBJECT = {};\n\nlet imagebitmapOptionsSupported = true;\n\n/**\n * Asynchronously parses an array buffer into an ImageBitmap - this contains the decoded data\n * ImageBitmaps are supported on worker threads, but not supported on Edge, IE11 and Safari\n * https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap#Browser_compatibility\n *\n * TODO - createImageBitmap supports source rect (5 param overload), pass through?\n */\nexport async function parseToImageBitmap(\n arrayBuffer: ArrayBuffer,\n options: ImageLoaderOptions,\n url?: string\n): Promise<ImageBitmap> {\n let blob;\n\n // Cannot parse SVG directly to ImageBitmap, parse to Image first\n if (isSVG(url)) {\n // Note: this only works on main thread\n const image = await parseToImage(arrayBuffer, options, url);\n blob = image;\n } else {\n // Create blob from the array buffer\n blob = getBlob(arrayBuffer, url);\n }\n\n const imagebitmapOptions = options && options.imagebitmap;\n\n return await safeCreateImageBitmap(blob, imagebitmapOptions);\n}\n\n/**\n * Safely creates an imageBitmap with options\n * *\n * Firefox crashes if imagebitmapOptions is supplied\n * Avoid supplying if not provided or supported, remember if not supported\n */\nasync function safeCreateImageBitmap(\n blob: Blob,\n imagebitmapOptions: ImageBitmapOptions | null = null\n): Promise<ImageBitmap> {\n if (isEmptyObject(imagebitmapOptions) || !imagebitmapOptionsSupported) {\n imagebitmapOptions = null;\n }\n\n if (imagebitmapOptions) {\n try {\n // @ts-ignore Options\n return await createImageBitmap(blob, imagebitmapOptions);\n } catch (error) {\n console.warn(error); // eslint-disable-line\n imagebitmapOptionsSupported = false;\n }\n }\n\n return await createImageBitmap(blob);\n}\n\nfunction isEmptyObject(object) {\n // @ts-ignore\n for (const key in object || EMPTY_OBJECT) {\n return false;\n }\n return true;\n}\n"],"mappings":"AACA,SAAQA,KAAK,EAAEC,OAAO,QAAO,aAAa;AAC1C,SAAQC,YAAY,QAAO,kBAAkB;AAE7C,MAAMC,YAAY,GAAG,CAAC,CAAC;AAEvB,IAAIC,2BAA2B,GAAG,IAAI;AAStC,OAAO,eAAeC,kBAAkBA,CACtCC,WAAwB,EACxBC,OAA2B,EAC3BC,GAAY,EACU;EACtB,IAAIC,IAAI;EAGR,IAAIT,KAAK,CAACQ,GAAG,CAAC,EAAE;IAEd,MAAME,KAAK,GAAG,MAAMR,YAAY,CAACI,WAAW,EAAEC,OAAO,EAAEC,GAAG,CAAC;IAC3DC,IAAI,GAAGC,KAAK;EACd,CAAC,MAAM;IAELD,IAAI,GAAGR,OAAO,CAACK,WAAW,EAAEE,GAAG,CAAC;EAClC;EAEA,MAAMG,kBAAkB,GAAGJ,OAAO,IAAIA,OAAO,CAACK,WAAW;EAEzD,OAAO,MAAMC,qBAAqB,CAACJ,IAAI,EAAEE,kBAAkB,CAAC;AAC9D;AAQA,eAAeE,qBAAqBA,CAClCJ,IAAU,EAEY;EAAA,IADtBE,kBAA6C,GAAAG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAEpD,IAAIG,aAAa,CAACN,kBAAkB,CAAC,IAAI,CAACP,2BAA2B,EAAE;IACrEO,kBAAkB,GAAG,IAAI;EAC3B;EAEA,IAAIA,kBAAkB,EAAE;IACtB,IAAI;MAEF,OAAO,MAAMO,iBAAiB,CAACT,IAAI,EAAEE,kBAAkB,CAAC;IAC1D,CAAC,CAAC,OAAOQ,KAAK,EAAE;MACdC,OAAO,CAACC,IAAI,CAACF,KAAK,CAAC;MACnBf,2BAA2B,GAAG,KAAK;IACrC;EACF;EAEA,OAAO,MAAMc,iBAAiB,CAACT,IAAI,CAAC;AACtC;AAEA,SAASQ,aAAaA,CAACK,MAAM,EAAE;EAE7B,KAAK,MAAMC,GAAG,IAAID,MAAM,IAAInB,YAAY,EAAE;IACxC,OAAO,KAAK;EACd;EACA,OAAO,IAAI;AACb"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getBlobOrSVGDataUrl } from './svg-utils';
|
|
2
|
-
export
|
|
2
|
+
export async function parseToImage(arrayBuffer, options, url) {
|
|
3
3
|
const blobOrDataUrl = getBlobOrSVGDataUrl(arrayBuffer, url);
|
|
4
4
|
const URL = self.URL || self.webkitURL;
|
|
5
5
|
const objectUrl = typeof blobOrDataUrl !== 'string' && URL.createObjectURL(blobOrDataUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-to-image.js","names":["getBlobOrSVGDataUrl","parseToImage","arrayBuffer","options","url","blobOrDataUrl","URL","self","webkitURL","objectUrl","createObjectURL","loadToImage","revokeObjectURL","image","Image","src","decode","Promise","resolve","reject","onload","onerror","err","Error","concat","error"],"sources":["../../../../src/lib/parsers/parse-to-image.ts"],"sourcesContent":["import type {ImageLoaderOptions} from '../../image-loader';\nimport {getBlobOrSVGDataUrl} from './svg-utils';\n\n// Parses html image from array buffer\nexport
|
|
1
|
+
{"version":3,"file":"parse-to-image.js","names":["getBlobOrSVGDataUrl","parseToImage","arrayBuffer","options","url","blobOrDataUrl","URL","self","webkitURL","objectUrl","createObjectURL","loadToImage","revokeObjectURL","image","Image","src","decode","Promise","resolve","reject","onload","onerror","err","Error","concat","error"],"sources":["../../../../src/lib/parsers/parse-to-image.ts"],"sourcesContent":["import type {ImageLoaderOptions} from '../../image-loader';\nimport {getBlobOrSVGDataUrl} from './svg-utils';\n\n// Parses html image from array buffer\nexport async function parseToImage(\n arrayBuffer: ArrayBuffer,\n options: ImageLoaderOptions,\n url?: string\n): Promise<HTMLImageElement> {\n // Note: image parsing requires conversion to Blob (for createObjectURL).\n // Potentially inefficient for not using `response.blob()` (and for File / Blob inputs)...\n // But presumably not worth adding 'blob' flag to loader objects?\n\n const blobOrDataUrl = getBlobOrSVGDataUrl(arrayBuffer, url);\n const URL = self.URL || self.webkitURL;\n const objectUrl = typeof blobOrDataUrl !== 'string' && URL.createObjectURL(blobOrDataUrl);\n try {\n return await loadToImage(objectUrl || blobOrDataUrl, options);\n } finally {\n if (objectUrl) {\n URL.revokeObjectURL(objectUrl);\n }\n }\n}\n\nexport async function loadToImage(url, options): Promise<HTMLImageElement> {\n const image = new Image();\n image.src = url;\n\n // The `image.onload()` callback does not guarantee that the image has been decoded\n // so a main thread \"freeze\" can be incurred when using the image for the first time.\n // `Image.decode()` returns a promise that completes when image is decoded.\n\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/decode\n // Note: When calling `img.decode()`, we do not need to wait for `img.onload()`\n // Note: `HTMLImageElement.decode()` is not available in Edge and IE11\n if (options.image && options.image.decode && image.decode) {\n await image.decode();\n return image;\n }\n\n // Create a promise that tracks onload/onerror callbacks\n return await new Promise((resolve, reject) => {\n try {\n image.onload = () => resolve(image);\n image.onerror = (err) => reject(new Error(`Could not load image ${url}: ${err}`));\n } catch (error) {\n reject(error);\n }\n });\n}\n"],"mappings":"AACA,SAAQA,mBAAmB,QAAO,aAAa;AAG/C,OAAO,eAAeC,YAAYA,CAChCC,WAAwB,EACxBC,OAA2B,EAC3BC,GAAY,EACe;EAK3B,MAAMC,aAAa,GAAGL,mBAAmB,CAACE,WAAW,EAAEE,GAAG,CAAC;EAC3D,MAAME,GAAG,GAAGC,IAAI,CAACD,GAAG,IAAIC,IAAI,CAACC,SAAS;EACtC,MAAMC,SAAS,GAAG,OAAOJ,aAAa,KAAK,QAAQ,IAAIC,GAAG,CAACI,eAAe,CAACL,aAAa,CAAC;EACzF,IAAI;IACF,OAAO,MAAMM,WAAW,CAACF,SAAS,IAAIJ,aAAa,EAAEF,OAAO,CAAC;EAC/D,CAAC,SAAS;IACR,IAAIM,SAAS,EAAE;MACbH,GAAG,CAACM,eAAe,CAACH,SAAS,CAAC;IAChC;EACF;AACF;AAEA,OAAO,eAAeE,WAAWA,CAACP,GAAG,EAAED,OAAO,EAA6B;EACzE,MAAMU,KAAK,GAAG,IAAIC,KAAK,CAAC,CAAC;EACzBD,KAAK,CAACE,GAAG,GAAGX,GAAG;EASf,IAAID,OAAO,CAACU,KAAK,IAAIV,OAAO,CAACU,KAAK,CAACG,MAAM,IAAIH,KAAK,CAACG,MAAM,EAAE;IACzD,MAAMH,KAAK,CAACG,MAAM,CAAC,CAAC;IACpB,OAAOH,KAAK;EACd;EAGA,OAAO,MAAM,IAAII,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IAC5C,IAAI;MACFN,KAAK,CAACO,MAAM,GAAG,MAAMF,OAAO,CAACL,KAAK,CAAC;MACnCA,KAAK,CAACQ,OAAO,GAAIC,GAAG,IAAKH,MAAM,CAAC,IAAII,KAAK,yBAAAC,MAAA,CAAyBpB,GAAG,QAAAoB,MAAA,CAAKF,GAAG,CAAE,CAAC,CAAC;IACnF,CAAC,CAAC,OAAOG,KAAK,EAAE;MACdN,MAAM,CAACM,KAAK,CAAC;IACf;EACF,CAAC,CAAC;AACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assert } from '@loaders.gl/loader-utils';
|
|
2
2
|
import { getBinaryImageMetadata } from '../category-api/binary-image-api';
|
|
3
|
-
export
|
|
3
|
+
export async function parseToNodeImage(arrayBuffer, options) {
|
|
4
4
|
const {
|
|
5
5
|
mimeType
|
|
6
6
|
} = getBinaryImageMetadata(arrayBuffer) || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-to-node-image.js","names":["assert","getBinaryImageMetadata","parseToNodeImage","arrayBuffer","options","mimeType","_parseImageNode","globalThis"],"sources":["../../../../src/lib/parsers/parse-to-node-image.ts"],"sourcesContent":["import type {ImageLoaderOptions} from '../../image-loader';\nimport type {ImageDataType} from '../../types';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {getBinaryImageMetadata} from '../category-api/binary-image-api';\n\n// Note: These types should be consistent with loaders.gl/polyfills\n\ntype NDArray = {\n shape: number[];\n data: Uint8Array;\n width: number;\n height: number;\n components: number;\n layers: number[];\n};\n\ntype ParseImageNode = (arrayBuffer: ArrayBuffer, mimeType: string) => Promise<NDArray>;\n\n// Use polyfills if installed to parsed image using get-pixels\nexport
|
|
1
|
+
{"version":3,"file":"parse-to-node-image.js","names":["assert","getBinaryImageMetadata","parseToNodeImage","arrayBuffer","options","mimeType","_parseImageNode","globalThis"],"sources":["../../../../src/lib/parsers/parse-to-node-image.ts"],"sourcesContent":["import type {ImageLoaderOptions} from '../../image-loader';\nimport type {ImageDataType} from '../../types';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {getBinaryImageMetadata} from '../category-api/binary-image-api';\n\n// Note: These types should be consistent with loaders.gl/polyfills\n\ntype NDArray = {\n shape: number[];\n data: Uint8Array;\n width: number;\n height: number;\n components: number;\n layers: number[];\n};\n\ntype ParseImageNode = (arrayBuffer: ArrayBuffer, mimeType: string) => Promise<NDArray>;\n\n// Use polyfills if installed to parsed image using get-pixels\nexport async function parseToNodeImage(\n arrayBuffer: ArrayBuffer,\n options: ImageLoaderOptions\n): Promise<ImageDataType> {\n const {mimeType} = getBinaryImageMetadata(arrayBuffer) || {};\n\n // @ts-ignore\n const _parseImageNode: ParseImageNode = globalThis._parseImageNode;\n assert(_parseImageNode); // '@loaders.gl/polyfills not installed'\n\n // @ts-expect-error TODO should we throw error in this case?\n return await _parseImageNode(arrayBuffer, mimeType);\n}\n"],"mappings":"AAEA,SAAQA,MAAM,QAAO,0BAA0B;AAC/C,SAAQC,sBAAsB,QAAO,kCAAkC;AAgBvE,OAAO,eAAeC,gBAAgBA,CACpCC,WAAwB,EACxBC,OAA2B,EACH;EACxB,MAAM;IAACC;EAAQ,CAAC,GAAGJ,sBAAsB,CAACE,WAAW,CAAC,IAAI,CAAC,CAAC;EAG5D,MAAMG,eAA+B,GAAGC,UAAU,CAACD,eAAe;EAClEN,MAAM,CAACM,eAAe,CAAC;EAGvB,OAAO,MAAMA,eAAe,CAACH,WAAW,EAAEE,QAAQ,CAAC;AACrD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assert } from '@loaders.gl/loader-utils';
|
|
2
|
-
import parseImage from '../parsers/parse-image';
|
|
2
|
+
import { parseImage } from '../parsers/parse-image';
|
|
3
3
|
import { getImageSize } from '../category-api/parsed-image-api';
|
|
4
4
|
import { generateUrl } from './generate-url';
|
|
5
5
|
import { deepLoad, shallowLoad } from './deep-load';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-image.js","names":["assert","parseImage","getImageSize","generateUrl","deepLoad","shallowLoad","loadImage","getUrl","options","arguments","length","undefined","imageUrls","getImageUrls","urlOptions","mipLevels","image","getMipmappedImageUrls","urls","url","lod","width","height","getMipLevels","push","mipLevel","_ref","Math","floor","log2","max"],"sources":["../../../../src/lib/texture-api/load-image.ts"],"sourcesContent":["import {assert} from '@loaders.gl/loader-utils';\nimport parseImage from '../parsers/parse-image';\nimport {getImageSize} from '../category-api/parsed-image-api';\nimport {generateUrl} from './generate-url';\nimport {deepLoad, shallowLoad} from './deep-load';\n\nexport async function loadImage(getUrl, options = {}) {\n const imageUrls = await getImageUrls(getUrl, options);\n return await deepLoad(imageUrls, parseImage, options);\n}\n\nexport async function getImageUrls(getUrl, options, urlOptions = {}) {\n const mipLevels = (options && options.image && options.image.mipLevels) || 0;\n return mipLevels !== 0\n ? await getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions)\n : generateUrl(getUrl, options, urlOptions);\n}\n\nasync function getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions) {\n const urls: string[] = [];\n\n // If no mip levels supplied, we need to load the level 0 image and calculate based on size\n if (mipLevels === 'auto') {\n const url = generateUrl(getUrl, options, {...urlOptions, lod: 0});\n const image = await shallowLoad(url, parseImage, options);\n\n const {width, height} = getImageSize(image);\n mipLevels = getMipLevels({width, height});\n\n // TODO - push image and make `deepLoad` pass through non-url values, avoid loading twice?\n urls.push(url);\n }\n\n // We now know how many mipLevels we need, remaining image urls can now be constructed\n assert(mipLevels > 0);\n\n for (let mipLevel = urls.length; mipLevel < mipLevels; ++mipLevel) {\n const url = generateUrl(getUrl, options, {...urlOptions, lod: mipLevel});\n urls.push(url);\n }\n\n return urls;\n}\n\n// Calculates number of mipmaps based on texture size (log2)\nexport function getMipLevels({width, height}) {\n return 1 + Math.floor(Math.log2(Math.max(width, height)));\n}\n"],"mappings":"AAAA,SAAQA,MAAM,QAAO,0BAA0B;AAC/C,
|
|
1
|
+
{"version":3,"file":"load-image.js","names":["assert","parseImage","getImageSize","generateUrl","deepLoad","shallowLoad","loadImage","getUrl","options","arguments","length","undefined","imageUrls","getImageUrls","urlOptions","mipLevels","image","getMipmappedImageUrls","urls","url","lod","width","height","getMipLevels","push","mipLevel","_ref","Math","floor","log2","max"],"sources":["../../../../src/lib/texture-api/load-image.ts"],"sourcesContent":["import {assert} from '@loaders.gl/loader-utils';\nimport {parseImage} from '../parsers/parse-image';\nimport {getImageSize} from '../category-api/parsed-image-api';\nimport {generateUrl} from './generate-url';\nimport {deepLoad, shallowLoad} from './deep-load';\n\nexport async function loadImage(getUrl, options = {}) {\n const imageUrls = await getImageUrls(getUrl, options);\n return await deepLoad(imageUrls, parseImage, options);\n}\n\nexport async function getImageUrls(getUrl, options, urlOptions = {}) {\n const mipLevels = (options && options.image && options.image.mipLevels) || 0;\n return mipLevels !== 0\n ? await getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions)\n : generateUrl(getUrl, options, urlOptions);\n}\n\nasync function getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions) {\n const urls: string[] = [];\n\n // If no mip levels supplied, we need to load the level 0 image and calculate based on size\n if (mipLevels === 'auto') {\n const url = generateUrl(getUrl, options, {...urlOptions, lod: 0});\n const image = await shallowLoad(url, parseImage, options);\n\n const {width, height} = getImageSize(image);\n mipLevels = getMipLevels({width, height});\n\n // TODO - push image and make `deepLoad` pass through non-url values, avoid loading twice?\n urls.push(url);\n }\n\n // We now know how many mipLevels we need, remaining image urls can now be constructed\n assert(mipLevels > 0);\n\n for (let mipLevel = urls.length; mipLevel < mipLevels; ++mipLevel) {\n const url = generateUrl(getUrl, options, {...urlOptions, lod: mipLevel});\n urls.push(url);\n }\n\n return urls;\n}\n\n// Calculates number of mipmaps based on texture size (log2)\nexport function getMipLevels({width, height}) {\n return 1 + Math.floor(Math.log2(Math.max(width, height)));\n}\n"],"mappings":"AAAA,SAAQA,MAAM,QAAO,0BAA0B;AAC/C,SAAQC,UAAU,QAAO,wBAAwB;AACjD,SAAQC,YAAY,QAAO,kCAAkC;AAC7D,SAAQC,WAAW,QAAO,gBAAgB;AAC1C,SAAQC,QAAQ,EAAEC,WAAW,QAAO,aAAa;AAEjD,OAAO,eAAeC,SAASA,CAACC,MAAM,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAClD,MAAMG,SAAS,GAAG,MAAMC,YAAY,CAACN,MAAM,EAAEC,OAAO,CAAC;EACrD,OAAO,MAAMJ,QAAQ,CAACQ,SAAS,EAAEX,UAAU,EAAEO,OAAO,CAAC;AACvD;AAEA,OAAO,eAAeK,YAAYA,CAACN,MAAM,EAAEC,OAAO,EAAmB;EAAA,IAAjBM,UAAU,GAAAL,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACjE,MAAMM,SAAS,GAAIP,OAAO,IAAIA,OAAO,CAACQ,KAAK,IAAIR,OAAO,CAACQ,KAAK,CAACD,SAAS,IAAK,CAAC;EAC5E,OAAOA,SAAS,KAAK,CAAC,GAClB,MAAME,qBAAqB,CAACV,MAAM,EAAEQ,SAAS,EAAEP,OAAO,EAAEM,UAAU,CAAC,GACnEX,WAAW,CAACI,MAAM,EAAEC,OAAO,EAAEM,UAAU,CAAC;AAC9C;AAEA,eAAeG,qBAAqBA,CAACV,MAAM,EAAEQ,SAAS,EAAEP,OAAO,EAAEM,UAAU,EAAE;EAC3E,MAAMI,IAAc,GAAG,EAAE;EAGzB,IAAIH,SAAS,KAAK,MAAM,EAAE;IACxB,MAAMI,GAAG,GAAGhB,WAAW,CAACI,MAAM,EAAEC,OAAO,EAAE;MAAC,GAAGM,UAAU;MAAEM,GAAG,EAAE;IAAC,CAAC,CAAC;IACjE,MAAMJ,KAAK,GAAG,MAAMX,WAAW,CAACc,GAAG,EAAElB,UAAU,EAAEO,OAAO,CAAC;IAEzD,MAAM;MAACa,KAAK;MAAEC;IAAM,CAAC,GAAGpB,YAAY,CAACc,KAAK,CAAC;IAC3CD,SAAS,GAAGQ,YAAY,CAAC;MAACF,KAAK;MAAEC;IAAM,CAAC,CAAC;IAGzCJ,IAAI,CAACM,IAAI,CAACL,GAAG,CAAC;EAChB;EAGAnB,MAAM,CAACe,SAAS,GAAG,CAAC,CAAC;EAErB,KAAK,IAAIU,QAAQ,GAAGP,IAAI,CAACR,MAAM,EAAEe,QAAQ,GAAGV,SAAS,EAAE,EAAEU,QAAQ,EAAE;IACjE,MAAMN,GAAG,GAAGhB,WAAW,CAACI,MAAM,EAAEC,OAAO,EAAE;MAAC,GAAGM,UAAU;MAAEM,GAAG,EAAEK;IAAQ,CAAC,CAAC;IACxEP,IAAI,CAACM,IAAI,CAACL,GAAG,CAAC;EAChB;EAEA,OAAOD,IAAI;AACb;AAGA,OAAO,SAASK,YAAYA,CAAAG,IAAA,EAAkB;EAAA,IAAjB;IAACL,KAAK;IAAEC;EAAM,CAAC,GAAAI,IAAA;EAC1C,OAAO,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,IAAI,CAACF,IAAI,CAACG,GAAG,CAACT,KAAK,EAAEC,MAAM,CAAC,CAAC,CAAC;AAC3D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = typeof "4.0.0-alpha.
|
|
1
|
+
export const VERSION = typeof "4.0.0-alpha.23" !== 'undefined' ? "4.0.0-alpha.23" : 'latest';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/image-loader.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.ImageLoader = void 0;
|
|
7
4
|
// import type { ImageType } from '@loaders.gl/schema';
|
|
8
5
|
const version_1 = require("./lib/utils/version");
|
|
9
|
-
const parse_image_1 =
|
|
6
|
+
const parse_image_1 = require("./lib/parsers/parse-image");
|
|
10
7
|
const binary_image_api_1 = require("./lib/category-api/binary-image-api");
|
|
11
8
|
const EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'];
|
|
12
9
|
const MIME_TYPES = [
|
|
@@ -37,7 +34,7 @@ exports.ImageLoader = {
|
|
|
37
34
|
version: version_1.VERSION,
|
|
38
35
|
mimeTypes: MIME_TYPES,
|
|
39
36
|
extensions: EXTENSIONS,
|
|
40
|
-
parse: parse_image_1.
|
|
37
|
+
parse: parse_image_1.parseImage,
|
|
41
38
|
// TODO: byteOffset, byteLength;
|
|
42
39
|
tests: [(arrayBuffer) => Boolean((0, binary_image_api_1.getBinaryImageMetadata)(new DataView(arrayBuffer)))],
|
|
43
40
|
options: DEFAULT_IMAGE_LOADER_OPTIONS
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LoaderContext } from '@loaders.gl/loader-utils';
|
|
2
2
|
import type { ImageType } from '../../types';
|
|
3
3
|
import type { ImageLoaderOptions } from '../../image-loader';
|
|
4
|
-
export
|
|
4
|
+
export declare function parseImage(arrayBuffer: ArrayBuffer, options?: ImageLoaderOptions, context?: LoaderContext): Promise<ImageType>;
|
|
5
5
|
//# sourceMappingURL=parse-image.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-image.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAS3D,
|
|
1
|
+
{"version":3,"file":"parse-image.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAS3D,wBAAsB,UAAU,CAC9B,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,kBAAkB,EAC5B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,SAAS,CAAC,CAkCpB"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseImage = void 0;
|
|
6
4
|
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
7
5
|
const image_type_1 = require("../category-api/image-type");
|
|
8
6
|
const parsed_image_api_1 = require("../category-api/parsed-image-api");
|
|
9
|
-
const parse_to_image_1 =
|
|
10
|
-
const parse_to_image_bitmap_1 =
|
|
11
|
-
const parse_to_node_image_1 =
|
|
7
|
+
const parse_to_image_1 = require("./parse-to-image");
|
|
8
|
+
const parse_to_image_bitmap_1 = require("./parse-to-image-bitmap");
|
|
9
|
+
const parse_to_node_image_1 = require("./parse-to-node-image");
|
|
12
10
|
// Parse to platform defined image type (data on node, ImageBitmap or HTMLImage on browser)
|
|
13
11
|
// eslint-disable-next-line complexity
|
|
14
12
|
async function parseImage(arrayBuffer, options, context) {
|
|
@@ -22,14 +20,14 @@ async function parseImage(arrayBuffer, options, context) {
|
|
|
22
20
|
let image;
|
|
23
21
|
switch (loadType) {
|
|
24
22
|
case 'imagebitmap':
|
|
25
|
-
image = await (0, parse_to_image_bitmap_1.
|
|
23
|
+
image = await (0, parse_to_image_bitmap_1.parseToImageBitmap)(arrayBuffer, options, url);
|
|
26
24
|
break;
|
|
27
25
|
case 'image':
|
|
28
|
-
image = await (0, parse_to_image_1.
|
|
26
|
+
image = await (0, parse_to_image_1.parseToImage)(arrayBuffer, options, url);
|
|
29
27
|
break;
|
|
30
28
|
case 'data':
|
|
31
29
|
// Node.js loads imagedata directly
|
|
32
|
-
image = await (0, parse_to_node_image_1.
|
|
30
|
+
image = await (0, parse_to_node_image_1.parseToNodeImage)(arrayBuffer, options);
|
|
33
31
|
break;
|
|
34
32
|
default:
|
|
35
33
|
(0, loader_utils_1.assert)(false);
|
|
@@ -40,7 +38,7 @@ async function parseImage(arrayBuffer, options, context) {
|
|
|
40
38
|
}
|
|
41
39
|
return image;
|
|
42
40
|
}
|
|
43
|
-
exports.
|
|
41
|
+
exports.parseImage = parseImage;
|
|
44
42
|
// Get a loadable image type from image type
|
|
45
43
|
function getLoadableImageType(type) {
|
|
46
44
|
switch (type) {
|
|
@@ -6,5 +6,5 @@ import type { ImageLoaderOptions } from '../../image-loader';
|
|
|
6
6
|
*
|
|
7
7
|
* TODO - createImageBitmap supports source rect (5 param overload), pass through?
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
9
|
+
export declare function parseToImageBitmap(arrayBuffer: ArrayBuffer, options: ImageLoaderOptions, url?: string): Promise<ImageBitmap>;
|
|
10
10
|
//# sourceMappingURL=parse-to-image-bitmap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-to-image-bitmap.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-to-image-bitmap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAQ3D;;;;;;GAMG;AACH,
|
|
1
|
+
{"version":3,"file":"parse-to-image-bitmap.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-to-image-bitmap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAQ3D;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,kBAAkB,EAC3B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,CAAC,CAgBtB"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseToImageBitmap = void 0;
|
|
6
4
|
const svg_utils_1 = require("./svg-utils");
|
|
7
|
-
const parse_to_image_1 =
|
|
5
|
+
const parse_to_image_1 = require("./parse-to-image");
|
|
8
6
|
const EMPTY_OBJECT = {};
|
|
9
7
|
let imagebitmapOptionsSupported = true;
|
|
10
8
|
/**
|
|
@@ -19,7 +17,7 @@ async function parseToImageBitmap(arrayBuffer, options, url) {
|
|
|
19
17
|
// Cannot parse SVG directly to ImageBitmap, parse to Image first
|
|
20
18
|
if ((0, svg_utils_1.isSVG)(url)) {
|
|
21
19
|
// Note: this only works on main thread
|
|
22
|
-
const image = await (0, parse_to_image_1.
|
|
20
|
+
const image = await (0, parse_to_image_1.parseToImage)(arrayBuffer, options, url);
|
|
23
21
|
blob = image;
|
|
24
22
|
}
|
|
25
23
|
else {
|
|
@@ -29,7 +27,7 @@ async function parseToImageBitmap(arrayBuffer, options, url) {
|
|
|
29
27
|
const imagebitmapOptions = options && options.imagebitmap;
|
|
30
28
|
return await safeCreateImageBitmap(blob, imagebitmapOptions);
|
|
31
29
|
}
|
|
32
|
-
exports.
|
|
30
|
+
exports.parseToImageBitmap = parseToImageBitmap;
|
|
33
31
|
/**
|
|
34
32
|
* Safely creates an imageBitmap with options
|
|
35
33
|
* *
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ImageLoaderOptions } from '../../image-loader';
|
|
2
|
-
export
|
|
2
|
+
export declare function parseToImage(arrayBuffer: ArrayBuffer, options: ImageLoaderOptions, url?: string): Promise<HTMLImageElement>;
|
|
3
3
|
export declare function loadToImage(url: any, options: any): Promise<HTMLImageElement>;
|
|
4
4
|
//# sourceMappingURL=parse-to-image.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-to-image.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-to-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAI3D,
|
|
1
|
+
{"version":3,"file":"parse-to-image.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-to-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAI3D,wBAAsB,YAAY,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,kBAAkB,EAC3B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAED,wBAAsB,WAAW,CAAC,GAAG,KAAA,EAAE,OAAO,KAAA,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyBzE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadToImage = void 0;
|
|
3
|
+
exports.loadToImage = exports.parseToImage = void 0;
|
|
4
4
|
const svg_utils_1 = require("./svg-utils");
|
|
5
5
|
// Parses html image from array buffer
|
|
6
6
|
async function parseToImage(arrayBuffer, options, url) {
|
|
@@ -19,7 +19,7 @@ async function parseToImage(arrayBuffer, options, url) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
exports.
|
|
22
|
+
exports.parseToImage = parseToImage;
|
|
23
23
|
async function loadToImage(url, options) {
|
|
24
24
|
const image = new Image();
|
|
25
25
|
image.src = url;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ImageLoaderOptions } from '../../image-loader';
|
|
2
2
|
import type { ImageDataType } from '../../types';
|
|
3
|
-
export
|
|
3
|
+
export declare function parseToNodeImage(arrayBuffer: ArrayBuffer, options: ImageLoaderOptions): Promise<ImageDataType>;
|
|
4
4
|
//# sourceMappingURL=parse-to-node-image.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-to-node-image.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-to-node-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAkB/C,
|
|
1
|
+
{"version":3,"file":"parse-to-node-image.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-to-node-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAkB/C,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,aAAa,CAAC,CASxB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseToNodeImage = void 0;
|
|
3
4
|
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
4
5
|
const binary_image_api_1 = require("../category-api/binary-image-api");
|
|
5
6
|
// Use polyfills if installed to parsed image using get-pixels
|
|
@@ -11,4 +12,4 @@ async function parseToNodeImage(arrayBuffer, options) {
|
|
|
11
12
|
// @ts-expect-error TODO should we throw error in this case?
|
|
12
13
|
return await _parseImageNode(arrayBuffer, mimeType);
|
|
13
14
|
}
|
|
14
|
-
exports.
|
|
15
|
+
exports.parseToNodeImage = parseToNodeImage;
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.getMipLevels = exports.getImageUrls = exports.loadImage = void 0;
|
|
7
4
|
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
8
|
-
const parse_image_1 =
|
|
5
|
+
const parse_image_1 = require("../parsers/parse-image");
|
|
9
6
|
const parsed_image_api_1 = require("../category-api/parsed-image-api");
|
|
10
7
|
const generate_url_1 = require("./generate-url");
|
|
11
8
|
const deep_load_1 = require("./deep-load");
|
|
12
9
|
async function loadImage(getUrl, options = {}) {
|
|
13
10
|
const imageUrls = await getImageUrls(getUrl, options);
|
|
14
|
-
return await (0, deep_load_1.deepLoad)(imageUrls, parse_image_1.
|
|
11
|
+
return await (0, deep_load_1.deepLoad)(imageUrls, parse_image_1.parseImage, options);
|
|
15
12
|
}
|
|
16
13
|
exports.loadImage = loadImage;
|
|
17
14
|
async function getImageUrls(getUrl, options, urlOptions = {}) {
|
|
@@ -26,7 +23,7 @@ async function getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions) {
|
|
|
26
23
|
// If no mip levels supplied, we need to load the level 0 image and calculate based on size
|
|
27
24
|
if (mipLevels === 'auto') {
|
|
28
25
|
const url = (0, generate_url_1.generateUrl)(getUrl, options, { ...urlOptions, lod: 0 });
|
|
29
|
-
const image = await (0, deep_load_1.shallowLoad)(url, parse_image_1.
|
|
26
|
+
const image = await (0, deep_load_1.shallowLoad)(url, parse_image_1.parseImage, options);
|
|
30
27
|
const { width, height } = (0, parsed_image_api_1.getImageSize)(image);
|
|
31
28
|
mipLevels = getMipLevels({ width, height });
|
|
32
29
|
// TODO - push image and make `deepLoad` pass through non-url values, avoid loading twice?
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/images",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.23",
|
|
4
4
|
"description": "Framework-independent loaders and writers for images (PNG, JPG, ...)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"build-bundle": "esbuild src/bundle.ts --outfile=dist/dist.min.js --bundle --minify --sourcemap"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@loaders.gl/loader-utils": "4.0.0-alpha.
|
|
35
|
+
"@loaders.gl/loader-utils": "4.0.0-alpha.23"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "e212f2a0c0e342f7cb65ce84fa2ff39f64b7d94b",
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/get-pixels": "^3.3.2"
|
|
40
40
|
}
|
package/src/image-loader.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
|
2
2
|
import type {ImageType} from './types';
|
|
3
3
|
// import type { ImageType } from '@loaders.gl/schema';
|
|
4
4
|
import {VERSION} from './lib/utils/version';
|
|
5
|
-
import parseImage from './lib/parsers/parse-image';
|
|
5
|
+
import {parseImage} from './lib/parsers/parse-image';
|
|
6
6
|
import {getBinaryImageMetadata} from './lib/category-api/binary-image-api';
|
|
7
7
|
|
|
8
8
|
const EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'];
|
|
@@ -4,13 +4,13 @@ import type {ImageType} from '../../types';
|
|
|
4
4
|
import type {ImageLoaderOptions} from '../../image-loader';
|
|
5
5
|
import {isImageTypeSupported, getDefaultImageType} from '../category-api/image-type';
|
|
6
6
|
import {getImageData} from '../category-api/parsed-image-api';
|
|
7
|
-
import parseToImage from './parse-to-image';
|
|
8
|
-
import parseToImageBitmap from './parse-to-image-bitmap';
|
|
9
|
-
import parseToNodeImage from './parse-to-node-image';
|
|
7
|
+
import {parseToImage} from './parse-to-image';
|
|
8
|
+
import {parseToImageBitmap} from './parse-to-image-bitmap';
|
|
9
|
+
import {parseToNodeImage} from './parse-to-node-image';
|
|
10
10
|
|
|
11
11
|
// Parse to platform defined image type (data on node, ImageBitmap or HTMLImage on browser)
|
|
12
12
|
// eslint-disable-next-line complexity
|
|
13
|
-
export
|
|
13
|
+
export async function parseImage(
|
|
14
14
|
arrayBuffer: ArrayBuffer,
|
|
15
15
|
options?: ImageLoaderOptions,
|
|
16
16
|
context?: LoaderContext
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type {ImageLoaderOptions} from '../../image-loader';
|
|
2
2
|
import {isSVG, getBlob} from './svg-utils';
|
|
3
|
-
import parseToImage from './parse-to-image';
|
|
3
|
+
import {parseToImage} from './parse-to-image';
|
|
4
4
|
|
|
5
5
|
const EMPTY_OBJECT = {};
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ let imagebitmapOptionsSupported = true;
|
|
|
13
13
|
*
|
|
14
14
|
* TODO - createImageBitmap supports source rect (5 param overload), pass through?
|
|
15
15
|
*/
|
|
16
|
-
export
|
|
16
|
+
export async function parseToImageBitmap(
|
|
17
17
|
arrayBuffer: ArrayBuffer,
|
|
18
18
|
options: ImageLoaderOptions,
|
|
19
19
|
url?: string
|
|
@@ -2,7 +2,7 @@ import type {ImageLoaderOptions} from '../../image-loader';
|
|
|
2
2
|
import {getBlobOrSVGDataUrl} from './svg-utils';
|
|
3
3
|
|
|
4
4
|
// Parses html image from array buffer
|
|
5
|
-
export
|
|
5
|
+
export async function parseToImage(
|
|
6
6
|
arrayBuffer: ArrayBuffer,
|
|
7
7
|
options: ImageLoaderOptions,
|
|
8
8
|
url?: string
|
|
@@ -17,7 +17,7 @@ type NDArray = {
|
|
|
17
17
|
type ParseImageNode = (arrayBuffer: ArrayBuffer, mimeType: string) => Promise<NDArray>;
|
|
18
18
|
|
|
19
19
|
// Use polyfills if installed to parsed image using get-pixels
|
|
20
|
-
export
|
|
20
|
+
export async function parseToNodeImage(
|
|
21
21
|
arrayBuffer: ArrayBuffer,
|
|
22
22
|
options: ImageLoaderOptions
|
|
23
23
|
): Promise<ImageDataType> {
|