package sonnetFractal;

//import java.awt.*;
//import java.awt.image.*;

//import javax.swing.SwingUtilities;
/*import javax.imageio.ImageIO;

import java.io.File;
import java.io.IOException;

//Stuff From Java E-Democracy Software
import javax.swing.*;

//import java.awt.TextArea;
//import java.awt.BorderLayout;
//import javax.swing.JTree.*;
//import java.awt.event.KeyEvent;
//import javax.swing.AbstractButton.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
//import java.awt.event.KeyEvent;

//import org.gerhardb.lib.swing.*;


import javax.swing.ImageIcon;
import javax.swing.JLabel;
//import javax.swing.JButton;

import javax.swing.JTabbedPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import java.awt.Dimension;*/

//import javax.swing.JPanel;
/*import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.BodyElement;
import com.google.gwt.dom.client.ImageElement;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.resources.client.ResourceCallback;
import com.google.gwt.resources.client.ResourceException;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.canvas.client.Canvas;
import com.google.gwt.canvas.dom.client.Context2d;
import com.google.gwt.canvas.dom.client.ImageData;
import com.google.gwt.canvas.dom.client.CanvasPixelArray;//*/
import com.google.gwt.user.client.ui.RootPanel;
import org.vaadin.gwtgraphics.client.DrawingArea;
import org.vaadin.gwtgraphics.client.shape.Rectangle;


/*import javax.swing.JComponent;

import javax.swing.UIManager;

import java.awt.Toolkit;*/


/*
v/ Kabala - Unknown Artist
v/ Grand Unified Theory - Paul Oakenfold - Perfecto Presents Another World CD 1.mp3
v/ Supreme Matrix Theory - Paul Oakenfold - Perfecto Presents Another World II.mp3
v/ Cyberology - Ken Ishii Discography
v/ HealPacks - super furry animals - juxtaposed with u.mp3
v/ Sky Net - Paul Oakenfold - Essential Mix in China.mp3 + Paul Oakenfold - Miami Part 2.mp3
v/ Infinite Number Theorem - Sasha Discography
v/ Poisonoloy - Robert Miles Discography
v/ FountainOfYouth.info - (2006-01-01) Radio 1 Essential Mix - Sasha.mp3
v/ Shill: Sherri Kane the Confuser - Massive Attack
v/ Nuclear War - E:\MP3s\Game Music\Fallout 1 - A Post Nuclear Role-Playing Game Soundtrack\01 - Ink Spots - Maybe (fallout theme).mp3 And The Rest
v/ E-Democracy - E:\MP3s\Game Music\DeusEX\  25:23
v/ Grand Windmill - Paul Oakenfold - Global Underground NYC.mp3  54:09
Progenitor Aliens - E:\MP3s\Anbrok\01-anbrok_-_anbrok_sessions_051.mp3  240:01
v/ Jewlluminati History - Infected Mushrooom Discography
My Life Story - Silence - Skin (Valentino Kanzyani Mix).mp3   E:\MP3s\Anbrok\02-anbrok_-_anbrok_sessions_050_progressive_yearmix.mp3  4:08 + 89:55
How The War Was Won - E:\MP3s\Robs Music\CD 4\01 Track 1.mp3 -> 13  79:14
Peace De La NanoRenasance - E:\MP3s\Robs Music\CD 3\04 Track 4.mp3     (2005-11-06 00-59) The Essential Mix BBC Radio 1- M.A.N.D.Y.mp3  2:39 + 122:37
How The Government Caused 911 - Rammstein  91:47
Sky Command - Nine Inch Nails Discography + All Quake Songs + E:\MP3s\Juno Reactor - The Remixes (1993-2003)\Juno Reactor & Don Davis - Mona Lisa Overdrive.mp3
139:53 + 28:47 + 180:06 + 4:45
Book Of The Law Explained - Hybrid Discography  587:11
My Previous Incarnations - Red Yellow Blue With Green Text BlackGreen.css - DJ Mystik - Lost in trance.mp3  2:54
Mental Health Gulag - Underworld  189:23
Elven Alliance.com - Lords of Acid  72:02
v/ MainPage - KMFDM + DJ Beck - Super Mix(feat.303Infinity,ATC,ATB,Alya,DJScott,BT,Prodigy,RobertMiles,PetShopBoys,Okenfold,DJ.mp3
Avatars and Pictures - Bt Discography 436:14
v/ Supreme Magic Spell Book - OMD - Secret (12 inch mix).mp3
v/ Magic Gizmos - C:\Users\Alex\Desktop\1st Drawr\BackgroundRecordings\Deadmau5 From MP3 Player\[2006] Get Scraped  66:14
v/ Illuminati's Greatest Secret - DeadMause on MP3 Player   198:10
All Sizes Are 1422x860
2351 Left 32.327 Gigs Left To Do
 */

