public void FloatImageRotationTest()
		{
			FloatBitmap bitmap = new FloatBitmap(5, 4);
			
			bitmap[3,1] = FloatBitmap.White;
			
			FloatBitmap rotatedBitmap = bitmap.Rotate90();
			Assert.AreEqual(FloatBitmap.White, rotatedBitmap[1,2]);
			
			
		}
		public void CountPixelsHelperHalfsTest()
		{
			
			FloatBitmap bitmap = new FloatBitmap(5,5);	
			bitmap[1,0] = FloatBitmap.Black;
			bitmap[1,1] = FloatBitmap.Black;
			bitmap[3,2] = FloatBitmap.Black;
			
			int ct1 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Top);
			int cb1 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Bottom);
			int cl1 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Left);
			int cr1 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Right);
			
			Assert.AreEqual(2, ct1,"Arriba 1");
			Assert.AreEqual(1, cb1,"Abajo 1");
			Assert.AreEqual(2, cl1,"Izquierda 1");
			Assert.AreEqual(1, cr1,"Derecha 1");
			
			bitmap = bitmap.Rotate90();
			
			int ct2 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Top);
			int cb2 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Bottom);
			int cl2 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Left);
			int cr2 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Right);
			
			Assert.AreEqual(1, ct2,"Arriba 2");
			Assert.AreEqual(2, cb2,"Abajo 2");
			Assert.AreEqual(2, cl2,"Izquierda 2 ");
			Assert.AreEqual(1, cr2,"Derecha 2");
			
			bitmap = bitmap.Rotate90();
			
			int ct3 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Top);
			int cb3 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Bottom);
			int cl3 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Left);
			int cr3 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Right);
			
			Assert.AreEqual(0, ct3,"Arriba 3");
			Assert.AreEqual(3, cb3,"Abajo 3");
			Assert.AreEqual(1, cl3,"Izquierda 3");
			Assert.AreEqual(2, cr3,"Derecha 3");
			
			bitmap = bitmap.Rotate90();
			
			int ct4 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Top);
			int cb4 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Bottom);
			int cl4 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Left);
			int cr4 = CountPixelsHelper.NumBlackPixelsInHalf(bitmap, Half.Right);
			
			Assert.AreEqual(2, ct4,"Arriba 4");
			Assert.AreEqual(1, cb4,"Abajo 4");
			Assert.AreEqual(0, cl4,"Izquierda 4");
			Assert.AreEqual(3, cr4,"Derecha 4");
		}
		public void CountPixelsHelperQuartersTest()
		{
			
			FloatBitmap bitmap = new FloatBitmap(5,5);	
			bitmap[1,0] = FloatBitmap.Black;
			bitmap[1,1] = FloatBitmap.Black;
			bitmap[3,2] = FloatBitmap.Black;
			
			int ct1 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.NW);
			int cb1 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.SW);
			int cl1 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.SE);
			int cr1 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.NE);
			
			Assert.AreEqual(2, ct1,"NW 1");
			Assert.AreEqual(0, cb1,"SW 1");
			Assert.AreEqual(1, cl1,"SE 1");
			Assert.AreEqual(0, cr1,"NE 1");
			
			bitmap = bitmap.Rotate90();
			
			int ct2 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.NW);
			int cb2 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.SW);
			int cl2 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.SE);
			int cr2 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.NE);
			
			Assert.AreEqual(0, ct2,"NW 2");
			Assert.AreEqual(2, cb2,"SW 2");
			Assert.AreEqual(0, cl2,"SE 2");
			Assert.AreEqual(1, cr2,"NE 2");
			
			bitmap = bitmap.Rotate90();
			
			int ct3 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.NW);
			int cb3 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.SW);
			int cl3 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.SE);
			int cr3 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.NE);
			
			Assert.AreEqual(0, ct3,"NW 3");
			Assert.AreEqual(1, cb3,"SW 3");
			Assert.AreEqual(2, cl3,"SE 3");
			Assert.AreEqual(0, cr3,"NE 3");
			
			bitmap = bitmap.Rotate90();
			
			int ct4 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.NW);
			int cb4 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.SW);
			int cl4 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.SE);
			int cr4 = 
				CountPixelsHelper.NumBlackPixelsInQuadrant(bitmap, Quadrant.NE);
			
			Assert.AreEqual(0, ct4,"NW 4");
			Assert.AreEqual(0, cb4,"SW 4");
			Assert.AreEqual(1, cl4,"SE 4");
			Assert.AreEqual(2, cr4,"NE 4");
		}
		/// <summary>
		/// Deshace la rotacion hecha con el metodo <c>Rotate</c>.
		/// </summary>
		/// <param name="bitmap">
		/// La imagen a rotar.
		/// </param>
		/// <returns>
		/// La imagen girada.
		/// </returns>
		private FloatBitmap UndoRotate(FloatBitmap bitmap)
		{
			FloatBitmap image = null;
			switch(mode)
			{
				
				case(WaterfallSegmenterMode.RightToLeft):
					image = bitmap.Rotate90().Rotate90().Rotate90();
					break;
				case(WaterfallSegmenterMode.TopToBottom):
					image = new FloatBitmap(bitmap);
					break;
				case(WaterfallSegmenterMode.BottomToTop):					
					image = bitmap.Rotate90().Rotate90();
					break;
				default:
					image = bitmap.Rotate90();
					break;
			}
			
			return image;
		}