@flighthq/textureatlas 0.5.1-next.1069.554a2ac → 0.5.1-next.1201.9b49dee
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/README.md +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/textureAtlasFrom.d.ts +5 -8
- package/dist/textureAtlasFrom.d.ts.map +1 -1
- package/dist/textureAtlasFrom.js +9 -24
- package/dist/textureAtlasFrom.js.map +1 -1
- package/package.json +7 -7
- package/src/textureAtlas.test.ts +15 -1
- package/src/textureAtlasFrom.test.ts +30 -72
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/textureatlas`. The `
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/textureatlas@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/textureatlas@0.5.1-next.1201.9b49dee](https://github.com/flighthq/flight/tree/9b49dee3f22f6b2838c3d237edcc77bca65734f2/packages/textureatlas)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/9b49dee3f22f6b2838c3d237edcc77bca65734f2/LICENSE.md)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { addTextureAtlasRegion, addTextureAtlasRegionRectangle, addTextureAtlasRegionCorners, addTextureAtlasRegionVector2, areTextureAtlasGuardsEnabled, buildTextureAtlasRegionIndex, clearTextureAtlasRegions, createTextureAtlas,
|
|
1
|
+
export { addTextureAtlasRegion, addTextureAtlasRegionRectangle, addTextureAtlasRegionCorners, addTextureAtlasRegionVector2, areTextureAtlasGuardsEnabled, buildTextureAtlasRegionIndex, clearTextureAtlasRegions, createTextureAtlas, createTextureAtlasFromImageResource, createTextureAtlasFromGrid, createTextureAtlasRegion, disposeTextureAtlas, disableTextureAtlasGuards, enableTextureAtlasGuards, explainTextureAtlasRegionTexture, getTextureAtlasByteSize, getTextureAtlasRegionById, getTextureAtlasRegionByName, getTextureAtlasRegionByOrdinal, getTextureAtlasRegionCount, getTextureAtlasRegionFrame, getTextureAtlasRegionOrdinal, getTextureAtlasRegionSequence, getTextureAtlasRegionTexture, getTextureAtlasRegionUv, getTextureAtlasRegionUvQuad, hasTextureAtlasRegion, loadTextureAtlasFromBase64, loadTextureAtlasFromBlob, loadTextureAtlasFromBytes, loadTextureAtlasFromUrl, removeTextureAtlasRegion, setTextureAtlasRegion, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,mCAAmC,EACnC,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAC5B,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { addTextureAtlasRegion, addTextureAtlasRegionRectangle, addTextureAtlasRegionCorners, addTextureAtlasRegionVector2, areTextureAtlasGuardsEnabled, buildTextureAtlasRegionIndex, clearTextureAtlasRegions, createTextureAtlas,
|
|
1
|
+
export { addTextureAtlasRegion, addTextureAtlasRegionRectangle, addTextureAtlasRegionCorners, addTextureAtlasRegionVector2, areTextureAtlasGuardsEnabled, buildTextureAtlasRegionIndex, clearTextureAtlasRegions, createTextureAtlas, createTextureAtlasFromImageResource, createTextureAtlasFromGrid, createTextureAtlasRegion, disposeTextureAtlas, disableTextureAtlasGuards, enableTextureAtlasGuards, explainTextureAtlasRegionTexture, getTextureAtlasByteSize, getTextureAtlasRegionById, getTextureAtlasRegionByName, getTextureAtlasRegionByOrdinal, getTextureAtlasRegionCount, getTextureAtlasRegionFrame, getTextureAtlasRegionOrdinal, getTextureAtlasRegionSequence, getTextureAtlasRegionTexture, getTextureAtlasRegionUv, getTextureAtlasRegionUvQuad, hasTextureAtlasRegion, loadTextureAtlasFromBase64, loadTextureAtlasFromBlob, loadTextureAtlasFromBytes, loadTextureAtlasFromUrl, removeTextureAtlasRegion, setTextureAtlasRegion, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,mCAAmC,EACnC,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAC5B,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function createTextureAtlasFromCanvas(canvas: HTMLCanvasElement): TextureAtlas;
|
|
3
|
-
export declare function createTextureAtlasFromImageBitmap(bitmap: ImageBitmap): TextureAtlas;
|
|
4
|
-
export declare function createTextureAtlasFromImageElement(img: HTMLImageElement): TextureAtlas;
|
|
1
|
+
import type { HostImageProvider, ImageResource, TextureAtlas } from '@flighthq/types/contract';
|
|
5
2
|
export declare function createTextureAtlasFromImageResource(resource: ImageResource): TextureAtlas;
|
|
6
|
-
export declare function loadTextureAtlasFromBase64(
|
|
7
|
-
export declare function loadTextureAtlasFromBlob(
|
|
8
|
-
export declare function loadTextureAtlasFromBytes(
|
|
9
|
-
export declare function loadTextureAtlasFromUrl(
|
|
3
|
+
export declare function loadTextureAtlasFromBase64(hostImage: Readonly<HostImageProvider>, base64: string, mimeType: string, signal?: AbortSignal): Promise<TextureAtlas>;
|
|
4
|
+
export declare function loadTextureAtlasFromBlob(hostImage: Readonly<HostImageProvider>, blob: Blob, signal?: AbortSignal): Promise<TextureAtlas>;
|
|
5
|
+
export declare function loadTextureAtlasFromBytes(hostImage: Readonly<HostImageProvider>, bytes: Uint8Array, mimeType?: string, signal?: AbortSignal): Promise<TextureAtlas>;
|
|
6
|
+
export declare function loadTextureAtlasFromUrl(hostImage: Readonly<HostImageProvider>, url: string, crossOrigin?: 'anonymous' | 'use-credentials', signal?: AbortSignal): Promise<TextureAtlas>;
|
|
10
7
|
//# sourceMappingURL=textureAtlasFrom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textureAtlasFrom.d.ts","sourceRoot":"","sources":["../src/textureAtlasFrom.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"textureAtlasFrom.d.ts","sourceRoot":"","sources":["../src/textureAtlasFrom.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAI/F,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,aAAa,GAAG,YAAY,CAEzF;AAED,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACtC,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACtC,KAAK,EAAE,UAAU,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACtC,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,WAAW,GAAG,iBAAiB,EAC7C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAEvB"}
|
package/dist/textureAtlasFrom.js
CHANGED
|
@@ -1,34 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { loadImageResourceFromBase64, loadImageResourceFromBlob, loadImageResourceFromBytes, loadImageResourceFromUrl, } from '@flighthq/image/contract';
|
|
2
2
|
import { createTexture } from '@flighthq/texture/contract';
|
|
3
3
|
import { createTextureAtlas } from './textureAtlas';
|
|
4
|
-
export function createTextureAtlasFromCanvas(canvas) {
|
|
5
|
-
return createTextureAtlas({
|
|
6
|
-
texture: createTexture({ dimension: '2d', source: createImageResourceFromCanvas(canvas) }),
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
export function createTextureAtlasFromImageBitmap(bitmap) {
|
|
10
|
-
return createTextureAtlas({
|
|
11
|
-
texture: createTexture({ dimension: '2d', source: createImageResourceFromImageBitmap(bitmap) }),
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
export function createTextureAtlasFromImageElement(img) {
|
|
15
|
-
return createTextureAtlas({
|
|
16
|
-
texture: createTexture({ dimension: '2d', source: createImageResourceFromImageElement(img) }),
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
4
|
export function createTextureAtlasFromImageResource(resource) {
|
|
20
5
|
return createTextureAtlas({ texture: createTexture({ dimension: '2d', source: resource }) });
|
|
21
6
|
}
|
|
22
|
-
export async function loadTextureAtlasFromBase64(
|
|
23
|
-
return createTextureAtlasFromImageResource(await loadImageResourceFromBase64(
|
|
7
|
+
export async function loadTextureAtlasFromBase64(hostImage, base64, mimeType, signal) {
|
|
8
|
+
return createTextureAtlasFromImageResource(await loadImageResourceFromBase64(hostImage, base64, mimeType, signal));
|
|
24
9
|
}
|
|
25
|
-
export async function loadTextureAtlasFromBlob(
|
|
26
|
-
return createTextureAtlasFromImageResource(await loadImageResourceFromBlob(
|
|
10
|
+
export async function loadTextureAtlasFromBlob(hostImage, blob, signal) {
|
|
11
|
+
return createTextureAtlasFromImageResource(await loadImageResourceFromBlob(hostImage, blob, signal));
|
|
27
12
|
}
|
|
28
|
-
export async function loadTextureAtlasFromBytes(
|
|
29
|
-
return createTextureAtlasFromImageResource(await loadImageResourceFromBytes(
|
|
13
|
+
export async function loadTextureAtlasFromBytes(hostImage, bytes, mimeType, signal) {
|
|
14
|
+
return createTextureAtlasFromImageResource(await loadImageResourceFromBytes(hostImage, bytes, mimeType, signal));
|
|
30
15
|
}
|
|
31
|
-
export async function loadTextureAtlasFromUrl(
|
|
32
|
-
return createTextureAtlasFromImageResource(await loadImageResourceFromUrl(
|
|
16
|
+
export async function loadTextureAtlasFromUrl(hostImage, url, crossOrigin, signal) {
|
|
17
|
+
return createTextureAtlasFromImageResource(await loadImageResourceFromUrl(hostImage, url, crossOrigin, signal));
|
|
33
18
|
}
|
|
34
19
|
//# sourceMappingURL=textureAtlasFrom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textureAtlasFrom.js","sourceRoot":"","sources":["../src/textureAtlasFrom.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"textureAtlasFrom.js","sourceRoot":"","sources":["../src/textureAtlasFrom.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,UAAU,mCAAmC,CAAC,QAAuB;IACzE,OAAO,kBAAkB,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,SAAsC,EACtC,MAAc,EACd,QAAgB,EAChB,MAAoB;IAEpB,OAAO,mCAAmC,CAAC,MAAM,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACrH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,SAAsC,EACtC,IAAU,EACV,MAAoB;IAEpB,OAAO,mCAAmC,CAAC,MAAM,yBAAyB,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAsC,EACtC,KAAiB,EACjB,QAAiB,EACjB,MAAoB;IAEpB,OAAO,mCAAmC,CAAC,MAAM,0BAA0B,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACnH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAsC,EACtC,GAAW,EACX,WAA6C,EAC7C,MAAoB;IAEpB,OAAO,mCAAmC,CAAC,MAAM,wBAAwB,CAAC,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AAClH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/textureatlas",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.1201.9b49dee",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/entity": "0.5.1-next.
|
|
42
|
-
"@flighthq/geometry": "0.5.1-next.
|
|
43
|
-
"@flighthq/image": "0.5.1-next.
|
|
44
|
-
"@flighthq/log": "0.5.1-next.
|
|
45
|
-
"@flighthq/texture": "0.5.1-next.
|
|
46
|
-
"@flighthq/types": "0.5.1-next.
|
|
41
|
+
"@flighthq/entity": "0.5.1-next.1201.9b49dee",
|
|
42
|
+
"@flighthq/geometry": "0.5.1-next.1201.9b49dee",
|
|
43
|
+
"@flighthq/image": "0.5.1-next.1201.9b49dee",
|
|
44
|
+
"@flighthq/log": "0.5.1-next.1201.9b49dee",
|
|
45
|
+
"@flighthq/texture": "0.5.1-next.1201.9b49dee",
|
|
46
|
+
"@flighthq/types": "0.5.1-next.1201.9b49dee"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"typescript": "^5.3.0"
|
package/src/textureAtlas.test.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
createImageResource,
|
|
3
|
+
registerTestImageDimensionResolver,
|
|
4
|
+
unregisterTestImageDimensionResolver,
|
|
5
|
+
} from '@flighthq/image/contract';
|
|
2
6
|
import { createTexture } from '@flighthq/texture/contract';
|
|
3
7
|
import type { Bitmap, TextureAtlas, TextureAtlasRegion } from '@flighthq/types/contract';
|
|
4
8
|
import { BitmapTextureSourceKind, TextureAtlasRotation } from '@flighthq/types/contract';
|
|
@@ -10,6 +14,16 @@ import {
|
|
|
10
14
|
initializeTextureAtlas,
|
|
11
15
|
} from './textureAtlas';
|
|
12
16
|
|
|
17
|
+
// A test that wraps a host handle supplies the host: the resource measures through the registered
|
|
18
|
+
// resolver, and clearing after each test keeps this file from covering for another's missing one.
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
registerTestImageDimensionResolver();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
afterEach(() => {
|
|
24
|
+
unregisterTestImageDimensionResolver();
|
|
25
|
+
});
|
|
26
|
+
|
|
13
27
|
function createTextureAtlasRegionForTest(): TextureAtlasRegion {
|
|
14
28
|
return {
|
|
15
29
|
height: 1,
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
createImageResource,
|
|
3
|
+
registerTestImageDimensionResolver,
|
|
4
|
+
unregisterTestImageDimensionResolver,
|
|
5
|
+
} from '@flighthq/image/contract';
|
|
2
6
|
import { getTextureSource } from '@flighthq/texture/contract';
|
|
3
|
-
import type {
|
|
7
|
+
import type { HostImageProvider, ImageResource } from '@flighthq/types/contract';
|
|
4
8
|
import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
5
9
|
|
|
6
10
|
import {
|
|
7
|
-
createTextureAtlasFromCanvas,
|
|
8
|
-
createTextureAtlasFromImageBitmap,
|
|
9
|
-
createTextureAtlasFromImageElement,
|
|
10
11
|
createTextureAtlasFromImageResource,
|
|
11
12
|
loadTextureAtlasFromBase64,
|
|
12
13
|
loadTextureAtlasFromBlob,
|
|
@@ -14,7 +15,15 @@ import {
|
|
|
14
15
|
loadTextureAtlasFromUrl,
|
|
15
16
|
} from './textureAtlasFrom';
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
registerTestImageDimensionResolver();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
unregisterTestImageDimensionResolver();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
function createTestImageBackend(): HostImageProvider {
|
|
18
27
|
return {
|
|
19
28
|
[EntityRuntimeKey]: undefined,
|
|
20
29
|
async loadImageFromUrl(url, crossOrigin, signal): Promise<ImageResource> {
|
|
@@ -23,12 +32,14 @@ function createTestImageBackend(): ImageBackend {
|
|
|
23
32
|
if (crossOrigin !== undefined) img.crossOrigin = crossOrigin;
|
|
24
33
|
img.src = url;
|
|
25
34
|
await img.decode();
|
|
26
|
-
return
|
|
35
|
+
return createImageResource(img);
|
|
27
36
|
},
|
|
28
37
|
};
|
|
29
38
|
}
|
|
30
39
|
|
|
31
|
-
const host:
|
|
40
|
+
const host: { readonly graphics: { readonly image: HostImageProvider } } = {
|
|
41
|
+
graphics: { image: createTestImageBackend() },
|
|
42
|
+
} as { readonly graphics: { readonly image: HostImageProvider } };
|
|
32
43
|
|
|
33
44
|
beforeEach(() => {
|
|
34
45
|
HTMLImageElement.prototype.decode = vi.fn().mockResolvedValue(undefined);
|
|
@@ -39,64 +50,9 @@ afterEach(() => {
|
|
|
39
50
|
delete (HTMLImageElement.prototype as Partial<HTMLImageElement>).decode;
|
|
40
51
|
});
|
|
41
52
|
|
|
42
|
-
describe('createTextureAtlasFromCanvas', () => {
|
|
43
|
-
it('wraps a canvas with correct dimensions', () => {
|
|
44
|
-
const canvas = document.createElement('canvas');
|
|
45
|
-
canvas.width = 320;
|
|
46
|
-
canvas.height = 240;
|
|
47
|
-
const atlas = createTextureAtlasFromCanvas(canvas);
|
|
48
|
-
|
|
49
|
-
expect((getTextureSource(atlas.texture!) as ImageResource | null)?.source).toBe(canvas);
|
|
50
|
-
expect(getTextureSource(atlas.texture!)?.width).toBe(320);
|
|
51
|
-
expect(getTextureSource(atlas.texture!)?.height).toBe(240);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('starts with an empty regions array', () => {
|
|
55
|
-
const canvas = document.createElement('canvas');
|
|
56
|
-
expect(createTextureAtlasFromCanvas(canvas).regions).toHaveLength(0);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('returns a new object each call', () => {
|
|
60
|
-
const canvas = document.createElement('canvas');
|
|
61
|
-
expect(createTextureAtlasFromCanvas(canvas)).not.toBe(createTextureAtlasFromCanvas(canvas));
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
describe('createTextureAtlasFromImageBitmap', () => {
|
|
66
|
-
it('wraps an ImageBitmap with correct dimensions', () => {
|
|
67
|
-
const bitmap = { width: 64, height: 128, close: () => {} } as ImageBitmap;
|
|
68
|
-
const atlas = createTextureAtlasFromImageBitmap(bitmap);
|
|
69
|
-
|
|
70
|
-
expect((getTextureSource(atlas.texture!) as ImageResource | null)?.source).toBe(bitmap);
|
|
71
|
-
expect(getTextureSource(atlas.texture!)?.width).toBe(64);
|
|
72
|
-
expect(getTextureSource(atlas.texture!)?.height).toBe(128);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
it('returns a new object each call', () => {
|
|
76
|
-
const bitmap = { width: 1, height: 1, close: () => {} } as ImageBitmap;
|
|
77
|
-
expect(createTextureAtlasFromImageBitmap(bitmap)).not.toBe(createTextureAtlasFromImageBitmap(bitmap));
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
describe('createTextureAtlasFromImageElement', () => {
|
|
82
|
-
it('wraps an HTMLImageElement with correct dimensions', () => {
|
|
83
|
-
const img = { width: 200, height: 100 } as HTMLImageElement;
|
|
84
|
-
const atlas = createTextureAtlasFromImageElement(img);
|
|
85
|
-
|
|
86
|
-
expect((getTextureSource(atlas.texture!) as ImageResource | null)?.source).toBe(img);
|
|
87
|
-
expect(getTextureSource(atlas.texture!)?.width).toBe(200);
|
|
88
|
-
expect(getTextureSource(atlas.texture!)?.height).toBe(100);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
it('returns a new object each call', () => {
|
|
92
|
-
const img = document.createElement('img');
|
|
93
|
-
expect(createTextureAtlasFromImageElement(img)).not.toBe(createTextureAtlasFromImageElement(img));
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
|
|
97
53
|
describe('createTextureAtlasFromImageResource', () => {
|
|
98
54
|
it('uses the provided ImageResource as the atlas image', () => {
|
|
99
|
-
const source =
|
|
55
|
+
const source = createImageResource({ width: 128, height: 64 } as HTMLImageElement);
|
|
100
56
|
const atlas = createTextureAtlasFromImageResource(source);
|
|
101
57
|
|
|
102
58
|
expect(getTextureSource(atlas.texture!)).toBe(source);
|
|
@@ -105,19 +61,19 @@ describe('createTextureAtlasFromImageResource', () => {
|
|
|
105
61
|
});
|
|
106
62
|
|
|
107
63
|
it('starts with an empty regions array', () => {
|
|
108
|
-
const source =
|
|
64
|
+
const source = createImageResource({ width: 1, height: 1 } as HTMLImageElement);
|
|
109
65
|
expect(createTextureAtlasFromImageResource(source).regions).toHaveLength(0);
|
|
110
66
|
});
|
|
111
67
|
|
|
112
68
|
it('returns a new object each call', () => {
|
|
113
|
-
const source =
|
|
69
|
+
const source = createImageResource({ width: 1, height: 1 } as HTMLImageElement);
|
|
114
70
|
expect(createTextureAtlasFromImageResource(source)).not.toBe(createTextureAtlasFromImageResource(source));
|
|
115
71
|
});
|
|
116
72
|
});
|
|
117
73
|
|
|
118
74
|
describe('loadTextureAtlasFromBase64', () => {
|
|
119
75
|
it('resolves to a TextureAtlas with a non-null image', async () => {
|
|
120
|
-
const atlas = await loadTextureAtlasFromBase64(host, 'abc123', 'image/png');
|
|
76
|
+
const atlas = await loadTextureAtlasFromBase64(host.graphics.image, 'abc123', 'image/png');
|
|
121
77
|
expect((getTextureSource(atlas.texture!) as ImageResource | null)?.source).toBeInstanceOf(HTMLImageElement);
|
|
122
78
|
});
|
|
123
79
|
});
|
|
@@ -125,7 +81,7 @@ describe('loadTextureAtlasFromBase64', () => {
|
|
|
125
81
|
describe('loadTextureAtlasFromBlob', () => {
|
|
126
82
|
it('resolves to a TextureAtlas with a non-null image', async () => {
|
|
127
83
|
const blob = new Blob([], { type: 'image/png' });
|
|
128
|
-
const atlas = await loadTextureAtlasFromBlob(host, blob);
|
|
84
|
+
const atlas = await loadTextureAtlasFromBlob(host.graphics.image, blob);
|
|
129
85
|
expect((getTextureSource(atlas.texture!) as ImageResource | null)?.source).toBeInstanceOf(HTMLImageElement);
|
|
130
86
|
});
|
|
131
87
|
});
|
|
@@ -133,7 +89,7 @@ describe('loadTextureAtlasFromBlob', () => {
|
|
|
133
89
|
describe('loadTextureAtlasFromBytes', () => {
|
|
134
90
|
it('resolves to a TextureAtlas with a non-null image', async () => {
|
|
135
91
|
const bytes = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0, 0, 0, 0, 0, 0, 0, 0]);
|
|
136
|
-
const atlas = await loadTextureAtlasFromBytes(host, bytes);
|
|
92
|
+
const atlas = await loadTextureAtlasFromBytes(host.graphics.image, bytes);
|
|
137
93
|
|
|
138
94
|
expect(getTextureSource(atlas.texture!)).not.toBeNull();
|
|
139
95
|
expect((getTextureSource(atlas.texture!) as ImageResource | null)?.source).toBeInstanceOf(HTMLImageElement);
|
|
@@ -141,20 +97,22 @@ describe('loadTextureAtlasFromBytes', () => {
|
|
|
141
97
|
|
|
142
98
|
it('starts with an empty regions array', async () => {
|
|
143
99
|
const bytes = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0, 0, 0, 0, 0, 0, 0, 0]);
|
|
144
|
-
const atlas = await loadTextureAtlasFromBytes(host, bytes);
|
|
100
|
+
const atlas = await loadTextureAtlasFromBytes(host.graphics.image, bytes);
|
|
145
101
|
|
|
146
102
|
expect(atlas.regions).toHaveLength(0);
|
|
147
103
|
});
|
|
148
104
|
|
|
149
105
|
it('throws when mime type cannot be detected', async () => {
|
|
150
106
|
const bytes = new Uint8Array(16);
|
|
151
|
-
await expect(loadTextureAtlasFromBytes(host, bytes)).rejects.toThrow(
|
|
107
|
+
await expect(loadTextureAtlasFromBytes(host.graphics.image, bytes)).rejects.toThrow(
|
|
108
|
+
'Unable to determine image type',
|
|
109
|
+
);
|
|
152
110
|
});
|
|
153
111
|
});
|
|
154
112
|
|
|
155
113
|
describe('loadTextureAtlasFromUrl', () => {
|
|
156
114
|
it('resolves to a TextureAtlas whose image src is an HTMLImageElement', async () => {
|
|
157
|
-
const atlas = await loadTextureAtlasFromUrl(host, 'data:image/png;base64,abc');
|
|
115
|
+
const atlas = await loadTextureAtlasFromUrl(host.graphics.image, 'data:image/png;base64,abc');
|
|
158
116
|
expect((getTextureSource(atlas.texture!) as ImageResource | null)?.source).toBeInstanceOf(HTMLImageElement);
|
|
159
117
|
});
|
|
160
118
|
});
|