public class SonnetFractal

{
	static int initialScreenSizeX = 1440, initialScreenSizeY = 900;//862
	static int borderSizeX = initialScreenSizeX/12, borderSizeY = initialScreenSizeY/6;
	static int choice = 0;//0 is SkyNet Pyramid, 1 is Full Spectral Rainbow, 2 is Y and Sonnet
	static final int numberOfColorsInTheRainbow = 7;//asdf
	static final Color red = new Color( new double[]{193,0,0} );
	static final Color orange = new Color( new double[]{255,134,0} );
	static final Color yellow = new Color( new double[]{246,252,15} );
	static final Color green = new Color( new double[]{0,133,50} );
	static final Color teal = new Color( new double[]{3,224,149} );
	static final Color blue = new Color( new double[]{0,0,192} );
	static final Color purple = new Color( new double[]{122,0,178} );
	static final Color black = new Color( new double[]{0,0,0} );
	static final Color white = new Color( new double[]{255,255,255} );
	static final Color brown = new Color( new double[]{131,103,71} );
	static final Color bronze = new Color( new double[]{152,123,46} );
	static final Color silver = new Color( new double[]{193,192,192} );
	static final Color gold = new Color( new double[]{205,191,44} );
	static final Color lime = new Color( new double[]{126,193,33} );
	static final Color pink = new Color( new double[]{255,64,143} );

