public AseHeader(AseReader reader) { FileSize = reader.ReadDWORD(); MagicNumber = reader.ReadWORD(); NumFrames = reader.ReadWORD(); Width = reader.ReadWORD(); Height = reader.ReadWORD(); ColorDepth = reader.ReadColorDepth(); Flags = (HeaderFlags)reader.ReadDWORD(); Speed = reader.ReadWORD(); // Next two dwords are ignored reader.ReadDWORD(); reader.ReadDWORD(); TransparentIndex = reader.ReadBYTE(); // Next 3 bytes are ignored reader.ReadBYTEs(3); NumColors = reader.ReadWORD(); PixelWidth = reader.ReadBYTE(); PixelHeight = reader.ReadBYTE(); // Last 92 bytes are reserved for future use reader.ReadBYTEs(92); Debug.Assert(MagicNumber == 0xA5E0); }
public AseFrame(AseFile file, AseReader reader) { AseFile = file; NumBytesInFrame = reader.ReadDWORD(); MagicNumber = reader.ReadWORD(); NumChunks = reader.ReadWORD(); FrameDurationMs = reader.ReadWORD(); // Ingore next two bytes reader.ReadBYTEs(2); // Later versions of Aseprite may overwrite our number of chunks var nchunks = reader.ReadDWORD(); if (NumChunks == 0xFFFF && NumChunks < nchunks) { NumChunks = nchunks; } // Read in old and new chunks Chunks = Enumerable.Repeat <AseChunk>(null, (int)NumChunks).ToList(); for (int i = 0; i < NumChunks; i++) { Chunks[i] = ReadChunk(reader); } Debug.Assert(MagicNumber == 0xF1FA); }
public AsePaletteChunk(AseFrame frame, AseReader reader) : base(frame) { PaletteSize = (int)reader.ReadDWORD(); FirstIndex = (int)reader.ReadDWORD(); LastIndex = (int)reader.ReadDWORD(); // Next 8 bytes are ignored reader.ReadBYTEs(8); Entries = Enumerable.Repeat <AsePaletteEntry>(null, LastIndex + 1).ToList(); for (int i = FirstIndex; i <= LastIndex; i++) { Entries[i] = new AsePaletteEntry(reader); } }
private AseChunk ReadChunk(AseReader reader) { uint size = reader.ReadDWORD(); ChunkType type = (ChunkType)reader.ReadWORD(); return(ChunkFactory.ReadChunk(this, type, (int)(size - 6), reader)); }
public AseSliceChunk(AseFrame frame, AseReader reader) : base(frame) { NumSliceKeys = reader.ReadDWORD(); Flags = (SliceFlags)reader.ReadDWORD(); // Ignore next dword reader.ReadDWORD(); Name = reader.ReadSTRING(); Entries = Enumerable.Repeat <AseSliceEntry>(null, (int)NumSliceKeys).ToList(); for (int i = 0; i < (int)NumSliceKeys; i++) { Entries[i] = new AseSliceEntry(reader, Flags); } }
public AseColorProfileChunk(AseFrame frame, AseReader reader) : base(frame) { ColorProfileType = (ColorProfileType)reader.ReadWORD(); ColorProfileFlags = (ColorProfileFlags)reader.ReadWORD(); GammaFixed = reader.ReadDWORD(); // Next 8 bytes are reserved reader.ReadBYTEs(8); // fixit - what to do with color profile data? if (ColorProfileType == ColorProfileType.EmbeddedICC) { var length = (int)reader.ReadDWORD(); reader.ReadBYTEs(length); } }
public AseColorProfileChunk(AseFrame frame, AseReader reader) : base(frame) { ColorProfileType = (ColorProfileType)reader.ReadWORD(); ColorProfileFlags = (ColorProfileFlags)reader.ReadWORD(); GammaFixed = reader.ReadDWORD(); // Next 8 bytes are reserved reader.ReadBYTEs(8); // Do we need to do anything with color profile data? // For now, just keep on truckin' if (ColorProfileType == ColorProfileType.EmbeddedICC) { var length = (int)reader.ReadDWORD(); reader.ReadBYTEs(length); } }
public AseSliceEntry(AseReader reader, SliceFlags flags) { FrameNumber = reader.ReadDWORD(); OriginX = reader.ReadLONG(); OriginY = reader.ReadLONG(); Width = reader.ReadDWORD(); Height = reader.ReadDWORD(); if ((flags & SliceFlags.Is9PatchSlice) != 0) { CenterX = reader.ReadLONG(); CenterY = reader.ReadLONG(); CenterWidth = reader.ReadDWORD(); CenterHeight = reader.ReadDWORD(); } if ((flags & SliceFlags.HasPivotInformation) != 0) { PivotX = reader.ReadLONG(); PivotY = reader.ReadLONG(); } }
public AseUserDataChunk(AseFrame frame, AseReader reader) : base(frame) { Flags = (UserDataFlags)reader.ReadDWORD(); if ((Flags & UserDataFlags.HasText) != 0) { Text = reader.ReadSTRING(); } if ((Flags & UserDataFlags.HasColor) != 0) { ColorRGBA = reader.ReadBYTEs(4); } // Place the user data in the last chunk if (reader.LastChunk != null) { reader.LastChunk.UserText = Text; reader.LastChunk.UserColor = ColorRGBA; } }