コード例 #1
0
ファイル: ScriptChunk.cs プロジェクト: jeffli678/Shockky
        public override void WriteBodyTo(ShockwaveWriter output)
        {
            const short HEADER_LENGTH = 92;

            output.WriteBigEndian((int)Remnants.Dequeue());
            output.WriteBigEndian((int)Remnants.Dequeue());

            output.WriteBigEndian(HEADER_LENGTH + Pool.GetBodySize());
            output.WriteBigEndian(HEADER_LENGTH + Pool.GetBodySize());

            output.WriteBigEndian(HEADER_LENGTH);
            output.WriteBigEndian(ScriptNumber);

            output.WriteBigEndian((short)Remnants.Dequeue());
            output.Write((int)Remnants.Dequeue());
            output.Write((int)Remnants.Dequeue());
            output.Write((int)Remnants.Dequeue());
            output.Write((int)Remnants.Dequeue());

            output.WriteBigEndian(BehaviourScript);

            output.WriteBigEndian((int)Remnants.Dequeue());
            output.WriteBigEndian((short)Remnants.Dequeue());

            output.Write((short)Remnants.Dequeue());

            Pool.WriteTo(output);
        }
コード例 #2
0
        public void WriteTo(ShockwaveWriter output)
        {
            output.Write((ushort)TotalWidth | 0x8000);

            output.Write(Rectangle);
            output.Write(AlphaThreshold);
            output.Write(OLE);

            output.Write((short)RegistrationPoint.X);
            output.Write((short)RegistrationPoint.Y);

            output.Write((byte)Flags);

            if (BitDepth == 1)
            {
                return;
            }
            output.Write(BitDepth);

            if (Palette != 0)
            {
                return;
            }
            if (!IsSystemPalette)
            {
                Palette |= 0x8000;
            }
            output.Write(Palette);
        }
コード例 #3
0
        public override void WriteBodyTo(ShockwaveWriter output)
        {
            const short ENTRY_OFFSET = 48;

            output.Write(0);
            output.Write(0);
            output.Write(Sections.Count);
            output.Write(Sections.Count);

            output.Write(ENTRY_OFFSET);
            output.Write(SECTION_SIZE);

            output.Write(0);
            output.Write(Type);
            output.Write((int)Remnants.Dequeue());

            output.Write(NameChunkId);

            output.Write(ValidCount);
            output.Write(Flags);
            output.Write(FreeChunkId);

            foreach (LingoContextSection section in Sections)
            {
                section.WriteTo(output);
            }
        }
コード例 #4
0
        public override void WriteTo(ShockwaveWriter output)
        {
            Header.Length = GetBodySize();
            Header.WriteTo(output);

            WriteBodyTo(output);
        }
コード例 #5
0
 public override void WriteTo(ShockwaveWriter output)
 {
     throw new NotImplementedException(nameof(CommonMemberProperties));
     //output.Write(21); //TODO: "compress"
     //
     //int currentOffset = 0;
     //int[] propertyOffsets = new int[22];
     //
     //output.Position += 22 * sizeof(int);
     //
     //for (int i = 0; i < 22; i++)
     //{
     //    propertyOffsets[i] = currentOffset;
     //    WriteProperty(output, i, ref currentOffset);
     //}
     //
     //output.Position -= 22 * sizeof(int);
     //output.Position -= currentOffset;
     //
     //for (int i = 0; i < 22; i++)
     //{
     //    output.Write(propertyOffsets[i]);
     //}
     //
     //output.Position += currentOffset; //We are finished here, go to end
 }
コード例 #6
0
 public override void WriteTo(ShockwaveWriter output)
 {
     output.Write(Unknown);
     output.Write(Id);
     output.Write((short)Flags);
     output.Write(Link);
 }
コード例 #7
0
        public override void WriteTo(ShockwaveWriter output)
        {
            output.WriteBigEndian(21); //TODO: "compress"

            int currentOffset = 0;

            int[] propertyOffsets = new int[22];

            output.Position += 22 * sizeof(int);

            for (int i = 0; i < 22; i++)
            {
                propertyOffsets[i] = currentOffset;
                WriteProperty(output, i, ref currentOffset);
            }

            output.Position -= 22 * sizeof(int);
            output.Position -= currentOffset;

            for (int i = 0; i < 22; i++)
            {
                output.WriteBigEndian(propertyOffsets[i]);
            }

            output.Position += currentOffset; //We are finished here, go to end
        }
