@flighthq/spritesheet-formats 0.5.1-next.685.f72fc7f → 0.5.1-next.704.19c91ec
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/asepriteParse.d.ts +3 -13
- package/dist/asepriteParse.d.ts.map +1 -1
- package/dist/asepriteParse.js +6 -21
- package/dist/asepriteParse.js.map +1 -1
- package/dist/asepriteSerialize.d.ts +1 -8
- package/dist/asepriteSerialize.d.ts.map +1 -1
- package/dist/asepriteSerialize.js +0 -8
- package/dist/asepriteSerialize.js.map +1 -1
- package/dist/cocosPlistParse.d.ts +3 -10
- package/dist/cocosPlistParse.d.ts.map +1 -1
- package/dist/cocosPlistParse.js +10 -17
- package/dist/cocosPlistParse.js.map +1 -1
- package/dist/cocosPlistSerialize.d.ts +1 -2
- package/dist/cocosPlistSerialize.d.ts.map +1 -1
- package/dist/cocosPlistSerialize.js.map +1 -1
- package/dist/libgdxAtlasParse.d.ts +2 -9
- package/dist/libgdxAtlasParse.d.ts.map +1 -1
- package/dist/libgdxAtlasParse.js +6 -14
- package/dist/libgdxAtlasParse.js.map +1 -1
- package/dist/spritesheetDetect.d.ts +1 -2
- package/dist/spritesheetDetect.d.ts.map +1 -1
- package/dist/spritesheetDetect.js.map +1 -1
- package/dist/starlingParse.d.ts +3 -11
- package/dist/starlingParse.d.ts.map +1 -1
- package/dist/starlingParse.js +8 -15
- package/dist/starlingParse.js.map +1 -1
- package/dist/starlingSerialize.d.ts +1 -6
- package/dist/starlingSerialize.d.ts.map +1 -1
- package/dist/starlingSerialize.js +0 -6
- package/dist/starlingSerialize.js.map +1 -1
- package/dist/texturePackerParse.d.ts +3 -10
- package/dist/texturePackerParse.d.ts.map +1 -1
- package/dist/texturePackerParse.js +8 -21
- package/dist/texturePackerParse.js.map +1 -1
- package/dist/texturePackerSerialize.d.ts +1 -8
- package/dist/texturePackerSerialize.d.ts.map +1 -1
- package/dist/texturePackerSerialize.js +0 -8
- package/dist/texturePackerSerialize.js.map +1 -1
- package/package.json +8 -7
- package/src/asepriteParse.test.ts +24 -2
- package/src/cocosPlistParse.test.ts +40 -0
- package/src/libgdxAtlasParse.test.ts +26 -0
- package/src/starlingParse.test.ts +12 -2
- package/src/texturePackerParse.test.ts +24 -2
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/spritesheet-formats`
|
|
|
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/spritesheet-formats@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/spritesheet-formats@0.5.1-next.704.19c91ec](https://github.com/flighthq/flight/tree/19c91ec3e569d6b3b471682726465a79fba9f8cb/packages/spritesheet-formats)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/19c91ec3e569d6b3b471682726465a79fba9f8cb/LICENSE.md)
|
package/dist/asepriteParse.d.ts
CHANGED
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
import type { SpritesheetData } from '@flighthq/
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
* Single-pass: no intermediate document object is allocated.
|
|
6
|
-
* Use `parseAsepriteSpritesheetDocument` instead when you need round-trip serialisation.
|
|
7
|
-
*
|
|
8
|
-
* Per-frame durations from Aseprite are preserved in `animation.frameDurations`
|
|
9
|
-
* when frames within a tag have varying durations. */
|
|
10
|
-
export declare function parseAsepriteSpritesheet(json: string): SpritesheetData;
|
|
11
|
-
/** Parse an Aseprite JSON string and preserve the full document for round-trip
|
|
12
|
-
* serialisation via `serializeAsepriteSpritesheet`. */
|
|
13
|
-
export declare function parseAsepriteSpritesheetDocument(json: string): AsepriteParsed;
|
|
1
|
+
import type { AsepriteParsed, ImportDiagnostic, SpritesheetData } from '@flighthq/types/contract';
|
|
2
|
+
export declare function parseAsepriteSpritesheet(json: string, diagnostics?: ImportDiagnostic[]): SpritesheetData;
|
|
3
|
+
export declare function parseAsepriteSpritesheetDocument(json: string, diagnostics?: ImportDiagnostic[]): AsepriteParsed;
|
|
14
4
|
//# sourceMappingURL=asepriteParse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asepriteParse.d.ts","sourceRoot":"","sources":["../src/asepriteParse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"asepriteParse.d.ts","sourceRoot":"","sources":["../src/asepriteParse.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAKV,cAAc,EACd,gBAAgB,EAEhB,eAAe,EAGhB,MAAM,0BAA0B,CAAC;AA0ElC,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,eAAe,CAcxG;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,cAAc,CAc/G"}
|
package/dist/asepriteParse.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
import { reportImportDiagnostic } from '@flighthq/importdiagnostics/contract';
|
|
1
2
|
import { createSpritesheetAnimationData, createSpritesheetData, createSpritesheetFrameData, } from '@flighthq/spritesheet/contract';
|
|
2
3
|
import { parseTextureAtlasAsepriteDocument } from '@flighthq/textureatlas-formats/contract';
|
|
3
4
|
import { createTextureAtlas } from '@flighthq/textureatlas/contract';
|
|
4
|
-
|
|
5
|
-
// Maps an atlas region (geometry owned by @flighthq/textureatlas-formats) to a spritesheet frame.
|
|
6
|
-
// Aseprite carries no pivot; per-frame durations are layered on separately from the document.
|
|
5
|
+
import { ImportDiagnosticSeverity } from '@flighthq/types/contract';
|
|
7
6
|
function frameFromRegion(region) {
|
|
8
7
|
return createSpritesheetFrameData({
|
|
9
8
|
height: region.height,
|
|
@@ -67,38 +66,24 @@ function documentToData(doc) {
|
|
|
67
66
|
scale: metaScale(meta),
|
|
68
67
|
});
|
|
69
68
|
}
|
|
70
|
-
|
|
71
|
-
/** Parse an Aseprite JSON string directly to a SpritesheetData.
|
|
72
|
-
*
|
|
73
|
-
* Single-pass: no intermediate document object is allocated.
|
|
74
|
-
* Use `parseAsepriteSpritesheetDocument` instead when you need round-trip serialisation.
|
|
75
|
-
*
|
|
76
|
-
* Per-frame durations from Aseprite are preserved in `animation.frameDurations`
|
|
77
|
-
* when frames within a tag have varying durations. */
|
|
78
|
-
export function parseAsepriteSpritesheet(json) {
|
|
69
|
+
export function parseAsepriteSpritesheet(json, diagnostics) {
|
|
79
70
|
let document;
|
|
80
71
|
try {
|
|
81
72
|
document = JSON.parse(json);
|
|
82
73
|
}
|
|
83
74
|
catch {
|
|
84
|
-
|
|
85
|
-
// throwing an uncaught SyntaxError, matching `parseSpritesheet`'s null-on-unrecognized philosophy and
|
|
86
|
-
// the never-throw importer policy (the XML path returns a data descriptor, never throws).
|
|
75
|
+
reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Reject, 'spritesheet.aseprite.malformed-json', 'parseAsepriteSpritesheet');
|
|
87
76
|
return createSpritesheetData();
|
|
88
77
|
}
|
|
89
78
|
return documentToData(document);
|
|
90
79
|
}
|
|
91
|
-
|
|
92
|
-
* serialisation via `serializeAsepriteSpritesheet`. */
|
|
93
|
-
export function parseAsepriteSpritesheetDocument(json) {
|
|
80
|
+
export function parseAsepriteSpritesheetDocument(json, diagnostics) {
|
|
94
81
|
let document;
|
|
95
82
|
try {
|
|
96
83
|
document = JSON.parse(json);
|
|
97
84
|
}
|
|
98
85
|
catch {
|
|
99
|
-
|
|
100
|
-
// throwing. Empty (not null) keeps this variant's return contract identical to the non-Document sibling
|
|
101
|
-
// parseAsepriteSpritesheet, and the empty document stays serialisable for round-trip.
|
|
86
|
+
reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Reject, 'spritesheet.aseprite.malformed-json', 'parseAsepriteSpritesheetDocument');
|
|
102
87
|
return { data: createSpritesheetData(), document: createEmptyAsepriteDocument() };
|
|
103
88
|
}
|
|
104
89
|
return { data: documentToData(document), document };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asepriteParse.js","sourceRoot":"","sources":["../src/asepriteParse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"asepriteParse.js","sourceRoot":"","sources":["../src/asepriteParse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import type { SpritesheetData } from '@flighthq/
|
|
2
|
-
import type { AsepriteDocument, AsepriteSerializeOptions } from '@flighthq/types/contract';
|
|
3
|
-
/** Serialise a SpritesheetData to an Aseprite JSON string.
|
|
4
|
-
*
|
|
5
|
-
* Pass the `document` returned by `parseAsepriteSpritesheetDocument` to preserve any fields that
|
|
6
|
-
* don't round-trip through the data (app name, layer list, tag colours).
|
|
7
|
-
* Per-frame durations in `animation.frameDurations` are written back to each
|
|
8
|
-
* frame's `duration` field so they survive a reload. */
|
|
1
|
+
import type { AsepriteDocument, AsepriteSerializeOptions, SpritesheetData } from '@flighthq/types/contract';
|
|
9
2
|
export declare function serializeAsepriteSpritesheet(data: Readonly<SpritesheetData>, existing?: Partial<AsepriteDocument>, options?: AsepriteSerializeOptions): string;
|
|
10
3
|
//# sourceMappingURL=asepriteSerialize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asepriteSerialize.d.ts","sourceRoot":"","sources":["../src/asepriteSerialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"asepriteSerialize.d.ts","sourceRoot":"","sources":["../src/asepriteSerialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,gBAAgB,EAGhB,wBAAwB,EACxB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAgFlC,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,EAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EACpC,OAAO,CAAC,EAAE,wBAAwB,GACjC,MAAM,CAWR"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// ─── Internal helpers ────────────────────────────────────────────────────────
|
|
2
1
|
function dataToMeta(data, existing) {
|
|
3
2
|
const tags = data.animations.map((anim, i) => {
|
|
4
3
|
const firstIdx = data.frames.findIndex((f) => f.name === anim.frameNames[0]);
|
|
@@ -66,13 +65,6 @@ function dataToArrayDocument(data, existing) {
|
|
|
66
65
|
}));
|
|
67
66
|
return { frames, meta: dataToMeta(data, existing.meta ?? {}) };
|
|
68
67
|
}
|
|
69
|
-
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
70
|
-
/** Serialise a SpritesheetData to an Aseprite JSON string.
|
|
71
|
-
*
|
|
72
|
-
* Pass the `document` returned by `parseAsepriteSpritesheetDocument` to preserve any fields that
|
|
73
|
-
* don't round-trip through the data (app name, layer list, tag colours).
|
|
74
|
-
* Per-frame durations in `animation.frameDurations` are written back to each
|
|
75
|
-
* frame's `duration` field so they survive a reload. */
|
|
76
68
|
export function serializeAsepriteSpritesheet(data, existing, options) {
|
|
77
69
|
const existingIsArray = existing !== undefined && Array.isArray(existing.frames);
|
|
78
70
|
const variant = options?.variant ?? (existingIsArray ? 'array' : 'hash');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asepriteSerialize.js","sourceRoot":"","sources":["../src/asepriteSerialize.ts"],"names":[],"mappings":"AAWA,
|
|
1
|
+
{"version":3,"file":"asepriteSerialize.js","sourceRoot":"","sources":["../src/asepriteSerialize.ts"],"names":[],"mappings":"AAWA,SAAS,UAAU,CAAC,IAA+B,EAAE,QAA+B;IAClF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACrG,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChG,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,2BAA2B;QAChD,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,UAAU;QACrC,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE;QAC7C,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,CAAC;QACtE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE;QACjD,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,KAAK;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAA6C,EAAE,UAAkB;IACrF,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,KAAK,CAAC;QACnB,KAAK,CAAC,OAAO,KAAK,CAAC;QACnB,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,KAAK;QACjC,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM,CAAC;IACtC,OAAO;QACL,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;QAClE,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE;QAC3D,gBAAgB,EAAE;YAChB,CAAC,EAAE,KAAK,CAAC,MAAM;YACf,CAAC,EAAE,KAAK,CAAC,KAAK;YACd,CAAC,EAAE,KAAK,CAAC,OAAO;YAChB,CAAC,EAAE,KAAK,CAAC,OAAO;SACjB;QACD,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAA+B,EAAE,SAAiB;IAC9E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,SAAS;QACzB,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC;QACxF,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CACzB,IAA+B,EAC/B,QAAuC;IAEvC,MAAM,MAAM,GAAsC,EAAE,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAA+B,EAC/B,QAAwC;IAExC,MAAM,MAAM,GAAyB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,QAAQ,EAAE,KAAK,CAAC,IAAI;QACpB,GAAG,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;KAC/D,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAA+B,EAC/B,QAAoC,EACpC,OAAkC;IAElC,MAAM,eAAe,GAAG,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAE,QAAkC,CAAC,MAAM,CAAC,CAAC;IAC5G,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAEzE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAG,QAA2C,IAAI,EAAE,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAG,QAA0C,IAAI,EAAE,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import type { SpritesheetData } from '@flighthq/
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
* Single-pass: no intermediate document object is allocated.
|
|
6
|
-
* Use `parseCocosPlistSpritesheetDocument` instead when you need round-trip serialisation. */
|
|
7
|
-
export declare function parseCocosPlistSpritesheet(xml: string): SpritesheetData;
|
|
8
|
-
/** Parse a Cocos Creator / Cocos2d-x plist XML atlas string and preserve the full document
|
|
9
|
-
* for round-trip serialisation via `serializeCocosPlistSpritesheet`. */
|
|
10
|
-
export declare function parseCocosPlistSpritesheetDocument(xml: string): CocosPlistParsed;
|
|
1
|
+
import type { CocosPlistParsed, ImportDiagnostic, SpritesheetData } from '@flighthq/types/contract';
|
|
2
|
+
export declare function parseCocosPlistSpritesheet(xml: string, diagnostics?: ImportDiagnostic[]): SpritesheetData;
|
|
3
|
+
export declare function parseCocosPlistSpritesheetDocument(xml: string, diagnostics?: ImportDiagnostic[]): CocosPlistParsed;
|
|
11
4
|
//# sourceMappingURL=cocosPlistParse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cocosPlistParse.d.ts","sourceRoot":"","sources":["../src/cocosPlistParse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cocosPlistParse.d.ts","sourceRoot":"","sources":["../src/cocosPlistParse.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAIV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAGhB,MAAM,0BAA0B,CAAC;AAuKlC,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,eAAe,CAEzG;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAGlH"}
|
package/dist/cocosPlistParse.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { reportImportDiagnostic } from '@flighthq/importdiagnostics/contract';
|
|
1
2
|
import { createSpritesheetData, createSpritesheetFrameData } from '@flighthq/spritesheet/contract';
|
|
3
|
+
import { ImportDiagnosticSeverity } from '@flighthq/types/contract';
|
|
2
4
|
import { parseXmlDocument } from '@flighthq/xml/contract';
|
|
3
|
-
// ─── plist structural helpers ─────────────────────────────────────────────────
|
|
4
|
-
/** Parse a Cocos plist size/offset string of the form "{w,h}" or "{x,y}". */
|
|
5
5
|
function parsePlistPair(s) {
|
|
6
6
|
const m = s.match(/{?\s*([-\d.]+)\s*,\s*([-\d.]+)\s*}?/);
|
|
7
7
|
return [parseFloat(m?.[1] ?? '0'), parseFloat(m?.[2] ?? '0')];
|
|
@@ -38,8 +38,7 @@ function getBoolValue(el) {
|
|
|
38
38
|
function getIntValue(el) {
|
|
39
39
|
return parseInt(el?.text ?? '0', 10);
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
function parseCocosPlistXml(xml) {
|
|
41
|
+
function parseCocosPlistXml(xml, diagnostics) {
|
|
43
42
|
const root = parseXmlDocument(xml);
|
|
44
43
|
// Locate the root <dict> (may be under <plist>)
|
|
45
44
|
let rootDict = null;
|
|
@@ -75,8 +74,10 @@ function parseCocosPlistXml(xml) {
|
|
|
75
74
|
// Detect format version from available keys
|
|
76
75
|
const hasSpriteFields = fm.has('spriteOffset');
|
|
77
76
|
const hasFrame = fm.has('frame') || fm.has('textureRect');
|
|
78
|
-
if (!hasFrame && !hasSpriteFields)
|
|
77
|
+
if (!hasFrame && !hasSpriteFields) {
|
|
78
|
+
reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Drop, 'spritesheet.cocos-plist.unrecognized-frame', 'parseCocosPlistXml', { frame: frameName });
|
|
79
79
|
continue;
|
|
80
|
+
}
|
|
80
81
|
// Support both old-style (frame) and new-style (textureRect) keys
|
|
81
82
|
const rectStr = getTextValue(fm.get('frame') ?? fm.get('textureRect'));
|
|
82
83
|
const rotated = getBoolValue(fm.get('textureRotated') ?? fm.get('rotated'));
|
|
@@ -105,7 +106,6 @@ function parseCocosPlistXml(xml) {
|
|
|
105
106
|
}
|
|
106
107
|
return { frames, metadata };
|
|
107
108
|
}
|
|
108
|
-
// ─── Internal conversion ─────────────────────────────────────────────────────
|
|
109
109
|
function plistFrameToData(name, pf) {
|
|
110
110
|
const rect = parsePlistRect(pf.frame);
|
|
111
111
|
const [offsetX, offsetY] = parsePlistPair(pf.spriteOffset);
|
|
@@ -140,18 +140,11 @@ function documentToData(doc) {
|
|
|
140
140
|
scale: 1,
|
|
141
141
|
});
|
|
142
142
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
*
|
|
146
|
-
* Single-pass: no intermediate document object is allocated.
|
|
147
|
-
* Use `parseCocosPlistSpritesheetDocument` instead when you need round-trip serialisation. */
|
|
148
|
-
export function parseCocosPlistSpritesheet(xml) {
|
|
149
|
-
return documentToData(parseCocosPlistXml(xml));
|
|
143
|
+
export function parseCocosPlistSpritesheet(xml, diagnostics) {
|
|
144
|
+
return documentToData(parseCocosPlistXml(xml, diagnostics));
|
|
150
145
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
export function parseCocosPlistSpritesheetDocument(xml) {
|
|
154
|
-
const document = parseCocosPlistXml(xml);
|
|
146
|
+
export function parseCocosPlistSpritesheetDocument(xml, diagnostics) {
|
|
147
|
+
const document = parseCocosPlistXml(xml, diagnostics);
|
|
155
148
|
return { data: documentToData(document), document };
|
|
156
149
|
}
|
|
157
150
|
//# sourceMappingURL=cocosPlistParse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cocosPlistParse.js","sourceRoot":"","sources":["../src/cocosPlistParse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cocosPlistParse.js","sourceRoot":"","sources":["../src/cocosPlistParse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { SpritesheetData } from '@flighthq/
|
|
2
|
-
import type { CocosPlistDocument } from '@flighthq/types/contract';
|
|
1
|
+
import type { CocosPlistDocument, SpritesheetData } from '@flighthq/types/contract';
|
|
3
2
|
/** Serialise a SpritesheetData to a Cocos Creator / Cocos2d-x plist XML atlas string.
|
|
4
3
|
*
|
|
5
4
|
* Pass the `document` returned by `parseCocosPlistSpritesheetDocument` to preserve any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cocosPlistSerialize.d.ts","sourceRoot":"","sources":["../src/cocosPlistSerialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"cocosPlistSerialize.d.ts","sourceRoot":"","sources":["../src/cocosPlistSerialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAElB,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAElC;;;gFAGgF;AAChF,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,EAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACrC,MAAM,CAcR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cocosPlistSerialize.js","sourceRoot":"","sources":["../src/cocosPlistSerialize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cocosPlistSerialize.js","sourceRoot":"","sources":["../src/cocosPlistSerialize.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import type { SpritesheetData } from '@flighthq/
|
|
2
|
-
|
|
3
|
-
/** Parse a LibGDX `.atlas` text string directly to a `SpritesheetData`.
|
|
4
|
-
*
|
|
5
|
-
* Single-pass line-by-line parser. Handles single-page and multi-page atlases.
|
|
6
|
-
* `rotate: true` regions are marked as `rotated` (90° clockwise in the atlas).
|
|
7
|
-
* Animations are inferred from the standard `baseName_NNN` frame-naming convention;
|
|
8
|
-
* indexed regions (`index >= 0`) are also grouped into animations. */
|
|
9
|
-
export declare function parseLibgdxAtlasSpritesheet(text: string, options?: LibgdxAtlasParseOptions): SpritesheetData;
|
|
1
|
+
import type { ImportDiagnostic, LibgdxAtlasParseOptions, SpritesheetData } from '@flighthq/types/contract';
|
|
2
|
+
export declare function parseLibgdxAtlasSpritesheet(text: string, options?: LibgdxAtlasParseOptions, diagnostics?: ImportDiagnostic[]): SpritesheetData;
|
|
10
3
|
//# sourceMappingURL=libgdxAtlasParse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libgdxAtlasParse.d.ts","sourceRoot":"","sources":["../src/libgdxAtlasParse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"libgdxAtlasParse.d.ts","sourceRoot":"","sources":["../src/libgdxAtlasParse.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EAEvB,eAAe,EAGhB,MAAM,0BAA0B,CAAC;AA4MlC,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,uBAAuB,EACjC,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAC/B,eAAe,CA+BjB"}
|
package/dist/libgdxAtlasParse.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { reportImportDiagnostic } from '@flighthq/importdiagnostics/contract';
|
|
1
2
|
import { createSpritesheetAnimationData, createSpritesheetData, createSpritesheetFrameData, } from '@flighthq/spritesheet/contract';
|
|
2
3
|
import { parseTextureAtlasLibgdxAtlas } from '@flighthq/textureatlas-formats/contract';
|
|
3
4
|
import { createTextureAtlas } from '@flighthq/textureatlas/contract';
|
|
4
|
-
|
|
5
|
+
import { ImportDiagnosticSeverity } from '@flighthq/types/contract';
|
|
5
6
|
function parseIntPair(value) {
|
|
6
7
|
const parts = value.split(',');
|
|
7
8
|
return [parseInt(parts[0] ?? '0', 10), parseInt(parts[1] ?? '0', 10)];
|
|
@@ -99,7 +100,6 @@ function parseLibgdxAtlas(text) {
|
|
|
99
100
|
else {
|
|
100
101
|
// Region name
|
|
101
102
|
if (currentPage === null) {
|
|
102
|
-
// Malformed: no page seen yet; create a stub page
|
|
103
103
|
currentPage = { filename: '', height: 0, width: 0 };
|
|
104
104
|
pages.push(currentPage);
|
|
105
105
|
}
|
|
@@ -126,7 +126,6 @@ function parseLibgdxAtlas(text) {
|
|
|
126
126
|
}
|
|
127
127
|
return { pages, regions };
|
|
128
128
|
}
|
|
129
|
-
// ─── Internal helpers ─────────────────────────────────────────────────────────
|
|
130
129
|
// Maps an atlas region (geometry owned by @flighthq/textureatlas-formats — incl. libGDX rotate/orig/
|
|
131
130
|
// offset handling and the `name_index` disambiguation for indexed regions) to a spritesheet frame.
|
|
132
131
|
function frameFromRegion(region) {
|
|
@@ -176,23 +175,16 @@ function inferAnimations(frameNames, frameDuration) {
|
|
|
176
175
|
}
|
|
177
176
|
return animations;
|
|
178
177
|
}
|
|
179
|
-
|
|
180
|
-
/** Parse a LibGDX `.atlas` text string directly to a `SpritesheetData`.
|
|
181
|
-
*
|
|
182
|
-
* Single-pass line-by-line parser. Handles single-page and multi-page atlases.
|
|
183
|
-
* `rotate: true` regions are marked as `rotated` (90° clockwise in the atlas).
|
|
184
|
-
* Animations are inferred from the standard `baseName_NNN` frame-naming convention;
|
|
185
|
-
* indexed regions (`index >= 0`) are also grouped into animations. */
|
|
186
|
-
export function parseLibgdxAtlasSpritesheet(text, options) {
|
|
178
|
+
export function parseLibgdxAtlasSpritesheet(text, options, diagnostics) {
|
|
187
179
|
const frameDuration = options?.frameDuration ?? 100;
|
|
188
|
-
// Page metadata (image file + size) is libGDX-specific and not modeled by TextureAtlas, so it is read
|
|
189
|
-
// from the local page parse; the region geometry is delegated to the atlas-formats parser.
|
|
190
180
|
const { pages } = parseLibgdxAtlas(text);
|
|
191
|
-
// Use the first page for top-level image metadata
|
|
192
181
|
const firstPage = pages[0];
|
|
193
182
|
const imageFile = firstPage?.filename ?? '';
|
|
194
183
|
const imageWidth = firstPage?.width ?? 0;
|
|
195
184
|
const imageHeight = firstPage?.height ?? 0;
|
|
185
|
+
if (firstPage !== undefined && firstPage.filename === '') {
|
|
186
|
+
reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Recover, 'spritesheet.libgdx-atlas.missing-page-header', 'parseLibgdxAtlasSpritesheet');
|
|
187
|
+
}
|
|
196
188
|
const regions = parseTextureAtlasLibgdxAtlas(text, createTextureAtlas()).regions;
|
|
197
189
|
const frames = regions.map(frameFromRegion);
|
|
198
190
|
const frameNames = frames.map((f) => f.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libgdxAtlasParse.js","sourceRoot":"","sources":["../src/libgdxAtlasParse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"libgdxAtlasParse.js","sourceRoot":"","sources":["../src/libgdxAtlasParse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { SpritesheetData } from '@flighthq/
|
|
2
|
-
import type { SpritesheetFormatKind, SpritesheetParseOptions } from '@flighthq/types/contract';
|
|
1
|
+
import type { SpritesheetData, SpritesheetFormatKind, SpritesheetParseOptions } from '@flighthq/types/contract';
|
|
3
2
|
/** Detect the format kind of a spritesheet text document.
|
|
4
3
|
*
|
|
5
4
|
* Returns the `SpritesheetFormatKind` of the first registered format whose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spritesheetDetect.d.ts","sourceRoot":"","sources":["../src/spritesheetDetect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"spritesheetDetect.d.ts","sourceRoot":"","sources":["../src/spritesheetDetect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AA2FlC;;;gFAGgF;AAChF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAKlF;AAED;;;;sFAIsF;AACtF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,QAAQ,CAAC;IAC1E,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,KAAK,eAAe,CAAC;CAC5E,CAAC,GAAG,IAAI,CAER;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,IAAI,SAAS,qBAAqB,EAAE,CAI5E;AAED;;;;;4FAK4F;AAC5F,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,qBAAqB,EAClC,OAAO,CAAC,EAAE,uBAAuB,GAChC,eAAe,GAAG,IAAI,CAOxB;AAED;;;;iEAIiE;AACjE,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE;IACL,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,KAAK,eAAe,CAAC;CAC5E,GACA,IAAI,CAEN;AAED,+EAA+E;AAC/E,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAE7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spritesheetDetect.js","sourceRoot":"","sources":["../src/spritesheetDetect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"spritesheetDetect.js","sourceRoot":"","sources":["../src/spritesheetDetect.ts"],"names":[],"mappings":"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"}
|
package/dist/starlingParse.d.ts
CHANGED
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
import type { SpritesheetData } from '@flighthq/
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
* Single-pass: no intermediate document object is allocated.
|
|
6
|
-
* Animations are inferred from the standard `baseName_NNN` frame-naming convention.
|
|
7
|
-
* Use `parseStarlingSpritesheetDocument` instead when you need round-trip serialisation. */
|
|
8
|
-
export declare function parseStarlingSpritesheet(xml: string, options?: StarlingParseOptions): SpritesheetData;
|
|
9
|
-
/** Parse a Starling / Sparrow XML atlas string and preserve the full document
|
|
10
|
-
* for round-trip serialisation via `serializeStarlingSpritesheet`. */
|
|
11
|
-
export declare function parseStarlingSpritesheetDocument(xml: string, options?: StarlingParseOptions): StarlingParsed;
|
|
1
|
+
import type { ImportDiagnostic, SpritesheetData, StarlingParseOptions, StarlingParsed } from '@flighthq/types/contract';
|
|
2
|
+
export declare function parseStarlingSpritesheet(xml: string, options?: StarlingParseOptions, diagnostics?: ImportDiagnostic[]): SpritesheetData;
|
|
3
|
+
export declare function parseStarlingSpritesheetDocument(xml: string, options?: StarlingParseOptions, diagnostics?: ImportDiagnostic[]): StarlingParsed;
|
|
12
4
|
//# sourceMappingURL=starlingParse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"starlingParse.d.ts","sourceRoot":"","sources":["../src/starlingParse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"starlingParse.d.ts","sourceRoot":"","sources":["../src/starlingParse.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EAGf,oBAAoB,EACpB,cAAc,EAGf,MAAM,0BAA0B,CAAC;AAqIlC,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,EAC9B,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAC/B,eAAe,CAEjB;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,EAC9B,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAC/B,cAAc,CAGhB"}
|
package/dist/starlingParse.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { reportImportDiagnostic } from '@flighthq/importdiagnostics/contract';
|
|
1
2
|
import { createSpritesheetAnimationData, createSpritesheetData, createSpritesheetFrameData, } from '@flighthq/spritesheet/contract';
|
|
2
3
|
import { parseTextureAtlasStarlingXml } from '@flighthq/textureatlas-formats/contract';
|
|
3
4
|
import { createTextureAtlas } from '@flighthq/textureatlas/contract';
|
|
4
|
-
|
|
5
|
+
import { ImportDiagnosticSeverity } from '@flighthq/types/contract';
|
|
5
6
|
function parseAttrs(attrs) {
|
|
6
7
|
const result = {};
|
|
7
8
|
const RE = /(\w+)\s*=\s*"([^"]*)"/g;
|
|
@@ -48,7 +49,6 @@ function parseStarlingXml(xml) {
|
|
|
48
49
|
}
|
|
49
50
|
return { imagePath, subTextures };
|
|
50
51
|
}
|
|
51
|
-
// ─── Internal helpers ────────────────────────────────────────────────────────
|
|
52
52
|
// Maps an atlas region (geometry owned by @flighthq/textureatlas-formats — incl. Starling's negated
|
|
53
53
|
// frameX/Y offsets and trim handling) to a spritesheet frame. Starling pivots are authored in source
|
|
54
54
|
// pixels; the spritesheet layer normalizes them to the 0..1 range, so re-divide the atlas's raw pivot
|
|
@@ -104,10 +104,11 @@ function inferAnimations(frameNames, frameDuration) {
|
|
|
104
104
|
}
|
|
105
105
|
// Region geometry is delegated to @flighthq/textureatlas-formats; this layer keeps the imagePath and
|
|
106
106
|
// the inferred `baseName_NNN` animations. `regions` come from the atlas parser over the same XML.
|
|
107
|
-
function documentToData(doc, regions, frameDuration) {
|
|
107
|
+
function documentToData(doc, regions, frameDuration, diagnostics) {
|
|
108
108
|
const frames = regions.map(frameFromRegion);
|
|
109
109
|
const frameNames = frames.map((f) => f.name);
|
|
110
110
|
const animations = inferAnimations(frameNames, frameDuration);
|
|
111
|
+
reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Recover, 'spritesheet.starling.missing-dimensions', 'documentToData');
|
|
111
112
|
return createSpritesheetData({
|
|
112
113
|
animations,
|
|
113
114
|
frames,
|
|
@@ -120,19 +121,11 @@ function documentToData(doc, regions, frameDuration) {
|
|
|
120
121
|
function regionsFromXml(xml) {
|
|
121
122
|
return parseTextureAtlasStarlingXml(xml, createTextureAtlas()).regions;
|
|
122
123
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
*
|
|
126
|
-
* Single-pass: no intermediate document object is allocated.
|
|
127
|
-
* Animations are inferred from the standard `baseName_NNN` frame-naming convention.
|
|
128
|
-
* Use `parseStarlingSpritesheetDocument` instead when you need round-trip serialisation. */
|
|
129
|
-
export function parseStarlingSpritesheet(xml, options) {
|
|
130
|
-
return documentToData(parseStarlingXml(xml), regionsFromXml(xml), options?.frameDuration ?? 100);
|
|
124
|
+
export function parseStarlingSpritesheet(xml, options, diagnostics) {
|
|
125
|
+
return documentToData(parseStarlingXml(xml), regionsFromXml(xml), options?.frameDuration ?? 100, diagnostics);
|
|
131
126
|
}
|
|
132
|
-
|
|
133
|
-
* for round-trip serialisation via `serializeStarlingSpritesheet`. */
|
|
134
|
-
export function parseStarlingSpritesheetDocument(xml, options) {
|
|
127
|
+
export function parseStarlingSpritesheetDocument(xml, options, diagnostics) {
|
|
135
128
|
const document = parseStarlingXml(xml);
|
|
136
|
-
return { data: documentToData(document, regionsFromXml(xml), options?.frameDuration ?? 100), document };
|
|
129
|
+
return { data: documentToData(document, regionsFromXml(xml), options?.frameDuration ?? 100, diagnostics), document };
|
|
137
130
|
}
|
|
138
131
|
//# sourceMappingURL=starlingParse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"starlingParse.js","sourceRoot":"","sources":["../src/starlingParse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"starlingParse.js","sourceRoot":"","sources":["../src/starlingParse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import type { SpritesheetData } from '@flighthq/
|
|
2
|
-
import type { StarlingDocument } from '@flighthq/types/contract';
|
|
3
|
-
/** Serialise a SpritesheetData to a Starling / Sparrow XML atlas string.
|
|
4
|
-
*
|
|
5
|
-
* Pass the `document` returned by `parseStarlingSpritesheetDocument` to preserve any fields that
|
|
6
|
-
* don't round-trip through the data (pivot values stored in the document). */
|
|
1
|
+
import type { SpritesheetData, StarlingDocument } from '@flighthq/types/contract';
|
|
7
2
|
export declare function serializeStarlingSpritesheet(data: Readonly<SpritesheetData>, existing?: Partial<StarlingDocument>): string;
|
|
8
3
|
//# sourceMappingURL=starlingSerialize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"starlingSerialize.d.ts","sourceRoot":"","sources":["../src/starlingSerialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"starlingSerialize.d.ts","sourceRoot":"","sources":["../src/starlingSerialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAsB,MAAM,0BAA0B,CAAC;AAkDtG,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,EAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACnC,MAAM,CAMR"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// ─── Internal helpers ────────────────────────────────────────────────────────
|
|
2
1
|
function frameToSubTexture(frame) {
|
|
3
2
|
const st = {
|
|
4
3
|
height: frame.height,
|
|
@@ -52,11 +51,6 @@ function documentToXml(doc) {
|
|
|
52
51
|
lines.push('</TextureAtlas>');
|
|
53
52
|
return lines.join('\n');
|
|
54
53
|
}
|
|
55
|
-
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
56
|
-
/** Serialise a SpritesheetData to a Starling / Sparrow XML atlas string.
|
|
57
|
-
*
|
|
58
|
-
* Pass the `document` returned by `parseStarlingSpritesheetDocument` to preserve any fields that
|
|
59
|
-
* don't round-trip through the data (pivot values stored in the document). */
|
|
60
54
|
export function serializeStarlingSpritesheet(data, existing) {
|
|
61
55
|
const doc = {
|
|
62
56
|
imagePath: data.imageFile || existing?.imagePath || '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"starlingSerialize.js","sourceRoot":"","sources":["../src/starlingSerialize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"starlingSerialize.js","sourceRoot":"","sources":["../src/starlingSerialize.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import type { SpritesheetData } from '@flighthq/
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
* Single-pass: no intermediate document object is allocated.
|
|
6
|
-
* Use `parseTexturePackerSpritesheetDocument` instead when you need round-trip serialisation. */
|
|
7
|
-
export declare function parseTexturePackerSpritesheet(json: string): SpritesheetData;
|
|
8
|
-
/** Parse a Texture Packer JSON string and preserve the full document for
|
|
9
|
-
* round-trip serialisation via `serializeTexturePackerSpritesheet`. */
|
|
10
|
-
export declare function parseTexturePackerSpritesheetDocument(json: string): TexturePackerParsed;
|
|
1
|
+
import type { ImportDiagnostic, SpritesheetData, TexturePackerParsed } from '@flighthq/types/contract';
|
|
2
|
+
export declare function parseTexturePackerSpritesheet(json: string, diagnostics?: ImportDiagnostic[]): SpritesheetData;
|
|
3
|
+
export declare function parseTexturePackerSpritesheetDocument(json: string, diagnostics?: ImportDiagnostic[]): TexturePackerParsed;
|
|
11
4
|
//# sourceMappingURL=texturePackerParse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texturePackerParse.d.ts","sourceRoot":"","sources":["../src/texturePackerParse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"texturePackerParse.d.ts","sourceRoot":"","sources":["../src/texturePackerParse.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EAMf,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAwDlC,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,eAAe,CAc7G;AAED,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAC/B,mBAAmB,CAcrB"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
+
import { reportImportDiagnostic } from '@flighthq/importdiagnostics/contract';
|
|
1
2
|
import { createSpritesheetAnimationData, createSpritesheetData, createSpritesheetFrameData, } from '@flighthq/spritesheet/contract';
|
|
2
|
-
import {
|
|
3
|
+
import { parseTexturePackerAtlasDocument } from '@flighthq/textureatlas-formats/contract';
|
|
3
4
|
import { createTextureAtlas } from '@flighthq/textureatlas/contract';
|
|
4
|
-
|
|
5
|
-
// Maps an atlas region (geometry owned by @flighthq/textureatlas-formats — the single source of truth
|
|
6
|
-
// for the region rect, rotation, and trim handling) to a spritesheet frame. This package adds only the
|
|
7
|
-
// animation/frame metadata on top. The untrimmed source size falls back to the region rect, because the
|
|
8
|
-
// atlas parser leaves originalW/H null when a frame is not trimmed (where the source equals the frame).
|
|
5
|
+
import { ImportDiagnosticSeverity } from '@flighthq/types/contract';
|
|
9
6
|
function frameFromRegion(region) {
|
|
10
7
|
return createSpritesheetFrameData({
|
|
11
8
|
height: region.height,
|
|
@@ -39,7 +36,7 @@ function metaScale(meta) {
|
|
|
39
36
|
function documentToData(doc) {
|
|
40
37
|
// Delegate region geometry to the atlas-formats parser (the TexturePacker document shapes are shared),
|
|
41
38
|
// then layer the spritesheet frame/animation metadata on top — no independent re-parse of the frames.
|
|
42
|
-
const regions =
|
|
39
|
+
const regions = parseTexturePackerAtlasDocument(doc, createTextureAtlas()).regions;
|
|
43
40
|
const frames = regions.map(frameFromRegion);
|
|
44
41
|
const frameNames = regions.map((region) => region.name ?? '');
|
|
45
42
|
const { meta } = doc;
|
|
@@ -53,34 +50,24 @@ function documentToData(doc) {
|
|
|
53
50
|
scale: metaScale(meta),
|
|
54
51
|
});
|
|
55
52
|
}
|
|
56
|
-
|
|
57
|
-
/** Parse a Texture Packer JSON string directly to a SpritesheetData.
|
|
58
|
-
*
|
|
59
|
-
* Single-pass: no intermediate document object is allocated.
|
|
60
|
-
* Use `parseTexturePackerSpritesheetDocument` instead when you need round-trip serialisation. */
|
|
61
|
-
export function parseTexturePackerSpritesheet(json) {
|
|
53
|
+
export function parseTexturePackerSpritesheet(json, diagnostics) {
|
|
62
54
|
let document;
|
|
63
55
|
try {
|
|
64
56
|
document = JSON.parse(json);
|
|
65
57
|
}
|
|
66
58
|
catch {
|
|
67
|
-
|
|
68
|
-
// throwing an uncaught SyntaxError, matching `parseSpritesheet`'s null-on-unrecognized philosophy and
|
|
69
|
-
// the never-throw importer policy.
|
|
59
|
+
reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Reject, 'spritesheet.texture-packer.malformed-json', 'parseTexturePackerSpritesheet');
|
|
70
60
|
return createSpritesheetData();
|
|
71
61
|
}
|
|
72
62
|
return documentToData(document);
|
|
73
63
|
}
|
|
74
|
-
|
|
75
|
-
* round-trip serialisation via `serializeTexturePackerSpritesheet`. */
|
|
76
|
-
export function parseTexturePackerSpritesheetDocument(json) {
|
|
64
|
+
export function parseTexturePackerSpritesheetDocument(json, diagnostics) {
|
|
77
65
|
let document;
|
|
78
66
|
try {
|
|
79
67
|
document = JSON.parse(json);
|
|
80
68
|
}
|
|
81
69
|
catch {
|
|
82
|
-
|
|
83
|
-
// throwing; empty (not null) matches the non-Document sibling parseTexturePackerSpritesheet.
|
|
70
|
+
reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Reject, 'spritesheet.texture-packer.malformed-json', 'parseTexturePackerSpritesheetDocument');
|
|
84
71
|
return { data: createSpritesheetData(), document: createEmptyTexturePackerDocument() };
|
|
85
72
|
}
|
|
86
73
|
return { data: documentToData(document), document };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texturePackerParse.js","sourceRoot":"","sources":["../src/texturePackerParse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"texturePackerParse.js","sourceRoot":"","sources":["../src/texturePackerParse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import type { SpritesheetData } from '@flighthq/
|
|
2
|
-
import type { TexturePackerDocument, TexturePackerSerializeOptions } from '@flighthq/types/contract';
|
|
3
|
-
/** Serialise a SpritesheetData to a Texture Packer JSON string.
|
|
4
|
-
*
|
|
5
|
-
* Pass the `document` returned by `parseTexturePackerSpritesheetDocument` to preserve any fields
|
|
6
|
-
* that don't round-trip through the data (app name, format string, scale).
|
|
7
|
-
* The output variant (hash vs array) is inferred from the existing document or
|
|
8
|
-
* overridden via `options.variant`. */
|
|
1
|
+
import type { SpritesheetData, TexturePackerDocument, TexturePackerSerializeOptions } from '@flighthq/types/contract';
|
|
9
2
|
export declare function serializeTexturePackerSpritesheet(data: Readonly<SpritesheetData>, existing?: Partial<TexturePackerDocument>, options?: TexturePackerSerializeOptions): string;
|
|
10
3
|
//# sourceMappingURL=texturePackerSerialize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texturePackerSerialize.d.ts","sourceRoot":"","sources":["../src/texturePackerSerialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"texturePackerSerialize.d.ts","sourceRoot":"","sources":["../src/texturePackerSerialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,qBAAqB,EAIrB,6BAA6B,EAC9B,MAAM,0BAA0B,CAAC;AAoElC,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,EAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACzC,OAAO,CAAC,EAAE,6BAA6B,GACtC,MAAM,CAWR"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// ─── Internal helpers ────────────────────────────────────────────────────────
|
|
2
1
|
function dataToMeta(data, existing) {
|
|
3
2
|
return {
|
|
4
3
|
app: existing.app ?? 'https://www.codeandweb.com/texturepacker',
|
|
@@ -54,13 +53,6 @@ function dataToArrayDocument(data, existing) {
|
|
|
54
53
|
}));
|
|
55
54
|
return { frames, meta: dataToMeta(data, existing.meta ?? {}) };
|
|
56
55
|
}
|
|
57
|
-
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
58
|
-
/** Serialise a SpritesheetData to a Texture Packer JSON string.
|
|
59
|
-
*
|
|
60
|
-
* Pass the `document` returned by `parseTexturePackerSpritesheetDocument` to preserve any fields
|
|
61
|
-
* that don't round-trip through the data (app name, format string, scale).
|
|
62
|
-
* The output variant (hash vs array) is inferred from the existing document or
|
|
63
|
-
* overridden via `options.variant`. */
|
|
64
56
|
export function serializeTexturePackerSpritesheet(data, existing, options) {
|
|
65
57
|
const existingIsArray = existing !== undefined && Array.isArray(existing.frames);
|
|
66
58
|
const variant = options?.variant ?? (existingIsArray ? 'array' : 'hash');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texturePackerSerialize.js","sourceRoot":"","sources":["../src/texturePackerSerialize.ts"],"names":[],"mappings":"AAWA,
|
|
1
|
+
{"version":3,"file":"texturePackerSerialize.js","sourceRoot":"","sources":["../src/texturePackerSerialize.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/spritesheet-formats",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.704.19c91ec",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,12 +38,13 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/
|
|
42
|
-
"@flighthq/
|
|
43
|
-
"@flighthq/
|
|
44
|
-
"@flighthq/
|
|
45
|
-
"@flighthq/
|
|
46
|
-
"@flighthq/
|
|
41
|
+
"@flighthq/importdiagnostics": "0.5.1-next.704.19c91ec",
|
|
42
|
+
"@flighthq/registry": "0.5.1-next.704.19c91ec",
|
|
43
|
+
"@flighthq/spritesheet": "0.5.1-next.704.19c91ec",
|
|
44
|
+
"@flighthq/textureatlas": "0.5.1-next.704.19c91ec",
|
|
45
|
+
"@flighthq/textureatlas-formats": "0.5.1-next.704.19c91ec",
|
|
46
|
+
"@flighthq/types": "0.5.1-next.704.19c91ec",
|
|
47
|
+
"@flighthq/xml": "0.5.1-next.704.19c91ec"
|
|
47
48
|
},
|
|
48
49
|
"devDependencies": {
|
|
49
50
|
"typescript": "^5.3.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ImportDiagnostic } from '@flighthq/types/contract';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { parseAsepriteSpritesheet, parseAsepriteSpritesheetDocument } from './asepriteParse';
|
|
4
4
|
|
|
5
5
|
const HASH_JSON = JSON.stringify({
|
|
6
6
|
frames: {
|
|
@@ -214,6 +214,20 @@ describe('parseAsepriteSpritesheet', () => {
|
|
|
214
214
|
const data = parseAsepriteSpritesheet(ARRAY_JSON);
|
|
215
215
|
expect(data.animations[0].direction).toBe('pingpong');
|
|
216
216
|
});
|
|
217
|
+
|
|
218
|
+
it('emits Reject diagnostic on malformed JSON', () => {
|
|
219
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
220
|
+
parseAsepriteSpritesheet('{ not valid json', diagnostics);
|
|
221
|
+
expect(diagnostics).toHaveLength(1);
|
|
222
|
+
expect(diagnostics[0].kind).toBe('spritesheet.aseprite.malformed-json');
|
|
223
|
+
expect(diagnostics[0].severity).toBe('Reject');
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
it('emits no diagnostics on valid JSON', () => {
|
|
227
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
228
|
+
parseAsepriteSpritesheet(HASH_JSON, diagnostics);
|
|
229
|
+
expect(diagnostics).toHaveLength(0);
|
|
230
|
+
});
|
|
217
231
|
});
|
|
218
232
|
|
|
219
233
|
describe('parseAsepriteSpritesheetDocument', () => {
|
|
@@ -249,4 +263,12 @@ describe('parseAsepriteSpritesheetDocument', () => {
|
|
|
249
263
|
expect(document.meta.layers).toHaveLength(1);
|
|
250
264
|
expect(document.meta.layers![0].name).toBe('Layer 1');
|
|
251
265
|
});
|
|
266
|
+
|
|
267
|
+
it('emits Reject diagnostic on malformed JSON', () => {
|
|
268
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
269
|
+
parseAsepriteSpritesheetDocument('{ not valid json', diagnostics);
|
|
270
|
+
expect(diagnostics).toHaveLength(1);
|
|
271
|
+
expect(diagnostics[0].kind).toBe('spritesheet.aseprite.malformed-json');
|
|
272
|
+
expect(diagnostics[0].severity).toBe('Reject');
|
|
273
|
+
});
|
|
252
274
|
});
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { ImportDiagnostic } from '@flighthq/types/contract';
|
|
2
|
+
|
|
1
3
|
import { parseCocosPlistSpritesheet, parseCocosPlistSpritesheetDocument } from './cocosPlistParse';
|
|
2
4
|
|
|
3
5
|
const MINIMAL_PLIST = `<?xml version="1.0" encoding="UTF-8"?>
|
|
@@ -119,6 +121,44 @@ describe('parseCocosPlistSpritesheet', () => {
|
|
|
119
121
|
const data = parseCocosPlistSpritesheet(MINIMAL_PLIST);
|
|
120
122
|
expect(data.animations).toHaveLength(0);
|
|
121
123
|
});
|
|
124
|
+
|
|
125
|
+
it('emits no diagnostics on well-formed plist', () => {
|
|
126
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
127
|
+
parseCocosPlistSpritesheet(MINIMAL_PLIST, diagnostics);
|
|
128
|
+
expect(diagnostics).toHaveLength(0);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it('emits Drop diagnostic for unrecognized frame entries', () => {
|
|
132
|
+
const plist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
133
|
+
<plist version="1.0">
|
|
134
|
+
<dict>
|
|
135
|
+
<key>frames</key>
|
|
136
|
+
<dict>
|
|
137
|
+
<key>bad.png</key>
|
|
138
|
+
<dict>
|
|
139
|
+
<key>unknownKey</key>
|
|
140
|
+
<string>value</string>
|
|
141
|
+
</dict>
|
|
142
|
+
</dict>
|
|
143
|
+
<key>metadata</key>
|
|
144
|
+
<dict>
|
|
145
|
+
<key>format</key>
|
|
146
|
+
<integer>3</integer>
|
|
147
|
+
<key>size</key>
|
|
148
|
+
<string>{64,64}</string>
|
|
149
|
+
<key>textureFileName</key>
|
|
150
|
+
<string>atlas.png</string>
|
|
151
|
+
</dict>
|
|
152
|
+
</dict>
|
|
153
|
+
</plist>`;
|
|
154
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
155
|
+
const data = parseCocosPlistSpritesheet(plist, diagnostics);
|
|
156
|
+
expect(data.frames).toHaveLength(0);
|
|
157
|
+
expect(diagnostics).toHaveLength(1);
|
|
158
|
+
expect(diagnostics[0].kind).toBe('spritesheet.cocos-plist.unrecognized-frame');
|
|
159
|
+
expect(diagnostics[0].severity).toBe('Drop');
|
|
160
|
+
expect(diagnostics[0].detail).toMatchObject({ frame: 'bad.png' });
|
|
161
|
+
});
|
|
122
162
|
});
|
|
123
163
|
|
|
124
164
|
describe('parseCocosPlistSpritesheetDocument', () => {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { ImportDiagnostic } from '@flighthq/types/contract';
|
|
2
|
+
|
|
1
3
|
import { parseLibgdxAtlasSpritesheet } from './libgdxAtlasParse';
|
|
2
4
|
|
|
3
5
|
const MINIMAL_ATLAS = `
|
|
@@ -98,4 +100,28 @@ describe('parseLibgdxAtlasSpritesheet', () => {
|
|
|
98
100
|
const data = parseLibgdxAtlasSpritesheet(MINIMAL_ATLAS);
|
|
99
101
|
expect(data.frames[0]?.rotated).toBe(false);
|
|
100
102
|
});
|
|
103
|
+
|
|
104
|
+
it('emits no diagnostics on well-formed atlas with page header', () => {
|
|
105
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
106
|
+
parseLibgdxAtlasSpritesheet(MINIMAL_ATLAS, undefined, diagnostics);
|
|
107
|
+
expect(diagnostics).toHaveLength(0);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it('emits Recover diagnostic when page has no filename', () => {
|
|
111
|
+
const noPageAtlas = `
|
|
112
|
+
hero
|
|
113
|
+
rotate: false
|
|
114
|
+
xy: 0, 0
|
|
115
|
+
size: 64, 64
|
|
116
|
+
orig: 64, 64
|
|
117
|
+
offset: 0, 0
|
|
118
|
+
index: -1
|
|
119
|
+
`;
|
|
120
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
121
|
+
const data = parseLibgdxAtlasSpritesheet(noPageAtlas, undefined, diagnostics);
|
|
122
|
+
expect(data.imageFile).toBe('');
|
|
123
|
+
expect(diagnostics).toHaveLength(1);
|
|
124
|
+
expect(diagnostics[0].kind).toBe('spritesheet.libgdx-atlas.missing-page-header');
|
|
125
|
+
expect(diagnostics[0].severity).toBe('Recover');
|
|
126
|
+
});
|
|
101
127
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ImportDiagnostic } from '@flighthq/types/contract';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { parseStarlingSpritesheet, parseStarlingSpritesheetDocument } from './starlingParse';
|
|
4
4
|
|
|
5
5
|
const ATLAS_XML = `<?xml version="1.0" encoding="UTF-8"?>
|
|
6
6
|
<TextureAtlas imagePath="atlas.png">
|
|
@@ -143,6 +143,16 @@ describe('parseStarlingSpritesheet', () => {
|
|
|
143
143
|
expect(data.frames).toHaveLength(1);
|
|
144
144
|
expect(data.animations).toHaveLength(0);
|
|
145
145
|
});
|
|
146
|
+
|
|
147
|
+
it('emits Recover diagnostic for missing atlas dimensions', () => {
|
|
148
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
149
|
+
const data = parseStarlingSpritesheet(ATLAS_XML, undefined, diagnostics);
|
|
150
|
+
expect(data.imageWidth).toBe(0);
|
|
151
|
+
expect(data.imageHeight).toBe(0);
|
|
152
|
+
expect(diagnostics).toHaveLength(1);
|
|
153
|
+
expect(diagnostics[0].kind).toBe('spritesheet.starling.missing-dimensions');
|
|
154
|
+
expect(diagnostics[0].severity).toBe('Recover');
|
|
155
|
+
});
|
|
146
156
|
});
|
|
147
157
|
|
|
148
158
|
describe('parseStarlingSpritesheetDocument', () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ImportDiagnostic } from '@flighthq/types/contract';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { parseTexturePackerSpritesheet, parseTexturePackerSpritesheetDocument } from './texturePackerParse';
|
|
4
4
|
|
|
5
5
|
const HASH_JSON = JSON.stringify({
|
|
6
6
|
frames: {
|
|
@@ -210,6 +210,20 @@ describe('parseTexturePackerSpritesheet', () => {
|
|
|
210
210
|
expect(frame.offsetX).toBe(0);
|
|
211
211
|
expect(frame.offsetY).toBe(0);
|
|
212
212
|
});
|
|
213
|
+
|
|
214
|
+
it('emits Reject diagnostic on malformed JSON', () => {
|
|
215
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
216
|
+
parseTexturePackerSpritesheet('not json', diagnostics);
|
|
217
|
+
expect(diagnostics).toHaveLength(1);
|
|
218
|
+
expect(diagnostics[0].kind).toBe('spritesheet.texture-packer.malformed-json');
|
|
219
|
+
expect(diagnostics[0].severity).toBe('Reject');
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
it('emits no diagnostics on valid JSON', () => {
|
|
223
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
224
|
+
parseTexturePackerSpritesheet(HASH_JSON, diagnostics);
|
|
225
|
+
expect(diagnostics).toHaveLength(0);
|
|
226
|
+
});
|
|
213
227
|
});
|
|
214
228
|
|
|
215
229
|
describe('parseTexturePackerSpritesheetDocument', () => {
|
|
@@ -247,4 +261,12 @@ describe('parseTexturePackerSpritesheetDocument', () => {
|
|
|
247
261
|
expect(document.meta.version).toBe('1.0');
|
|
248
262
|
expect(document.meta.format).toBe('RGBA8888');
|
|
249
263
|
});
|
|
264
|
+
|
|
265
|
+
it('emits Reject diagnostic on malformed JSON', () => {
|
|
266
|
+
const diagnostics: ImportDiagnostic[] = [];
|
|
267
|
+
parseTexturePackerSpritesheetDocument('not json', diagnostics);
|
|
268
|
+
expect(diagnostics).toHaveLength(1);
|
|
269
|
+
expect(diagnostics[0].kind).toBe('spritesheet.texture-packer.malformed-json');
|
|
270
|
+
expect(diagnostics[0].severity).toBe('Reject');
|
|
271
|
+
});
|
|
250
272
|
});
|