	static public void main(String[] args) throws InterruptedException
	{
		int[] Dim = {initialScreenSizeX, initialScreenSizeY};
		DrawingArea canvas = new DrawingArea(Dim[0], Dim[1]);
		RootPanel.get().add(canvas);
		
		canvas.add(new Rectangle(100, 100, 40, 40) );
		
		//Dim[0] = fCanvas.getCoordinateSpaceWidth();
		//Dim[1] = fCanvas.getCoordinateSpaceHeight();
		int x = 0, y = 0, xSlider = 0, xMinusxSlider = 0, cxMx = 0, ySlider = 0, yMinusySlider = 0, cyMy = 0, a = 0, b = 0;//cxMx Corrected xMinusSlider for determining color
		Color color = new Color( new double[]{0,0,0} );
		double colorInterval = Dim[0] / ( numberOfColorsInTheRainbow - 1 );
		int cx = Math.round( (Dim[0] + 1  ) / 2 - 1 );
		int cy = Math.round( (Dim[1] + 1 ) / 2 - 1 );
		double totalAngleUnits = 0;
		//double spectralBrightnessMultiplyer = 1/2;
		boolean fractalOn = true;
		boolean TrispectralRainbow = false;
		//Dimension DimLast = Dim;
		//Thread.sleep(4000);
		while (choice != 4)
		{
			if (choice == 0)
			{
				//Dimension DimLast = Dim;
				//Dim[0] = fCanvas.getCoordinateSpaceWidth();
				//Dim[1] = fCanvas.getCoordinateSpaceHeight();
				//Dim.height = Dim.height - 60;//Use only For Circular Rainbow
				colorInterval = Dim[0] / ( numberOfColorsInTheRainbow - 1 );
				//colorInterval = Dim.height / ( 2 * ( numberOfColorsInTheRainbow - 1 ) );
				if (TrispectralRainbow == true)
					colorInterval = colorInterval / 3;//For Trispectral Rainbow.
				for (xSlider = 0; xSlider < 1444; xSlider++)//-144 Use cy And < Dim.height Instead of Dim.height For Circular Rainbow //Start At -144 For Videos And Pictures
				{
					//Dim[0] = fCanvas.getCoordinateSpaceWidth();
					//Dim[1] = fCanvas.getCoordinateSpaceHeight();
					//Dim.height = Dim.height - 60;//Use only For Circular Rainbow
					colorInterval = Dim[0] / ( numberOfColorsInTheRainbow - 1 );
					//cx = Math.round( (Dim.width + 1  ) / 2 - 1 );
					//cy = Math.round( (Dim.height + 1 ) / 2 - 1 );
					//ySlider =  xSlider * Dim.height / Dim.width;
					for (x = 0; x < Dim[0]; x++)
					{
						if (fractalOn == true)
						{
							for (y = 0; y < Dim[1]; y++)//Comment Out Here For Rainbow Slider
							{//Comment Out Here For Rainbow Slider
								yMinusySlider = y - ySlider;//Comment Out Here For Rainbow Slider
								//yMinusySlider = y;//For Testing Only!
								//Comment Out Below For Rainbow Slider
								//if ( yMinusySlider < 0)// To Test Moving Rainbow From Left To Right
								//	cyMy = yMinusySlider + Dim.height;// To Test Moving Rainbow From Left To Right
								//else cyMy = yMinusySlider;// To Test Moving Rainbow From Left To Right

								if ( ( x - Dim[0] / 2 ) != 0)// && y != 0
								{
									a = - ( x - Dim[0] / 2 ) - ( y - Dim[1] / 2 ) * Dim[1] / ( x - Dim[0] / 2 ) * (int)Math.pow(xSlider , 1.44) / Dim[0];
									while ( a < 0 )
										a = (int)(a + 6 * colorInterval);
									while ( a > 6 * colorInterval )
										a = (int)(a - 6 * colorInterval);
									if ( a < colorInterval )//For Normal Rainbow Use This Instead Of The Others
										color.ColorSlider(colorInterval, a, red, orange);
									else if ( a < ( 2 * colorInterval ) )
										color.ColorSlider(colorInterval, a - colorInterval, orange, yellow);
									else if ( a < ( 3 * colorInterval ) )		
										color.ColorSlider(colorInterval, a - 2 * colorInterval, yellow, green);
									else if ( a < ( 4 * colorInterval ) )
										color.ColorSlider(colorInterval, a - 3 * colorInterval, green, teal);
									else if ( a < ( 5 * colorInterval ) )
										color.ColorSlider(colorInterval, a - 4 * colorInterval, teal, blue);
									else
										color.ColorSlider(colorInterval, a - 5 * colorInterval, blue, purple);
								}
								else color.RGB = black.RGB;
								//context.beginPath();
								//imageData.setRedAt((int)color.RGB[0], x, y);
								//imageData.setBlueAt((int)color.RGB[1], x, y);
								//imageData.setGreenAt((int)color.RGB[2], x, y);
								//context.closePath();

							}
						}
						else
						{
							xMinusxSlider = x - xSlider;// To Test Moving Rainbow From Left To Right
							//xMinusxSlider = x;//For Testing Only!
							if ( xMinusxSlider < 0 )// To Test Moving Rainbow From Left To Right
								cxMx = xMinusxSlider + Dim[0];// To Test Moving Rainbow From Left To Right
							else cxMx = xMinusxSlider;// To Test Moving Rainbow From Left To Right
							//Comment Out Above For Rainbow Slider

							/*if ( cxMx < colorInterval ) // Cyberology - Ken Ishii Discography
    					color.ColorSlider(colorInterval, cxMx, yellow, blue);
	  				else
	  					color.ColorSlider(colorInterval, cxMx - colorInterval, blue, purple);//*/

							/*if ( cxMx < colorInterval ) // HealPacks - super furry animals - juxtaposed with u.mp3
    					color.ColorSlider(colorInterval, cxMx, yellow, red);
	  				else
	  					color.ColorSlider(colorInterval, cxMx - colorInterval, red, purple);//*/

							/*if ( cxMx < colorInterval ) // Sky Net - Paul Oakenfold - Essential Mix in China.mp3 + Paul Oakenfold - Miami Part 2.mp3    					color.ColorSlider(colorInterval, cxMx, red, silver);
    					color.ColorSlider(colorInterval, cxMx, red, silver);
    				else if ( cxMx < ( 2 * colorInterval ) )	
    					color.ColorSlider(colorInterval, cxMx - colorInterval, silver, gold);
    				else		
    					color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, gold, blue);//*/

							//color.ColorSlider(colorInterval, cxMx, green, purple);//Infinite Number Theorem

							/*if ( cxMx < colorInterval ) // Fountain of Youth
    					color.ColorSlider(colorInterval, cxMx, red, black);
    				else
    					color.ColorSlider(colorInterval, cxMx - colorInterval, blue, purple);//*/



							/*if ( cxMx < colorInterval ) // Shill
    					color.ColorSlider(colorInterval, cxMx, red, black);
    				else
    					color.ColorSlider(colorInterval, cxMx - colorInterval, black, red);//*/

							/*if ( cxMx < colorInterval ) // Grand Windmill
    					color.ColorSlider(colorInterval, cxMx, bronze, silver);
    				else if ( cxMx < ( 2 * colorInterval ) )	
    					color.ColorSlider(colorInterval, cxMx - colorInterval, silver, gold);
    				else		
    					color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, gold, black);//*/

							/*if ( cxMx < colorInterval ) // Poisonology
    					color.ColorSlider(colorInterval, cxMx, green, green);
    				else if ( cxMx < ( 2 * colorInterval ) )	
    					color.ColorSlider(colorInterval, cxMx - colorInterval, green, blue);
    				else if ( cxMx < ( 3 * colorInterval ) )	
    					color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, blue, green);
    				else if ( cxMx < ( 4 * colorInterval ) )	
    					color.ColorSlider(colorInterval, cxMx - 3 * colorInterval, green, green);//*/

							/*if ( cxMx < colorInterval ) // Nuclear War
    					color.ColorSlider(colorInterval, cxMx, red, green);
					else if ( cxMx < ( 2 * colorInterval ) )
						color.ColorSlider(colorInterval, cxMx - colorInterval, green, black);
					else if ( cxMx < ( 3 * colorInterval ) )
						color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, black, white);
					else if ( cxMx < ( 4 * colorInterval ) )
						color.ColorSlider(colorInterval, cxMx - 3 * colorInterval, white, black);
					else if ( cxMx < ( 5 * colorInterval ) )
						color.ColorSlider(colorInterval, cxMx - 4 * colorInterval, black, green);
					else
						color.ColorSlider(colorInterval, cxMx - 5 * colorInterval, green, red);//*/

							/*if ( cxMx < colorInterval ) // E-Democracy
    					color.ColorSlider(colorInterval, cxMx, green, gold);
					else if ( cxMx < ( 2 * colorInterval ) )
						color.ColorSlider(colorInterval, cxMx - colorInterval, gold, red);
					else if ( cxMx < ( 3 * colorInterval ) )		
						color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, red, purple);
					else if ( cxMx < ( 4 * colorInterval ) )
						color.ColorSlider(colorInterval, cxMx - 3 * colorInterval, purple, white);
    				else if ( cxMx < ( 5 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 4 * colorInterval, white, black);
    				else if ( cxMx < ( 6 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 5 * colorInterval, black, orange);
    				else if ( cxMx < ( 7 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 6 * colorInterval, orange, yellow);
    				else if ( cxMx < ( 8 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 7 * colorInterval, yellow, blue);
    				else if ( cxMx < ( 9 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 8 * colorInterval, blue, silver);
    				else if ( cxMx < ( 10 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 9 * colorInterval, silver, brown);
    				else
    					color.ColorSlider(colorInterval, cxMx - 10 * colorInterval, brown, bronze);//*/





							/*if ( cxMx < colorInterval ) // Main Page - KMFDM +  + DJ Beck - Super Mix(feat.303Infinity,ATC,ATB,Alya,DJScott,BT,Prodigy,RobertMiles,PetShopBoys,Okenfold,DJ.mp3
    					color.ColorSlider(colorInterval, cxMx, red, green);
					else if ( cxMx < ( 2 * colorInterval ) )
						color.ColorSlider(colorInterval, cxMx - colorInterval, green, blue);
					else		
						color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, blue, red);//*/

							/*if ( cxMx < colorInterval ) // BAD!!! Main Page - KMFDM
    					color.ColorSlider(colorInterval, cxMx, red, bronze);
					else if ( cxMx < ( 2 * colorInterval ) )
						color.ColorSlider(colorInterval, cxMx - colorInterval, bronze, silver);
					else if ( cxMx < ( 3 * colorInterval ) )		
						color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, silver, gold);
					else if ( cxMx < ( 4 * colorInterval ) )
						color.ColorSlider(colorInterval, cxMx - 3 * colorInterval, gold, green);
    				else if ( cxMx < ( 5 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 4 * colorInterval, green, green);
    				else if ( cxMx < ( 6 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 5 * colorInterval, green, gold);
    				else if ( cxMx < ( 7 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 6 * colorInterval, gold, silver);
    				else if ( cxMx < ( 8 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 7 * colorInterval, silver, bronze);
    				else if ( cxMx < ( 9 * colorInterval ) )
    					color.ColorSlider(colorInterval, cxMx - 8 * colorInterval, bronze, blue);
    				else
    					color.ColorSlider(colorInterval, cxMx - 9 * colorInterval, blue, blue);//*/



							/*if ( cxMx < colorInterval ) // Jewlluminati History
    					color.ColorSlider(colorInterval, cxMx, blue, red);
    				else
    					color.ColorSlider(colorInterval, cxMx - colorInterval, red, blue);//*/

							/*if ( cxMx < colorInterval ) // My Life Story
    					color.ColorSlider(colorInterval, cxMx, green, red);
					else
						color.ColorSlider(colorInterval, cxMx - colorInterval, red, green);//*/



							/*if ( cxMx < colorInterval ) // Sky Command
    					color.ColorSlider(colorInterval, cxMx, red, orange);
					else if ( cxMx < ( 2 * colorInterval ) )
						color.ColorSlider(colorInterval, cxMx - colorInterval, orange, yellow);
					else if ( cxMx < ( 3 * colorInterval ) )		
						color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, yellow, lime);
					else
						color.ColorSlider(colorInterval, cxMx - 3 * colorInterval, lime, green);//*/




							if ( cxMx < colorInterval )//For Normal Rainbow Use This Instead Of The Others
								color.ColorSlider(colorInterval, cxMx, red, orange);
							else if ( cxMx < ( 2 * colorInterval ) )
								color.ColorSlider(colorInterval, cxMx - colorInterval, orange, yellow);
							else if ( cxMx < ( 3 * colorInterval ) )		
								color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, yellow, green);
							else if ( cxMx < ( 4 * colorInterval ) )
								color.ColorSlider(colorInterval, cxMx - 3 * colorInterval, green, teal);
							else if ( cxMx < ( 5 * colorInterval ) )
								color.ColorSlider(colorInterval, cxMx - 4 * colorInterval, teal, blue);
							else
								color.ColorSlider(colorInterval, cxMx - 5 * colorInterval, blue, purple);//*/


							/*if ( cxMx <= ( 6 * colorInterval ) )
    				{
    					if ( cxMx < colorInterval )	
        					color.ColorSlider(colorInterval, cxMx, 0.5, red, orange);
    					else if ( cxMx < ( 2 * colorInterval ) )
    						color.ColorSlider(colorInterval, cxMx - colorInterval, 0.5, orange, yellow);
    					else if ( cxMx < ( 3 * colorInterval ) )		
    						color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, 0.5, yellow, green);
    					else if ( cxMx < ( 4 * colorInterval ) )
    						color.ColorSlider(colorInterval, cxMx - 3 * colorInterval, 0.5, green, teal);
        				else if ( cxMx < ( 5 * colorInterval ) )
        					color.ColorSlider(colorInterval, cxMx - 4 * colorInterval, 0.5, teal, blue);
        				else
        					color.ColorSlider(colorInterval, cxMx - 5 * colorInterval, 0.5, blue, purple);
    				}
    				else if ( cxMx <= ( 12 * colorInterval ) )
    				{
    					if ( cxMx < ( 7 * colorInterval ) )	
        					color.ColorSlider(colorInterval, cxMx - 6 * colorInterval, red, orange);
    					else if ( cxMx < ( 8 * colorInterval ) )
    						color.ColorSlider(colorInterval, cxMx - 7 * colorInterval, orange, yellow);
    					else if ( cxMx < ( 9 * colorInterval ) )		
    						color.ColorSlider(colorInterval, cxMx - 8 * colorInterval, yellow, green);
    					else if ( cxMx < ( 10 * colorInterval ) )
    						color.ColorSlider(colorInterval, cxMx - 9 * colorInterval, green, teal);
        				else if ( cxMx < ( 11 * colorInterval ) )
        					color.ColorSlider(colorInterval, cxMx - 10 * colorInterval, teal, blue);
        				else
        					color.ColorSlider(colorInterval, cxMx - 11 * colorInterval, blue, purple);
    				}
    				else
    				{
    					if ( cxMx < ( 13 * colorInterval ) )	
        					color.ColorSlider(colorInterval, cxMx - 12 * colorInterval, 2, red, orange);
    					else if ( cxMx < ( 14 * colorInterval ) )
    						color.ColorSlider(colorInterval, cxMx - 13 * colorInterval, 2, orange, yellow);
    					else if ( cxMx < ( 15 * colorInterval ) )		
    						color.ColorSlider(colorInterval, cxMx - 14 * colorInterval, 2, yellow, green);
    					else if ( cxMx < ( 16 * colorInterval ) )
    						color.ColorSlider(colorInterval, cxMx - 15 * colorInterval, 2, green, teal);
        				else if ( cxMx < ( 17 * colorInterval ) )
        					color.ColorSlider(colorInterval, cxMx - 16 * colorInterval, 2, teal, blue);
        				else
        					color.ColorSlider(colorInterval, cxMx - 17 * colorInterval, 2, blue, purple);
    				}//*/

							//GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER!
							//GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER!
							//GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER!
							//GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER! GO HERE FOR RAINBOW SLIDER!
							for (y = 0; y < Dim[1]; y++)//For Sideways Rainbow Works On My Machine.
							{
								//context.beginPath();
								//imageData.setRedAt((int)color.RGB[0], x, y);
								//imageData.setBlueAt((int)color.RGB[1], x, y);
								//imageData.setGreenAt((int)color.RGB[2], x, y);//(double[])red.get());
								//context.closePath();
							}
						}
						//if (x < Dim.height) //For Diagonal Rainbow Works On My Machine.
						//	for (y = x; y >= 0; y--)
						//		wr.setPixel( x - y, y, color.RGB);
						//else
						//	for (y = Dim.height - 1; y >= 0; y--)
						//		wr.setPixel( x - y, y, color.RGB);//*/

						/*for (int r = 0; r <= cy; r++)//For Normal Rainbow Use This Instead Of The Other 3
    				{
    					xMinusSlider = r - Slider;
						//xMinusSlider = r;
						if ( xMinusSlider < 0)
							cxMx = xMinusSlider + cy;
						else cxMx = xMinusSlider;

						color.ColorSlider(colorInterval, cxMx, green, purple);

						/*if ( cxMx <= ( 6 * colorInterval ) )
	    				{
	    					if ( cxMx < colorInterval )	
	        					color.ColorSlider(colorInterval, cxMx, red, orange);
	    					else if ( cxMx < ( 2 * colorInterval ) )
	    						color.ColorSlider(colorInterval, cxMx - colorInterval, orange, yellow);
	    					else if ( cxMx < ( 3 * colorInterval ) )		
	    						color.ColorSlider(colorInterval, cxMx - 2 * colorInterval, yellow, green);
	    					else if ( cxMx < ( 4 * colorInterval ) )
	    						color.ColorSlider(colorInterval, cxMx - 3 * colorInterval, green, teal);
	        				else if ( cxMx < ( 5 * colorInterval ) )
	        					color.ColorSlider(colorInterval, cxMx - 4 * colorInterval, teal, blue);
	        				else
	        					color.ColorSlider(colorInterval, cxMx - 5 * colorInterval, blue, purple);
	        			}//*/
						/*totalAngleUnits = Math.round( ( r * ( 2 * Math.PI ) - 1 ) * Math.PI );//  * Math.PI  Seems To Be Wrong But Is Necessary With Math Inaccuracy!
    					if ( r==0 )
    						wr.setPixel(cx, cy, color.RGB);
    					for (int a = 0; a <= totalAngleUnits; a++)//a = angle interval so that all angles are included
    					{
    						wr.setPixel( (int)Math.round( cx + Math.cos( ( a/totalAngleUnits ) * 2 * Math.PI ) * r ),
    								     (int)Math.round( cy + Math.sin( ( a/totalAngleUnits ) * 2 * Math.PI ) * r ), color.RGB);
    						//wr.setPixel( (int)Math.round( cx - Math.cos( ( a/totalAngleUnits ) * 2 * Math.PI ) * r ), (int)Math.round( cy + Math.sin( ( a/totalAngleUnits ) * 2 * Math.PI ) * r ), color.RGB);
    						//wr.setPixel( (int)Math.round( cx + Math.cos( ( a/totalAngleUnits ) * 2 * Math.PI ) * r ), (int)Math.round( cy - Math.sin( ( a/totalAngleUnits ) * 2 * Math.PI ) * r ), color.RGB);
    						//wr.setPixel( (int)Math.round( cx - Math.cos( ( a/totalAngleUnits ) * 2 * Math.PI ) * r ), (int)Math.round( cy - Math.sin( ( a/totalAngleUnits ) * 2 * Math.PI ) * r ), color.RGB);
    					}
    				}//*/
						//}//Comment Out Here For Rainbow Slider
					}













				}
				//choice = 1;
			}
			else if (choice == 1)
			{

				//Thread.sleep(1000);
				choice = 2;
			}
			else if (choice == 2)
			{
				//Dim[0] = fCanvas.getCoordinateSpaceWidth();
				//Dim[1] = fCanvas.getCoordinateSpaceHeight();

				//Thread.sleep(1000);
				choice = 4;
			}
		}
	}
}
//System.exit(0);

