1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using System;
- using System.IO;
-
- namespace UnityEditor.U2D.Aseprite
- {
- /// <summary>
- /// Flags to define where data for a tileset is stored.
- /// </summary>
- [Flags]
- public enum TileSetFlags
- {
- IncludesLinkToExternal = 1,
- IncludesTilesInFile = 2,
- Misc = 4,
- }
-
- /// <summary>
- /// Parsed representation of an Aseprite Tileset chunk.
- /// </summary>
- /// <note>Not supported yet.</note>
- public class TilesetChunk : BaseChunk
- {
- public override ChunkTypes chunkType => ChunkTypes.Tileset;
-
- /// <summary>
- /// The ID of the tileset.
- /// </summary>
- public uint tileSetId { get; private set; }
- /// <summary>
- /// Flags to define where data for a tileset is stored.
- /// </summary>
- public TileSetFlags tileSetFlags { get; private set; }
- /// <summary>
- /// The number of tiles in the tileset.
- /// </summary>
- public uint noOfTiles { get; private set; }
- /// <summary>
- /// Tile width in pixels.
- /// </summary>
- public ushort width { get; private set; }
- /// <summary>
- /// Tile height in pixels.
- /// </summary>
- public ushort height { get; private set; }
- /// <summary>
- /// The name of the tileset.
- /// </summary>
- public string tileSetName { get; private set; }
-
- readonly ushort m_ColorDepth;
- readonly PaletteChunk m_PaletteChunk;
- readonly byte m_AlphaPaletteEntry;
-
- internal TilesetChunk(uint chunkSize, ushort colorDepth, PaletteChunk paletteChunk, byte alphaPaletteEntry) : base(chunkSize)
- {
- m_ColorDepth = colorDepth;
- m_PaletteChunk = paletteChunk;
- m_AlphaPaletteEntry = alphaPaletteEntry;
- }
-
- protected override void InternalRead(BinaryReader reader)
- {
- tileSetId = reader.ReadUInt32();
- tileSetFlags = (TileSetFlags)reader.ReadUInt32();
- noOfTiles = reader.ReadUInt32();
- width = reader.ReadUInt16();
- height = reader.ReadUInt16();
-
- var baseIndex = reader.ReadInt16();
- var reservedBytes = reader.ReadBytes(14);
-
- tileSetName = AsepriteUtilities.ReadString(reader);
-
- // Not supported yet.
- if ((tileSetFlags & TileSetFlags.IncludesLinkToExternal) != 0)
- {
- var idOfExternalFile = reader.ReadUInt32();
- var tileSetIdInExternal = reader.ReadUInt32();
- }
- if ((tileSetFlags & TileSetFlags.IncludesTilesInFile) != 0)
- {
- var compressedDataLength = (int)reader.ReadUInt32();
- var decompressedData = AsepriteUtilities.ReadAndDecompressedData(reader, compressedDataLength);
-
- var image = AsepriteUtilities.GenerateImageData(m_ColorDepth, decompressedData, m_PaletteChunk, m_AlphaPaletteEntry);
-
- // Disposing for now.
- image.Dispose();
- }
- }
- }
- }
|