コード例 #8
0
        public override void WriteBodyTo(ShockwaveWriter output)
        {
            const short ENTRY_OFFSET = 48;

            output.WriteBigEndian((int)Remnants.Dequeue());
            output.WriteBigEndian((int)Remnants.Dequeue());
            output.WriteBigEndian(Sections?.Count ?? 0); //TODO:
            output.WriteBigEndian(Sections?.Count ?? 0); //TODO:

            output.WriteBigEndian(ENTRY_OFFSET);
            output.WriteBigEndian(SECTION_SIZE);

            output.WriteBigEndian((int)Remnants.Dequeue());
            output.WriteBigEndian(Type);
            output.WriteBigEndian((int)Remnants.Dequeue());

            output.WriteBigEndian(NameListChunkId);

            output.WriteBigEndian((short)Remnants.Dequeue());
            output.Write((byte[])Remnants.Dequeue());
            output.WriteBigEndian((short)Remnants.Dequeue());

            foreach (ScriptContextSection section in Sections)
            {
                section.WriteTo(output);
            }
        }
コード例 #9
0
        public override void WriteBodyTo(ShockwaveWriter output)
        {
            const short HEADER_LENGTH = 92;

            output.Write(0);
            output.Write(0);

            output.Write(HEADER_LENGTH + Pool.GetBodySize());
            output.Write(HEADER_LENGTH + Pool.GetBodySize());

            output.Write(HEADER_LENGTH);
            output.Write(ScriptNumber);

            output.Write((short)Remnants.Dequeue());
            output.WriteBE(-1);
            output.WriteBE(0);
            output.WriteBE((int)Remnants.Dequeue());
            output.WriteBE(0);

            output.Write(Type);

            output.Write((int)Remnants.Dequeue());
            output.Write(CastMemberRef);

            output.WriteBE((short)Remnants.Dequeue());

            Pool.WriteTo(output);
        }
コード例 #10
0
 public override void WriteTo(ShockwaveWriter output)
 {
     output.WriteBigEndian(Unknown);
     output.WriteBigEndian(Id);
     output.WriteBigEndian(Flags);
     output.WriteBigEndian(Link);
 }
コード例 #11
0
 public override void WriteBodyTo(ShockwaveWriter output)
 {
     for (int i = 0; i < Members.Length; i++)
     {
         output.WriteBigEndian(Members[i]);
     }
 }
コード例 #12
0
        public override void WriteTo(ShockwaveWriter output)
        {
            //TODO:

            byte op = (byte)OP;

            if (Value > byte.MaxValue)
            {
                op += 0x40;
            }

            if (Value > short.MaxValue)
            {
                op += 0x40;
            }

            output.Write(op);

            if (op > 0xC0)
            {
                output.Write(Value);
            }
            else if (op > 0x80)
            {
                output.Write((short)Value);
            }
            else if (op > 0x40)
            {
                output.Write((byte)Value);
            }
        }
コード例 #13
0
ファイル: PaletteChunk.cs プロジェクト: jeffli678/Shockky
 public override void WriteBodyTo(ShockwaveWriter output)
 {
     foreach (Color color in Colors)
     {
         output.Write(color);
     }
 }
コード例 #14
0
        public void WriteTo(IBufferWriter <byte> output)
        {
            int size   = GetBodySize();
            var writer = new ShockwaveWriter(output.GetSpan(size), isBigEndian: true); //TODO: Endianness

            WriteTo(writer);
            output.Advance(size);
        }
コード例 #15
0
        public override int GetBodySize()
        {
            int size = 0;

            size += sizeof(int);
            size += IsVariableLength ? ShockwaveWriter.GetVarIntSize(Length) : sizeof(int);
            return(size);
        }
コード例 #16
0
        public void WriteTo(IBufferWriter <byte> output)
        {
            int size   = GetBodySize();
            var writer = new ShockwaveWriter(output.GetSpan(size), bigEndian: true); //TODO: How do we manage endianness when writing files

            WriteTo(writer);
            output.Advance(size);
        }
コード例 #17
0
ファイル: ShockwaveItem.cs プロジェクト: jeffli678/Shockky
 public byte[] ToArray()
 {
     using var ms = new MemoryStream();
     using var output = new ShockwaveWriter(ms);
     
     WriteTo(output);
     return ms.ToArray();
 }
コード例 #18
0
 public override void WriteTo(ShockwaveWriter output)
 {
     Header.WriteTo(output);
     output.WriteBE(Offset);
     output.WriteBE((short)Flags);
     output.WriteBE(Unknown);
     output.WriteBE(Link);
 }
