/// <summary> /// Writes rectangle to the writer. /// </summary> /// <param name="writer">Writer to which to write rectangle.</param> /// <param name="rect">Rectangle to be written.</param> public static void WriteRect(this ISwfStreamWriter writer, ref SwfRect rect) { var btCount = new SignedBitsCount(rect.XMin, rect.XMax, rect.YMin, rect.YMax); var bits = btCount.GetBits(); if (bits < 1) bits = 1; writer.WriteUnsignedBits(bits, 5); writer.WriteSignedBits(rect.XMin, bits); writer.WriteSignedBits(rect.XMax, bits); writer.WriteSignedBits(rect.YMin, bits); writer.WriteSignedBits(rect.YMax, bits); writer.FlushBits(); }
public static void WriteColorTransformRGB(this ISwfStreamWriter writer, ref ColorTransformRGB tranform) { var bitsCounter = new SignedBitsCount(0); if (tranform.HasAddTerms) { bitsCounter.AddValue(tranform.RedAddTerm); bitsCounter.AddValue(tranform.GreenAddTerm); bitsCounter.AddValue(tranform.BlueAddTerm); } if (tranform.HasMultTerms) { bitsCounter.AddValue(tranform.RedMultTerm); bitsCounter.AddValue(tranform.GreenMultTerm); bitsCounter.AddValue(tranform.BlueMultTerm); } writer.WriteBit(tranform.HasAddTerms); writer.WriteBit(tranform.HasMultTerms); var bits = bitsCounter.GetBits(); writer.WriteUnsignedBits(bits, 4); if (tranform.HasMultTerms) { writer.WriteSignedBits(tranform.RedMultTerm, bits); writer.WriteSignedBits(tranform.GreenMultTerm, bits); writer.WriteSignedBits(tranform.BlueMultTerm, bits); } if (tranform.HasAddTerms) { writer.WriteSignedBits(tranform.RedAddTerm, bits); writer.WriteSignedBits(tranform.GreenAddTerm, bits); writer.WriteSignedBits(tranform.BlueAddTerm, bits); } writer.FlushBits(); }