/*public class MainCanvas extends Canvas
{
    public void paint(Graphics g)
    {
        g.drawImage(SonnetFractal.I, 0, 0, Color.red, null);
        //Dim = getSize();
        //g.drawOval(0, 0, Dim.width, Dim.height);
    }
}
/*for (int i = 0; i < screenSizeX; ++i)
for(int j = 0; j < screenSizeY; ++j)
	I.setRGB(i, j, 0x000000); // Black Background
for (int j = 0; j<45; ++j)
I.setRGB(j, j, 0); // Scratch upper left corner
if(1>0)
{
	int x = screenSizeX - borderSizeX, y = screenSizeY - borderSizeY;
	int[] a = new int[y*x*3]; // 96 bit pixels
	for(int j = 0; j<y; ++j)
		for(int i = 0; i<x; ++i)
		{
			int z = 3*(j*x + i);
			a[z] = i; a[z+1] = j; a[z+2] = 128;
		}
		wr.setPixels(20, 20, x, y, a);
	}
	else
	{
		int[] a = new int[3];
		a[2] = 128;
		for(int j = 0; j<screenSizeY-40; ++j)
		{
			a[1] = j;
			for(int i = 0; i<screenSizeX-40; ++i)
			{
			a[0] = i;
			wr.setPixel(20+i, 20+j, a);
		}
	}
}
for(int q = 0; q < args.length; ++q)
        {
           int z = args[q].lastIndexOf('.');
           if (z > 0) try
           {
        	   ImageIO.write(
                I, args[q].substring(z+1),
                new File(args[q]));
           }
           catch (IOException e)
           {
            	  System.err.println("image not saved.");
           }

        }
 */