Handle ani frames in odd place

This commit is contained in:
Jordan Eldredge 2021-01-05 22:42:12 -08:00
parent ba7c12d6d7
commit aa952c29e6
4 changed files with 40 additions and 3 deletions

View file

@ -1,8 +1,27 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`AfterShock_Digital_2003.wsz close.cur 1`] = `
"
@keyframes ani-cursor-3 {
0% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACA...), auto; }
6.25%, 93.75% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACA...), auto; }
12.5%, 87.5% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACA...), auto; }
18.75%, 81.25% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACA...), auto; }
25%, 75% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACA...), auto; }
31.25%, 68.75% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACA...), auto; }
37.5%, 62.5% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACA...), auto; }
43.75%, 56.25% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACA...), auto; }
50% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACA...), auto; }
}
#example:hover {
animation: ani-cursor-3 2666.666666666667ms step-end infinite;
}
"
`;
exports[`Edge cases piano.ani 1`] = `
"
@keyframes ani-cursor-3 {
@keyframes ani-cursor-4 {
0% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAA0ACQDoAgAAFgAAACgAAAAgAAAAQAAAAAEABA...), auto; }
20% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAA0ACQDoAgAAFgAAACgAAAAgAAAAQAAAAAEABA...), auto; }
40% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAA0ACQDoAgAAFgAAACgAAAAgAAAAQAAAAAEABA...), auto; }
@ -10,7 +29,7 @@ exports[`Edge cases piano.ani 1`] = `
80% { cursor: url(data:image/x-win-bitmap;base64,AAACAAEAICAAAA0ACQDoAgAAFgAAACgAAAAgAAAAQAAAAAEABA...), auto; }
}
#example:hover {
animation: ani-cursor-3 1250ms step-end infinite;
animation: ani-cursor-4 1250ms step-end infinite;
}
"
`;

View file

@ -32,6 +32,12 @@ describe("Green Dimension v2.wsz", () => {
});
});
describe("AfterShock_Digital_2003.wsz", () => {
test("close.cur", async () => {
expect(readPathCss("AfterShock_Digital_2003/close.cur")).toMatchSnapshot();
});
});
describe("Edge cases", () => {
test("piano.ani", async () => {
expect(readPathCss("piano.ani")).toMatchSnapshot();

View file

@ -86,7 +86,7 @@ export function parseAni(arr: Uint8Array): ParsedAni {
throw new Error("Did not find fram LIST");
}
const images = imageChunk.subChunks.slice(0, metadata.nFrames).map((c) => {
let images = imageChunk.subChunks.slice(0, metadata.nFrames).map((c) => {
if (c.chunkId !== "icon") {
throw new Error(`Unexpected chunk type in fram: ${c.chunkId}`);
}
@ -106,6 +106,18 @@ export function parseAni(arr: Uint8Array): ParsedAni {
case "IART":
artist = unpackString(arr, c.chunkData.start, c.chunkData.end);
break;
case "LIST":
// Some cursors with an artist of "Created with Take ONE 3.5 (unregisterred version)" seem to have their frames here for some reason?
if (c.format === "fram") {
images = c.subChunks.slice(0, metadata.nFrames).map((c) => {
if (c.chunkId !== "icon") {
throw new Error(`Unexpected chunk type in fram: ${c.chunkId}`);
}
return arr.slice(c.chunkData.start, c.chunkData.end);
});
}
break;
default:
// Unexpected subchunk
}