Exemplo n.º 1
0
 public static void Read(BinaryReader b, ref GafSequenceHeader entry)
 {
     entry.FrameCount = b.ReadUInt16();
     entry.Unknown1   = b.ReadUInt16();
     entry.Unknown2   = b.ReadUInt32();
     entry.Name       = Util.ConvertChars(b.ReadBytes(32));
 }
Exemplo n.º 2
0
        public void BeginEntry(ref Gaf.Structures.GafSequenceHeader entry)
        {
            entries.Add(new GafSequenceJson {
                Frames = new List <GafFrameJson>(), Name = entry.Name
            });
            var entryNumber = entries.Count;

            Directory.CreateDirectory(Path.Combine(outputDirectory, $"{entryNumber:D2}_{entry.Name}"));
        }
Exemplo n.º 3
0
        private void WriteGafEntry(List <WrittenImageInfo> imageInfos, GafEntryInfo entryInfo)
        {
            var header = new Structures.GafSequenceHeader
            {
                FrameCount = (ushort)entryInfo.FrameInfos.Count,
                Unknown1   = 1,
                Unknown2   = 0,
                Name       = entryInfo.Name
            };

            header.Write(writer);

            // reserve space for frame pointers
            var framePointersPosition = writer.BaseStream.Position;

            foreach (var _ in entryInfo.FrameInfos)
            {
                var entry = new Structures.GaFrameListItem
                {
                    PtrFrameInfo = 0,
                    Duration     = 0,
                };
                entry.Write(writer);
            }

            // write frames
            var pointers = new List <long>();

            foreach (var frameInfo in entryInfo.FrameInfos)
            {
                pointers.Add(writer.BaseStream.Position);
                WriteFrameInfo(imageInfos, frameInfo);
            }

            // go back and write frame pointers
            var currPos = writer.BaseStream.Position;

            writer.BaseStream.Seek(framePointersPosition, SeekOrigin.Begin);

            // write pointers
            for (var i = 0; i < entryInfo.FrameInfos.Count; ++i)
            {
                var entry = new Structures.GaFrameListItem
                {
                    PtrFrameInfo = (uint)pointers[i],
                    Duration     = (uint)entryInfo.FrameInfos[i].Duration,
                };
                entry.Write(writer);
            }

            // reset to end
            writer.BaseStream.Seek(currPos, SeekOrigin.Begin);
        }
Exemplo n.º 4
0
        private void ReadGafEntry()
        {
            // read the entry header
            Structures.GafSequenceHeader entry = new Structures.GafSequenceHeader();
            Structures.GafSequenceHeader.Read(this.reader, ref entry);

            this.adapter.BeginEntry(ref entry);

            // read in all the frame entry pointers
            Structures.GaFrameListItem[] frameEntries = new Structures.GaFrameListItem[entry.FrameCount];
            for (int i = 0; i < entry.FrameCount; i++)
            {
                Structures.GaFrameListItem.Read(this.reader, ref frameEntries[i]);
            }

            // read in the corresponding frames
            for (int i = 0; i < entry.FrameCount; i++)
            {
                this.reader.BaseStream.Seek(frameEntries[i].PtrFrameInfo, SeekOrigin.Begin);
                this.LoadFrame(ref frameEntries[i]);
            }

            this.adapter.EndEntry();
        }