コード例 #19
0
 public override void WriteTo(ShockwaveWriter output)
 {
     output.Write(Name);
     output.Write(FilePath);
     output.Write(PreloadSettings);
     output.Write(MemberMin);
     output.Write(MemberCount);
     output.Write(Id);
 }
コード例 #20
0
 public override void WriteTo(ShockwaveWriter output)
 {
     output.WriteVarInt(Id);
     output.WriteVarInt(Offset);
     output.WriteVarInt(Length);
     output.WriteVarInt(DecompressedLength);
     output.WriteVarInt(CompressionType);
     output.WriteBE((int)Header.Kind);
 }
コード例 #21
0
ファイル: SpriteProperties.cs プロジェクト: jeffli678/Shockky
 public override void WriteTo(ShockwaveWriter output)
 {
     throw new NotImplementedException();
     output.WriteBigEndian(StartFrame);
     output.WriteBigEndian(EndFrame);
     output.WriteBigEndian(0);
     output.WriteBigEndian(Channel);
     output.WriteBigEndian(SpritePropertiesOffsetsOffset);
 }
コード例 #22
0
ファイル: InitialMapChunk.cs プロジェクト: gstack/Shockky
 public override void WriteBodyTo(ShockwaveWriter output)
 {
     output.WriteBE(MemoryMapOffsets.Length);
     for (int i = 0; i < MemoryMapOffsets.Length; i++)
     {
         output.WriteBE(MemoryMapOffsets[i]);
     }
     output.WriteBE((int)Version);
 }
コード例 #23
0
        public override void WriteTo(ShockwaveWriter output)
        {
            output.Write7BitEncodedInt(Header.Id);
            output.Write7BitEncodedInt(Offset);
            output.Write7BitEncodedInt(CompressedLength);
            output.Write7BitEncodedInt(DecompressedLength);
            output.Write7BitEncodedInt((int)CompressionType);

            output.WriteReversedString(Header.Kind.ToFourCC());
        }
コード例 #24
0
 public override void WriteBodyTo(ShockwaveWriter output)
 {
     output.Write(ENTRY_SIZE);
     output.Write(ENTRY_SIZE);
     output.Write(CastEntries?.Count ?? 0);
     output.Write(CastEntries?.Count ?? 0);
     foreach (CastEntry entry in CastEntries)
     {
         entry.WriteTo(output);
     }
 }
コード例 #25
0
ファイル: TextFormat.cs プロジェクト: jeffli678/Shockky
 public override void WriteTo(ShockwaveWriter output)
 {
     output.WriteBigEndian(Offset);
     output.WriteBigEndian(Height);
     output.WriteBigEndian(Ascent);
     output.WriteBigEndian(FontId);
     output.Write(Slant);
     output.Write(Padding);
     output.WriteBigEndian(FontSize);
     output.Write(Color);
 }
コード例 #26
0
        public override int GetBodySize()
        {
            int size = 0;

            size += ShockwaveWriter.GetVarIntSize(Id);
            size += ShockwaveWriter.GetVarIntSize(Offset);
            size += ShockwaveWriter.GetVarIntSize(Length);
            size += ShockwaveWriter.GetVarIntSize(DecompressedLength);
            size += ShockwaveWriter.GetVarIntSize(CompressionType);
            size += sizeof(int);
            return(size);
        }
コード例 #27
0
 public override void WriteTo(ShockwaveWriter output)
 {
     output.WriteBE((int)Kind);
     if (IsVariableLength)
     {
         output.WriteVarInt(Length);
     }
     else
     {
         output.WriteBE(Length);
     }
 }
コード例 #28
0
        public override void WriteBodyTo(ShockwaveWriter output)
        {
            output.WriteBigEndian(BitField.Length);
            output.Write(BitField);

            output.WriteBigEndian((ushort)Offsets.Count);
            for (int i = 0; i < Offsets.Count; i++)
            {
                output.WriteBigEndian(Offsets[i]);
            }
            //TODO
        }
コード例 #29
0
        public override void WriteBodyTo(ShockwaveWriter output)
        {
            output.Write((int)Remnants.Dequeue());
            output.Write((int)Remnants.Dequeue());

            foreach (Color color in Colors)
            {
                output.Write(color.R);
                output.Write(color.G);
                output.Write(color.B);
            }
        }
コード例 #30
0
        public void WriteTo(ShockwaveWriter output)
        {
            throw new NotImplementedException(nameof(TextCastProperties));
            output.WriteBigEndian((short)Alignment);
            output.Write(BackgroundColor);

            output.WriteBigEndian(Font);
            output.Write(Rectangle);
            output.WriteBigEndian(LineHeight);

            output.WriteBigEndian(ButtonType);
        }