public void WriteToStreamTest() { ReportStart(); int blockSize = 4; DisposalMethod disposalMethod = DisposalMethod.DoNotDispose; bool expectsUserInput = false; bool hasTransparentColour = true; int delayTime = 10; int transparentColourIndex = 6; _gce = new GraphicControlExtension( blockSize, disposalMethod, expectsUserInput, hasTransparentColour, delayTime, transparentColourIndex ); MemoryStream s = new MemoryStream(); _gce.WriteToStream( s ); s.Seek( 0, SeekOrigin.Begin ); _gce = new GraphicControlExtension( s ); Assert.AreEqual( ErrorState.Ok, _gce.ConsolidatedState ); Assert.AreEqual( blockSize, _gce.BlockSize ); Assert.AreEqual( disposalMethod, _gce.DisposalMethod ); Assert.AreEqual( expectsUserInput, _gce.ExpectsUserInput ); Assert.AreEqual( hasTransparentColour, _gce.HasTransparentColour ); Assert.AreEqual( delayTime, _gce.DelayTime ); Assert.AreEqual( transparentColourIndex, _gce.TransparentColourIndex ); ReportEnd(); }
/// <summary> /// Writes a Graphic Control Extension to the supplied output stream. /// </summary> /// <param name="frame"> /// The GifFrame to which this graphic control extension relates. /// </param> /// <param name="transparentColourIndex"> /// The index within the active colour table of the transparent colour. /// </param> /// <param name="outputStream"> /// The stream to write to. /// </param> private void WriteGraphicCtrlExt( GifFrame frame, int transparentColourIndex, Stream outputStream ) { outputStream.WriteByte( GifComponent.CodeExtensionIntroducer ); outputStream.WriteByte( GifComponent.CodeGraphicControlLabel ); // The frame doesn't have have a graphic control extension yet, so we // need to work out what it would contain. DisposalMethod disposalMethod; bool hasTransparentColour; if( _transparent == Color.Empty ) // TODO: remove reference to _transparent - parameterise? { hasTransparentColour = false; disposalMethod = DisposalMethod.NotSpecified; // dispose = no action } else { // TESTME: WriteGraphicCtrlExt - _transparent != Color.Empty hasTransparentColour = true; disposalMethod = DisposalMethod.RestoreToBackgroundColour; // force clear if using transparent color } int blockSize = 4; GraphicControlExtension gce = new GraphicControlExtension( blockSize, disposalMethod, frame.ExpectsUserInput, hasTransparentColour, frame.Delay, transparentColourIndex ); gce.WriteToStream( outputStream ); }