Skip to content

Commit e58010a

Browse files
committed
finish decoder
1 parent 49cf55c commit e58010a

28 files changed

+784
-334
lines changed

src/ImageSharp/Formats/Ani/AniChunk.cs

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/ImageSharp/Formats/Ani/AniChunkType.cs

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,66 @@ namespace SixLabors.ImageSharp.Formats.Ani;
55

66
internal enum AniChunkType : uint
77
{
8-
Seq = 0x73_65_71_20,
9-
Rate = 0x72_61_74_65,
10-
List = 0x4C_49_53_54
8+
/// <summary>
9+
/// "anih"
10+
/// </summary>
11+
AniH = 0x68_69_6E_61,
12+
13+
/// <summary>
14+
/// "seq "
15+
/// </summary>
16+
Seq = 0x20_71_65_73,
17+
18+
/// <summary>
19+
/// "rate"
20+
/// </summary>
21+
Rate = 0x65_74_61_72,
22+
23+
/// <summary>
24+
/// "LIST"
25+
/// </summary>
26+
List = 0x54_53_49_4C
27+
}
28+
29+
/// <summary>
30+
/// ListType
31+
/// </summary>
32+
internal enum AniListType : uint
33+
{
34+
/// <summary>
35+
/// "INFO" (ListType)
36+
/// </summary>
37+
Info = 0x4F_46_4E_49,
38+
39+
/// <summary>
40+
/// "fram"
41+
/// </summary>
42+
Fram = 0x6D_61_72_66
43+
}
44+
45+
/// <summary>
46+
/// in "INFO"
47+
/// </summary>
48+
internal enum AniListInfoType : uint
49+
{
50+
/// <summary>
51+
/// "INAM"
52+
/// </summary>
53+
INam = 0x4D_41_4E_49,
54+
55+
/// <summary>
56+
/// "IART"
57+
/// </summary>
58+
IArt = 0x54_52_41_49
59+
}
60+
61+
/// <summary>
62+
/// in "Fram"
63+
/// </summary>
64+
internal enum AniListFrameType : uint
65+
{
66+
/// <summary>
67+
/// "icon"
68+
/// </summary>
69+
Icon = 0x6E_6F_63_69
1170
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (c) Six Labors.
2+
// Licensed under the Six Labors Split License.
3+
4+
namespace SixLabors.ImageSharp.Formats.Ani;
5+
6+
/// <summary>
7+
/// Registers the image encoders, decoders and mime type detectors for the Ico format.
8+
/// </summary>
9+
public sealed class AniConfigurationModule : IImageFormatConfigurationModule
10+
{
11+
/// <inheritdoc/>
12+
public void Configure(Configuration configuration)
13+
{
14+
// configuration.ImageFormatsManager.SetEncoder(AniFormat.Instance, new AniEncoder());
15+
configuration.ImageFormatsManager.SetDecoder(AniFormat.Instance, AniDecoder.Instance);
16+
configuration.ImageFormatsManager.AddImageFormatDetector(new AniImageFormatDetector());
17+
}
18+
}

src/ImageSharp/Formats/Ani/AniConstants.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,31 @@ internal static class AniConstants
88
/// <summary>
99
/// The list of mime types that equate to an ani.
1010
/// </summary>
11-
/// <remarks>
12-
/// See <see href="https://en.wikipedia.org/wiki/ICO_(file_format)#MIME_type"/>
13-
/// </remarks>
14-
public static readonly IEnumerable<string> MimeTypes = [];
11+
public static readonly IEnumerable<string> MimeTypes = ["application/x-navi-animation"];
1512

1613
/// <summary>
1714
/// The list of file extensions that equate to an ani.
1815
/// </summary>
1916
public static readonly IEnumerable<string> FileExtensions = ["ani"];
2017

18+
/// <summary>
19+
/// Gets the header bytes identifying an ani.
20+
/// </summary>
21+
public static ReadOnlySpan<byte> AniFormTypeFourCc => "ACON"u8;
22+
23+
/// <summary>
24+
/// Gets the header bytes identifying an ani.
25+
/// </summary>
26+
public const uint AniFourCc = 0x41_43_4F_4E;
27+
28+
public static class ChunkFourCcs
29+
{
30+
public static ReadOnlySpan<byte> AniHeader => "anih"u8;
31+
32+
public static ReadOnlySpan<byte> Seq => "seq "u8;
33+
34+
public static ReadOnlySpan<byte> Rate => "rate"u8;
35+
36+
public static ReadOnlySpan<byte> Icon => "icon"u8;
37+
}
2138
}

0 commit comments

Comments
 (0)