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();
        }
Esempio n. 2
0
		/// <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 );
		}