package rainbowPackage;

//import javafx.scene.paint.Paint.*;
import javafx.scene.image.PixelReader;
//import rainbowPackage.VibrantColors;
//import rainbowPackage.VibrantColorCombos;
//import rainbowPackage.RainbowSoftColorCodesSets;
//import javafx.scene.image.PixelWriter;
import javafx.scene.paint.Color;
import java.awt.Dimension;

public final class Buddhism //RainbowSoft2D Houses A Series Of RainbowVideo.java Videos Or RainbowColorCodeSchemes.java For Frames

//FOR RainbowColorCodeSchemes.java! To Use RainbowSoftColorCodes And Access RainbowPattern2D.java Classes. This Class RainbowSoft2D Deals With Color Coding On 1 Layers To Make A Frame For RainbowVideo.java Which Accesses
{//This Class
	public static double[] rgb = {0,0,0}, argb = {0,0,0,1};
	public static Color fxColor = Color.BEIGE, tempColor = Color.OLIVE;//returnImmediatlyColor = fxColor.LAVENDER;
	public static Color[] fxColorArray = { Color.PINK, Color.SKYBLUE };
	//public static ArrayReverser arrayReverser = new ArrayReverser();
	public static ColorArrayReverser colorArrayReverser = new ColorArrayReverser();
	//public static ColorSlider tempColorSlider = new ColorSlider();
	public static TransparencySlider transparencySlider = new TransparencySlider( VibrantColors.Black );
	public static double colorBeingChecked = 0, opacityBeingChecked = 1, colorBarDistance = 0;
	public static ColorFader tempColorFader = new ColorFader();
	public static ColorTooSimilar colorTooSimilarFunction = new ColorTooSimilar();
	//public static RainbowSoftColorCodesSets rainbowSoftColorCodesSets = new RainbowSoftColorCodesSets();
	public static double ColorBeingChecked = 0, OpacityBeingChecked = 1, sliderValue = 0, originalFormulaValue = 0, numberOfTransitions = 0, coreVariableStill = 0, coreTranisitionVariable = 0, eightColorDiamondsIndexStill = 0, eightColorDiamondsIndexMoving = 0, eightColorDiamondsIndex = 0;
	public static RainbowSoftColor rainbowSoftColor = new RainbowSoftColor( new double[]{0,0,0,1} );
	public static RainbowPattern2D pattern2D = new RainbowPattern2D( new double[]{0,0,0,1} );
	public static DisplayType displayType = new DisplayType();
	//public static ColorDecide colorDecide = new ColorDecide();
	public static Dimension halfedDim = new Dimension();
	public static boolean someTargetColorInTheCenterHit = false, greenBlueGreenUsed = false;// wheelTipsHit = false, someTargetColorHit = true, greenBlueGreenUsed = false, otherBrowserColorHit = false, makePixelTransparent = false, aColorBarHit = false, aWheelDiamondHit = false;
	static final int maxIndexOfVerticalColorBars = 17, maxIndexOfHorizontalColorBars = 3;
	static int colorBarIndex = 0, colorBarCheck = 0;
	static boolean returnImmediately = false, laterReversed = false, someTargetColorHit = true, browserHit = false; //reversalOfBackgroundEffectsSlave = true;

	public Buddhism( Color FXColor )//Creates Class And Sets Color With JavaFX Color Class //
	{
		fxColor = FXColor;
		rainbowSoftColor = new RainbowSoftColor( FXColor );
		rgb = new double[] { FXColor.getRed() * 255, FXColor.getGreen() * 255, FXColor.getBlue() * 255 };
		argb = new double[] { FXColor.getRed() * 255, FXColor.getGreen() * 255, FXColor.getBlue() * 255, FXColor.getOpacity() };
	}
	public Buddhism( double[] ARGB )//Creates Class And Sets Color With ARGB //
	{
		for  (int z = 0; z <= 2; z++)
		{
			rgb[z] = ColorValueFitter(ARGB[z]);
			argb[z] = ColorValueFitter(ARGB[z]);
		}
		if ( ARGB.length == 3 )
		{
			argb = new double[4];
			for  (int z = 0; z <= 2; z++)
				argb[z] = ColorValueFitter(rgb[z]);
			ARGB[3] = 1;
		}
		else
			argb[3] = OpacityValueFitter(ARGB[3]);
		rainbowSoftColor = new RainbowSoftColor( argb );
		fxColor = rainbowSoftColor.ToFXColor();
	}
	public Buddhism()//Creates Class And Sets Color To Opake Black //
	{
		rgb = new double[]{0,0,0};
		argb = new double[]{0,0,0,1};
		rainbowSoftColor = new RainbowSoftColor( rgb );
		fxColor = rainbowSoftColor.ToFXColor();
	}
	public Color ToFXColor()//Returns Color In JavaFX
	{
		fxColor = rainbowSoftColor.ToFXColor();
		//return VibrantColors.Red.ToFXColor();//TESTING ONLY
		return fxColor;
	}
	public Color ToFXColor( double[] ARGB )//Changes Class To ARGB Value And Returns Color In JavaFX //
	{
		for  (int z = 0; z <= 2; z++)
		{
			rgb[z] = ColorValueFitter(ARGB[z]);
			argb[z] = ColorValueFitter(ARGB[z]);
		}
		if ( ARGB.length == 3 )
		{
			argb = new double[4];
			for  (int z = 0; z <= 2; z++)
				argb[z] = ColorValueFitter(rgb[z]);
			ARGB[3] = 1;
		}
		else
			argb[3] = OpacityValueFitter(ARGB[3]);
		rainbowSoftColor = new RainbowSoftColor( argb );
		fxColor = rainbowSoftColor.ToFXColor();
		return fxColor;
	}

	public static final Color BuddhismForRaster(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double SliderInterval, double FullSliderRunThrough, int x, int y, double RepeatFactor, double LengthOfColorBar, double SpiralFactor, double NumberOfSpirals, double SuckInExponentialness, double SuckInDivisor, double HalfSreenDiagionalLength, boolean Reversed, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted, PixelReader BasisPR, PixelReader BackgroundBasisPR, PixelReader BrowserPR, Dimension Dim, String TypeOfDisplay, Color InitialColorContrastingChoice, Color ColorTooSimilarReplacementColor, double ColorDifference, boolean InvertBasisFromBackground, boolean InvertInsteadOfReverse, boolean InvertBoth, boolean InvertJustOrigional, boolean InvertTextAlways, /*boolean ReversalOfBackgroundEffectsMaster,*/ boolean NextStepColorTooSimilarEffect )
	{//SliderInterval May Not Be Needed
		pattern2D.set( VibrantColors.HalfGrey );
		rainbowSoftColor.set( VibrantColors.HalfGrey );
		halfedDim.width = (int)Math.round( Dim.width / 2. );//Check Into If This Is Right
		halfedDim.height = (int)Math.round( Dim.height / 2. );//Check Into If This Is Right
		//double radialDistance = Math.pow(Math.pow(halfedDim.width + 1, 2) + Math.pow(halfedDim.height + 1, 2), 0.5);//, rainbowIntervalVariable = 0;
		//double fullAngle = Math.PI * radialDistance;
		//double colorDisplacement = 0;
		//double chrysanthemumRadius = 60;
		//double radialVariableDistance = 0;//Comment Out For  Ghetto Many Rainbow Clocks
		//double angleVariableStill = 0;//Use For Rainbow Spiral Multiply radialDistance By 10 To Increase The Number Of Spirals
		//double radiusVariableStill = 0;//radialVariableDistance + colorDisplacement + angle;//Remove + angle And Add xSlider To Make Rainbow Clock
		//double angleVariableTransitioning = 0;//Use For Rainbow Spiral Multiply radialDistance By 10 To Increase The Number Of Spirals
		//double radiusVariableTransitioning = 0;//radialVariableDistance + colorDisplacement + angle;//Remove + angle And Add xSlider To Make Rainbow Clock
		int outerRingThickness = 72 * Dim.height / 1080; int middleRingThickness = 20 * Dim.height / 1080; int innerRingThickness = 18 * Dim.height / 1080;// int outerRingRadius = 293; int middleRingRadius = 88; int innerRingRadius = 66;


		//boolean someTargetColorInTheCenterHit = false, wheelTipsHit = false;//greenBlueGreenUsed = false, otherBrowserColorHit = false,	makePixelTransparent = false, aWheelDiamondHit = false;
		//aColorBarHit = false;
		//System.out.println("x: " + x + " y: " + y + " BasisPR.getColor( x, y ): " + BasisPR.getColor( x, y ) );
		//int transparentNum = 0;

		Color BrowserPRcolor = BrowserPR.getColor( x, y );

		someTargetColorHit = true; //browserHit = false;
		laterReversed = Reversed; //reversalOfBackgroundEffectsSlave = ReversalOfBackgroundEffectsMaster;
		rainbowSoftColor.set( displayType.DisplayTypeDeterminer ( TypeOfDisplay, BasisPR.getColor( x, y ), BackgroundBasisPR.getColor( x, y ), BrowserPRcolor, Reversed ) );//, reversalOfBackgroundEffectsSlave ) );
		/*try { Thread.sleep(0,1);//primaryThread.sleep(1);
		} catch (InterruptedException e) {
			System.out.println("Interrupted.");
		}// */
		pattern2D.set( rainbowSoftColor.ToFXColor() );
		rgb = rainbowSoftColor.rgb;
		argb = rainbowSoftColor.argb;
		fxColor = rainbowSoftColor.ToFXColor();
		if ( displayType.returnImmediately )
			return fxColor;

		//System.out.println("Got To Buddhism Basis Pixel If-Tree. x: " + x + " y: " + y + " fxColor: " + fxColor );
		//System.out.println("x: " + x + " y: " + y);
		for ( colorBarIndex = 0; colorBarIndex <= maxIndexOfVerticalColorBars; colorBarIndex++ )
		{
			//System.out.println("x: " + x + " y: " + y + " BasisPR.getColor( x, y ): " + BasisPR.getColor( x, y ) + " Color: " + RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex) );
			//tempTransparencySlider = RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex);
			//System.out.println("x: " + x + " y: " + y + " BasisPR.getColor( x, y ): " + BasisPR.getColor( x, y ));
			//System.out.println("colorBarIndex: " + colorBarIndex);
			//System.out.println("RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex): " + RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex) );
			//System.out.println("RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).ToARGBcolorNum(): " + RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).ToARGBcolorNum());
			//System.out.println( fxColor == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex) );
			if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getOpacity() && 
					fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getRed() &&
					fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getGreen() &&
					fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getBlue() )//Left Side Bars
			{
				//System.out.println("x: " + x + " y: " + y + " fxColor: " + fxColor + " Color: " + RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex) );
				colorBarDistance = 0;// #################################################################################################																									----===| COMMENTS BELOW SHOULD WORK!!!!! |===----
				for ( colorBarCheck = x; colorBarCheck >= 0; colorBarCheck++ )//for ( colorBarCheck = x; colorBarCheck >= 0; colorBarCheck++)->colorBarDistance++;->MarkerInLength:colorBarDistance To Give Rainbow Picture Frame Look
				{
					if ( BackgroundBasisPR.getColor( colorBarCheck, y ).getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getOpacity() &&
							BackgroundBasisPR.getColor( colorBarCheck, y ).getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getRed() &&
							BackgroundBasisPR.getColor( colorBarCheck, y ).getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getGreen() &&
							BackgroundBasisPR.getColor( colorBarCheck, y ).getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getBlue() )
						colorBarDistance++;
					else
						break;
				}
				colorBarDistance = LengthOfColorBar + colorBarDistance;
				/*for ( colorBarCheck = x; colorBarCheck >= 0; colorBarCheck-- )//for ( colorBarCheck = x; colorBarCheck >= 0; colorBarCheck++)->colorBarDistance++;->MarkerInLength:colorBarDistance To Give Rainbow Picture Frame Look
				{
					if ( BackgroundBasisPR.getColor( colorBarCheck, y ).getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getOpacity() &&
							BackgroundBasisPR.getColor( colorBarCheck, y ).getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getRed() &&
							BackgroundBasisPR.getColor( colorBarCheck, y ).getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getGreen() &&
							BackgroundBasisPR.getColor( colorBarCheck, y ).getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackBlue(colorBarIndex).getBlue() )
						colorBarDistance--;
					else
						break;
				}
				colorBarDistance = LengthOfColorBar + colorBarDistance;// */
				if ( colorBarIndex == 17 )
					// HERE TOO ABOUT SHOULD WORK.
					//colorBarDistance = colorBarDistance - 8 * Dim.width / 1920;
					//Check Below -`V
					colorBarDistance = colorBarDistance - Dim.width / 1920;//For Cool Flippy Single Bar Color Changing Effect Square LengthOfColorBar
				if ( !displayType.laterReversed )
					pattern2D.SimpleCustomColor( LengthOfColorBar * ColorsFactor / RepeatFactor, - LengthOfColorBar * coreVariableStill / FullSliderRunThrough, - LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, VibrantColorCombos.RainbowFXcolorsReverseNoPink, OpacityBefore, OpacityAfter, Adjusted );
				else if ( !InvertInsteadOfReverse )
					pattern2D.SimpleCustomColor( LengthOfColorBar * ColorsFactor / RepeatFactor, - LengthOfColorBar * coreVariableStill / FullSliderRunThrough, - LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, VibrantColorCombos.RainbowFXcolorsWPinkCenter, OpacityBefore, OpacityAfter, Adjusted );
				else
					pattern2D.SimpleRainbow( LengthOfColorBar * ColorsFactor / RepeatFactor, - LengthOfColorBar * coreVariableStill / FullSliderRunThrough, - LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
				if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
					pattern2D.set( pattern2D.ToFXColor().invert() );
				//rainbowSoftColor.set( pattern2D.ToFXColor() );//Old
				//rainbowSoftColor = new RainbowSoftColor(  VibrantColors.Red );//TESTING ONLY
				//pattern2D.set( VibrantColors.Maroon );//TESTING ONLY
				return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
			}
			else if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackRed(colorBarIndex).getOpacity() && 
					fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackRed(colorBarIndex).getRed() &&
					fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackRed(colorBarIndex).getGreen() &&
					fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackRed(colorBarIndex).getBlue() )//Right Side Bars
			{
				colorBarDistance = 0;
				for ( colorBarCheck = x; colorBarCheck <= Dim.width; colorBarCheck++ )
				{
					if ( BackgroundBasisPR.getColor( colorBarCheck, y ).getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackRed(colorBarIndex).getOpacity() && 
							BackgroundBasisPR.getColor( colorBarCheck, y ).getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackRed(colorBarIndex).getRed() &&
							BackgroundBasisPR.getColor( colorBarCheck, y ).getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackRed(colorBarIndex).getGreen() &&
							BackgroundBasisPR.getColor( colorBarCheck, y ).getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackRed(colorBarIndex).getBlue() )
						colorBarDistance++;
					else
						break;
				}
				if ( colorBarIndex == 17 )
					colorBarDistance = colorBarDistance + 8 * Dim.width / 1920;
				if ( !displayType.laterReversed )
					pattern2D.SimpleRainbow( LengthOfColorBar * ColorsFactor / RepeatFactor, LengthOfColorBar * coreVariableStill / FullSliderRunThrough, LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
				else if ( !InvertInsteadOfReverse )
					pattern2D.SimpleRainbowReverse( LengthOfColorBar * ColorsFactor / RepeatFactor, LengthOfColorBar * coreVariableStill / FullSliderRunThrough, LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
				else
					pattern2D.SimpleCustomColor( LengthOfColorBar * ColorsFactor / RepeatFactor, LengthOfColorBar * coreVariableStill / FullSliderRunThrough, LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, VibrantColorCombos.RainbowFXcolorsReverseNoPink, OpacityBefore, OpacityAfter, Adjusted );
				if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
					pattern2D.set( pattern2D.ToFXColor().invert() );
				return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
			}
		}
		//System.out.println("Got Past blackRed");
		for ( colorBarIndex = 0; colorBarIndex <= maxIndexOfHorizontalColorBars; colorBarIndex++ )
		{
			if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getOpacity() && 
					fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getRed() &&
					fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getGreen() &&
					fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getBlue() )//Top Side Bars
			{
				colorBarDistance = 0;
				/*for ( colorBarCheck = y; colorBarCheck >= 0; colorBarCheck-- )
				{
					if ( BackgroundBasisPR.getColor( x, colorBarCheck ).getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getOpacity() &&
							BackgroundBasisPR.getColor( x, colorBarCheck ).getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getRed() &&
							BackgroundBasisPR.getColor( x, colorBarCheck ).getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getGreen() &&
							BackgroundBasisPR.getColor( x, colorBarCheck ).getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getBlue() )
						colorBarDistance--;
					else
						break;
				}
				colorBarDistance = LengthOfColorBar + colorBarDistance;// */
				for ( colorBarCheck = y; colorBarCheck >= 0; colorBarCheck++ )
				{
					if ( BackgroundBasisPR.getColor( x, colorBarCheck ).getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getOpacity() &&
							BackgroundBasisPR.getColor( x, colorBarCheck ).getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getRed() &&
							BackgroundBasisPR.getColor( x, colorBarCheck ).getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getGreen() &&
							BackgroundBasisPR.getColor( x, colorBarCheck ).getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackGreen(colorBarIndex).getBlue() )
						colorBarDistance++;
					else
						break;
				}
				colorBarDistance = LengthOfColorBar + colorBarDistance;
				if ( !displayType.laterReversed )
					pattern2D.SimpleCustomColor( LengthOfColorBar * ColorsFactor / RepeatFactor, - LengthOfColorBar * coreVariableStill / FullSliderRunThrough, - LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, VibrantColorCombos.RainbowFXcolorsReverseNoPink, OpacityBefore, OpacityAfter, Adjusted );
				else if ( !InvertInsteadOfReverse )
					pattern2D.SimpleCustomColor( LengthOfColorBar * ColorsFactor / RepeatFactor, - LengthOfColorBar * coreVariableStill / FullSliderRunThrough, - LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, VibrantColorCombos.RainbowFXcolorsWPinkCenter, OpacityBefore, OpacityAfter, Adjusted );
				else
					pattern2D.SimpleRainbow( LengthOfColorBar * ColorsFactor / RepeatFactor, - LengthOfColorBar * coreVariableStill / FullSliderRunThrough, - LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
				if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
					pattern2D.set( pattern2D.ToFXColor().invert() );
				return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
			}
			else if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackPurple(colorBarIndex).getOpacity() && 
					fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackPurple(colorBarIndex).getRed() &&
					fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackPurple(colorBarIndex).getGreen() &&
					fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackPurple(colorBarIndex).getBlue() )//Bottom Bars

			{
				colorBarDistance = 0;
				for ( colorBarCheck = y; colorBarCheck <= Dim.height; colorBarCheck++ )
				{
					if ( BackgroundBasisPR.getColor( x, colorBarCheck ).getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackPurple(colorBarIndex).getOpacity() &&
							BackgroundBasisPR.getColor( x, colorBarCheck ).getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackPurple(colorBarIndex).getRed() &&
							BackgroundBasisPR.getColor( x, colorBarCheck ).getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackPurple(colorBarIndex).getGreen() &&
							BackgroundBasisPR.getColor( x, colorBarCheck ).getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.blackPurple(colorBarIndex).getBlue() )
						colorBarDistance++;
					else
						break;
				}
				if ( !displayType.laterReversed )
					pattern2D.SimpleRainbow( LengthOfColorBar * ColorsFactor / RepeatFactor, LengthOfColorBar * coreVariableStill / FullSliderRunThrough, LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
				else if ( !InvertInsteadOfReverse )
					pattern2D.SimpleRainbowReverse( LengthOfColorBar * ColorsFactor / RepeatFactor, LengthOfColorBar * coreVariableStill / FullSliderRunThrough, LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
				else
					pattern2D.SimpleCustomColor( LengthOfColorBar * ColorsFactor / RepeatFactor, LengthOfColorBar * coreVariableStill / FullSliderRunThrough, LengthOfColorBar * coreTranisitionVariable / FullSliderRunThrough, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, VibrantColorCombos.RainbowFXcolorsReverseNoPink, OpacityBefore, OpacityAfter, Adjusted );
				if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
					pattern2D.set( pattern2D.ToFXColor().invert() );
				return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
			}
		}
		//System.out.println("Got Pale");
		if ( fxColor.getOpacity() == VibrantColors.OxylBlue.getOpacity() &&
				fxColor.getRed() == VibrantColors.OxylBlue.getRed() &&
				fxColor.getGreen() == VibrantColors.OxylBlue.getGreen() &&
				fxColor.getBlue() == VibrantColors.OxylBlue.getBlue() )
		{
			pattern2D.RainbowClockGradated( Math.PI * ColorsFactor / ( 2 * RepeatFactor ), Math.PI * coreVariableStill / 2 - Math.PI / 2, Math.PI * coreTranisitionVariable / 2 - Math.PI / 2, x - halfedDim.width, y - halfedDim.height, Math.PI * RepeatFactor / ( 2 * ColorsFactor ), displayType.laterReversed, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
			if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
				pattern2D.set( pattern2D.ToFXColor().invert() );
			return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
		}
		if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelRods().getOpacity() && 
				fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelRods().getRed() &&
				fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelRods().getGreen() &&
				fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelRods().getBlue() )
		{
			pattern2D.RainbowClockGradated( Math.PI * ColorsFactor / ( 8 * RepeatFactor ), Math.PI * coreVariableStill / 4 - Math.PI / 4, Math.PI * coreTranisitionVariable / 4 - Math.PI / 4, x - halfedDim.width, y - halfedDim.height, Math.PI * RepeatFactor / ( 8 * ColorsFactor ), displayType.laterReversed, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
			//CHECK FOR FIX FROM FwaFlagLogoSplash
			if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
				pattern2D.set( pattern2D.ToFXColor().invert() );
			return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
		}
		else if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelDiamonds().getOpacity() && 
				fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelDiamonds().getRed() &&
				fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelDiamonds().getGreen() &&
				fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelDiamonds().getBlue() )
		{
			if ( ( y - halfedDim.height ) < - halfedDim.height / 10)
			{
				if ( ( x - halfedDim.width ) < halfedDim.height / 10 && ( x - halfedDim.width ) > - halfedDim.height / 10 ) 
					eightColorDiamondsIndexStill = 1;
				else if ( ( x - halfedDim.width ) + ( y - halfedDim.height ) < halfedDim.height / 10 && ( x - halfedDim.width ) + ( y - halfedDim.height ) > - halfedDim.height / 10 )
					eightColorDiamondsIndexStill = 2;
				else if ( ( x - halfedDim.width ) - ( y - halfedDim.height ) < halfedDim.height / 10 && ( x - halfedDim.width ) - ( y - halfedDim.height ) > - halfedDim.height / 10 )
					eightColorDiamondsIndexStill = 8;
			}
			else if ( ( y - halfedDim.height ) > halfedDim.height / 10)
			{
				if ( ( x - halfedDim.width ) < halfedDim.height / 10 && ( x - halfedDim.width ) > - halfedDim.height / 10)
					eightColorDiamondsIndexStill = 5;
				else
					if ( ( x - halfedDim.width ) - ( y - halfedDim.height ) < halfedDim.height / 10 && ( x - halfedDim.width ) - ( y - halfedDim.height ) > - halfedDim.height / 10 )	
						eightColorDiamondsIndexStill = 4;
					else
						if ( ( x - halfedDim.width ) + ( y - halfedDim.height ) < halfedDim.height / 10 && ( x - halfedDim.width ) + ( y - halfedDim.height ) > - halfedDim.height / 10 )
							eightColorDiamondsIndexStill = 6;
			}
			else
				if ( x - halfedDim.width > 0 )
					eightColorDiamondsIndexStill = 3;
				else
					if ( x - halfedDim.width < 0 )
						eightColorDiamondsIndexStill = 7;
			eightColorDiamondsIndexMoving = eightColorDiamondsIndexStill;
			eightColorDiamondsIndexStill = eightColorDiamondsIndexStill - 8 * LocationOfStillMovement / FullSliderRunThrough;
			eightColorDiamondsIndexMoving = eightColorDiamondsIndexMoving - 8 * LocationOfColorMovement / FullSliderRunThrough;
			while ( eightColorDiamondsIndexStill < 0 )
				eightColorDiamondsIndexStill = eightColorDiamondsIndexStill + 8;
			while ( eightColorDiamondsIndexStill > 8 )
				eightColorDiamondsIndexStill = eightColorDiamondsIndexStill - 8;
			while ( eightColorDiamondsIndexMoving < 0 )
				eightColorDiamondsIndexMoving = eightColorDiamondsIndexMoving + 8;
			while ( eightColorDiamondsIndexMoving > 8 )
				eightColorDiamondsIndexMoving = eightColorDiamondsIndexMoving - 8;
			eightColorDiamondsIndex = ( eightColorDiamondsIndexStill + eightColorDiamondsIndexMoving ) / 2;//CHECK ME MAY BE - Instead Of +
			while ( eightColorDiamondsIndex < 0 )
				eightColorDiamondsIndex = eightColorDiamondsIndex + 8;
			while ( eightColorDiamondsIndex >= 8 )
				eightColorDiamondsIndex = eightColorDiamondsIndex - 8;
			eightColorDiamondsIndex = (int)Math.floor( eightColorDiamondsIndex );
			if ( BrowserPRcolor.getOpacity() == VibrantColors.Magenta.getOpacity() && 
					BrowserPRcolor.getRed() == VibrantColors.Magenta.getRed() && 
					BrowserPRcolor.getGreen() == VibrantColors.Magenta.getGreen() && 
					BrowserPRcolor.getBlue() == VibrantColors.Magenta.getBlue() )//shitBrownNum )
			{
				rainbowSoftColor = new RainbowSoftColor( RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelDiamondsArray( (int)( 7 - eightColorDiamondsIndex ) ) );
				/*rgb = rainbowSoftColor.rgb;
				argb = rainbowSoftColor.argb;
				fxColor = rainbowSoftColor.ToFXColor();// */
				pattern2D.set( rainbowSoftColor.ToFXColor() );
				if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
					pattern2D.set( pattern2D.ToFXColor().invert() );
				return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
				//pw.setArgb( x, y, magentaNum );
			}
			else
			{
				rainbowSoftColor = new RainbowSoftColor( RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelDiamondsArray( (int)( eightColorDiamondsIndex ) ) );
				/*rgb = rainbowSoftColor.rgb;
				argb = rainbowSoftColor.argb;
				fxColor = rainbowSoftColor.ToFXColor();
				return fxColor;// */
				pattern2D.set( rainbowSoftColor.ToFXColor() );
				return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
				//pw.setArgb( x, y, wheelDiamondsArrayNum[eightColorDiamondsIndex] );
			}
		}
		else if ( fxColor.getOpacity() == VibrantColors.NeonGreen.getOpacity() && 
				fxColor.getRed() == VibrantColors.NeonGreen.getRed() &&
				fxColor.getGreen() == VibrantColors.NeonGreen.getGreen() &&
				fxColor.getBlue() == VibrantColors.NeonGreen.getBlue() )
		{
			if ( !displayType.laterReversed )
				rainbowSoftColor = new RainbowSoftColor( VibrantColors.OxylBlue );
			else if ( !InvertInsteadOfReverse )
				rainbowSoftColor = new RainbowSoftColor( VibrantColors.NeonGreen );
			else
				rainbowSoftColor = new RainbowSoftColor( VibrantColors.Pink );
			if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
				pattern2D.set( pattern2D.ToFXColor().invert() );
			/*rgb = rainbowSoftColor.rgb;
			argb = rainbowSoftColor.argb;
			fxColor = rainbowSoftColor.ToFXColor();
			return fxColor;// */
			pattern2D.set( rainbowSoftColor.ToFXColor() );
			return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
		}
		else if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelEnds().getOpacity() && 
				fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelEnds().getRed() &&
				fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelEnds().getGreen() &&
				fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelEnds().getBlue() )
		{
			//wheelTipsHit = true;
			if ( ( coreVariableStill + coreTranisitionVariable ) / 2 <= FullSliderRunThrough - 8.468 * SliderInterval )//CHECK ME FOR WORKING PROPERLY MAY NEED '-'
			{
				/*if ( BrowserPRcolor.getOpacity() == VibrantColors.Magenta.getOpacity() && 
						BrowserPRcolor.getRed() == VibrantColors.Magenta.getRed() && 
						BrowserPRcolor.getGreen() == VibrantColors.Magenta.getGreen() && 
						BrowserPRcolor.getBlue() == VibrantColors.Magenta.getBlue() )//shitBrownNum )// */
				if ( !displayType.laterReversed )
					rainbowSoftColor = new RainbowSoftColor( VibrantColors.Red );
				else if ( !InvertInsteadOfReverse )
					rainbowSoftColor = new RainbowSoftColor( VibrantColors.Green );
				else
					rainbowSoftColor = new RainbowSoftColor( VibrantColors.OxylBlue );
				if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
					pattern2D.set( pattern2D.ToFXColor().invert() );
				/*//rgb = rainbowSoftColor.rgb;
				//argb = rainbowSoftColor.argb;
				fxColor = rainbowSoftColor.ToFXColor();
				return fxColor;// */
				pattern2D.set( rainbowSoftColor.ToFXColor() );
				return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
			}
			else
			{
				/*if ( BrowserPRcolor.getOpacity() == VibrantColors.Magenta.getOpacity() && 
						BrowserPRcolor.getRed() == VibrantColors.Magenta.getRed() && 
						BrowserPRcolor.getGreen() == VibrantColors.Magenta.getGreen() && 
						BrowserPRcolor.getBlue() == VibrantColors.Magenta.getBlue() )//shitBrownNum )// */
				if ( !displayType.laterReversed )
					rainbowSoftColor = new RainbowSoftColor( VibrantColors.Green );
				else if ( !InvertInsteadOfReverse )
					rainbowSoftColor = new RainbowSoftColor( VibrantColors.Red );
				else
					rainbowSoftColor = new RainbowSoftColor( VibrantColors.Pink );
				if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
					pattern2D.set( pattern2D.ToFXColor().invert() );
				/*rgb = rainbowSoftColor.rgb;
				argb = rainbowSoftColor.argb;
				fxColor = rainbowSoftColor.ToFXColor();
				return fxColor;// */
				pattern2D.set( rainbowSoftColor.ToFXColor() );
				return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
			}
		}
		else if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelOuterRing().getOpacity() && 
				fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelOuterRing().getRed() &&
				fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelOuterRing().getGreen() &&
				fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelOuterRing().getBlue() )
		{
			//pattern2D.RainbowDiskGradated( outerRingThickness * ColorsFactor / RepeatFactor, outerRingThickness * coreVariableStill / FullSliderRunThrough, outerRingThickness * coreTranisitionVariable / FullSliderRunThrough, x - halfedDim.width, y - halfedDim.height, outerRingThickness, displayType.laterReversed, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
			pattern2D.RainbowDiskGradated( outerRingThickness * ColorsFactor / RepeatFactor, outerRingThickness * coreVariableStill / FullSliderRunThrough, outerRingThickness * coreTranisitionVariable / FullSliderRunThrough, x - halfedDim.width, y - halfedDim.height, outerRingThickness, displayType.laterReversed && !InvertInsteadOfReverse, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
			if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
				pattern2D.set( pattern2D.ToFXColor().invert() );
			return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
		}
		else if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelMiddleRing().getOpacity() &&
				fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelMiddleRing().getRed() &&
				fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelMiddleRing().getGreen() &&
				fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelMiddleRing().getBlue() )
		{
			pattern2D.RainbowDiskGradated( middleRingThickness * ColorsFactor / RepeatFactor, middleRingThickness * coreVariableStill / FullSliderRunThrough, middleRingThickness * coreTranisitionVariable / FullSliderRunThrough, x - halfedDim.width, y - halfedDim.height, middleRingThickness, displayType.laterReversed && !InvertInsteadOfReverse, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
			if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
				pattern2D.set( pattern2D.ToFXColor().invert() );
			return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );

		}
		else if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelInnerRing().getOpacity() && 
				fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelInnerRing().getRed() &&
				fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelInnerRing().getGreen() &&
				fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelInnerRing().getBlue() )
		{
			pattern2D.RainbowDiskGradated( innerRingThickness * ColorsFactor / RepeatFactor, innerRingThickness * coreVariableStill / FullSliderRunThrough, innerRingThickness * coreTranisitionVariable / FullSliderRunThrough, x - halfedDim.width, y - halfedDim.height, innerRingThickness, displayType.laterReversed && !InvertInsteadOfReverse, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
			if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
				pattern2D.set( pattern2D.ToFXColor().invert() );
			return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );

		}
		else if ( fxColor.getOpacity() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelTips().getOpacity() && 
				fxColor.getRed() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelTips().getRed() &&
				fxColor.getGreen() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelTips().getGreen() &&
				fxColor.getBlue() == RainbowSoftColorCodesSets.BuddhismSchemeSet.wheelTips().getBlue() )
		{
			//pattern2D.RainbowClockGradated( ColorsFactor / RepeatFactor, - coreVariableStill, - coreTranisitionVariable, x - halfedDim.width, y - halfedDim.height, RepeatFactor, displayType.laterReversed, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
			//return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
			pattern2D.RainbowClockGradated( Math.PI * ColorsFactor / ( 8 * RepeatFactor ), - Math.PI * coreVariableStill / 4 - Math.PI / 4, - Math.PI * coreTranisitionVariable / 4 - Math.PI / 4, x - halfedDim.width, y - halfedDim.height, Math.PI * RepeatFactor / ( 8 * ColorsFactor ), displayType.laterReversed && !InvertInsteadOfReverse, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
			if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
				pattern2D.set( pattern2D.ToFXColor().invert() );
			//CHECK FOR FIX FROM FwaFlagLogoSplash
			return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );

		}
		else
			if ( Math.pow(Math.pow(x - halfedDim.width, 2) + Math.pow( y - halfedDim.height * 0.9963, 2), 0.5) <= 47 * Dim.height / 1080 )
			{
				pattern2D.RainbowSpiralGradated(HalfSreenDiagionalLength * ColorsFactor / RepeatFactor, HalfSreenDiagionalLength * LocationOfStillMovement / FullSliderRunThrough, HalfSreenDiagionalLength * LocationOfColorMovement / FullSliderRunThrough, x - halfedDim.width, y - halfedDim.height, HalfSreenDiagionalLength, SpiralFactor, NumberOfSpirals, HalfSreenDiagionalLength, displayType.laterReversed && !InvertInsteadOfReverse, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
				if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
					pattern2D.set( pattern2D.ToFXColor().invert() );
				//pattern2D.SimpleRainbowReverse( LengthOfColorBar * ColorsFactor / RepeatFactor, coreVariableStill, coreTranisitionVariable, colorBarDistance, LengthOfColorBar, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
				return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
			}
		//else
		//	someTargetColorInTheCenterHit = false;
		//End Of Basis Image Switch System
		/*if (otherBrowserColorHit == true)
			return ( BrowserPRcolor );
		else
			if (makePixelTransparent == true)
				return ( fxColor.TRANSPARENT );*/
		//if ( aWheelDiamondHit == true )	
		//else if ( wheelTipsHit == true)
		//else
		//{
		someTargetColorHit = false;
		if ( displayType.laterReversed != Reversed )
		{
			//pattern2D.set( fxColor.invert() );//pattern2D.set( fxColor.invert() );//pattern2D.set( VibrantColors.NeonGreen );
			//return pattern2D.ToFXColor();
			//pattern2D.set( VibrantColors.Gold );
			pattern2D.set( fxColor );
			if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
				pattern2D.set( pattern2D.ToFXColor().invert() );
			rainbowSoftColor.set( pattern2D.ToFXColor() );
			return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
			/*
					// tempColor = fxColor;
					fxColor = ColorDecide.NextColorDecide ( fxColor, pattern2D.ToFXColor(), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
					if ( ! ( fxColor.getOpacity() == InitialColorContrastingChoice.getOpacity() &&
							fxColor.getRed() == InitialColorContrastingChoice.getRed() &&
							fxColor.getGreen() == InitialColorContrastingChoice.getGreen() &&
							fxColor.getBlue() == InitialColorContrastingChoice.getBlue() )
							&& ! ( fxColor.getOpacity() == ColorTooSimilarReplacementColor.getOpacity() &&
							fxColor.getRed() == ColorTooSimilarReplacementColor.getRed() &&
							fxColor.getGreen() == ColorTooSimilarReplacementColor.getGreen() &&
							fxColor.getBlue() == ColorTooSimilarReplacementColor.getBlue() )
							&& InvertBasisFromBackground )
						{
							fxColor = fxColor.invert();
							rainbowSoftColor = new RainbowSoftColor( new double[] { 255 * fxColor.getRed(), 255 * fxColor.getGreen(), 255 * fxColor.getBlue(), fxColor.getOpacity() } );
							rgb = rainbowSoftColor.rgb;
							argb = rainbowSoftColor.argb;
							fxColor = rainbowSoftColor.ToFXColor();
							return fxColor;
						}
						else
							if ( !rainbowSoftColor.ColorTooSimilarFunction( InitialColorContrastingChoice, fxColor, ColorDifference ) )//BrowserPR.getColor( x, y ) , 
							{
								rainbowSoftColor = new RainbowSoftColor( InitialColorContrastingChoice );
								rgb = rainbowSoftColor.rgb;
								argb = rainbowSoftColor.argb;
								fxColor = rainbowSoftColor.ToFXColor();
								return fxColor;
							}
							else
							{
								rainbowSoftColor = new RainbowSoftColor( ColorTooSimilarReplacementColor );
								rgb = rainbowSoftColor.rgb;
								argb = rainbowSoftColor.argb;
								fxColor = rainbowSoftColor.ToFXColor();
								return fxColor;
							}// */
			//rainbowSoftColor.set(fxColor);
			//rgb = rainbowSoftColor.rgb;
			//argb = rainbowSoftColor.argb;
			//fxColor = rainbowSoftColor.ToFXColor();
			//return fxColor;
		}
		else if ( !someTargetColorHit )
		{
			//pattern2D.set( fxColor );
			
			//return pattern2D.ToFXColor();
			/*rainbowSoftColor = new RainbowSoftColor( new double[] { 255 * BasisPR.getColor( x, y ).getRed(), 255 * BasisPR.getColor( x, y ).getGreen(), 255 * BasisPR.getColor( x, y ).getBlue(), BasisPR.getColor( x, y ).getOpacity() } );
			rgb = rainbowSoftColor.rgb;
			argb = rainbowSoftColor.argb;
			fxColor = rainbowSoftColor.ToFXColor();// */
			//return fxColor;// */
			//pattern2D.set( VibrantColors.Silver );
			pattern2D.set( fxColor );
			if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
				pattern2D.set( pattern2D.ToFXColor().invert() );
			rainbowSoftColor.set( pattern2D.ToFXColor() );
			return ColorDecide.NextColorDecide ( fxColor, BackgroundBasisPR.getColor( x, y ), pattern2D.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
		}
		//}
		//System.out.println("Got Past Buddhism Basis Pixel If-Tree");
		///pattern2D.SimpleRainbow(ColorsFactor / SliderInterval, coreVariable, coreTranisitionVariable, LengthOfColorBar, RepeatFactor / SliderInterval);
		//pattern2D.set( VibrantColors.Bronze );// = new RainbowSoftColor( new double[] { 255 * BasisPR.getColor( x, y ).getRed(), 255 * BasisPR.getColor( x, y ).getGreen(), 255 * BasisPR.getColor( x, y ).getBlue(), BasisPR.getColor( x, y ).getOpacity() } );
		/*rgb = rainbowSoftColor.rgb;
		argb = rainbowSoftColor.argb;
		fxColor = rainbowSoftColor.ToFXColor();// */
		pattern2D.set( fxColor );
		if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
			pattern2D.set( pattern2D.ToFXColor().invert() );
		rainbowSoftColor.set( pattern2D.ToFXColor() );
		return ColorDecide.NextColorDecide ( BackgroundBasisPR.getColor( x, y ), BackgroundBasisPR.getColor( x, y ), rainbowSoftColor.ToFXColor(), BrowserPR.getColor( x, y ), InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHit, displayType.laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
	}

	public Color RainbowVideoTest(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double FullSliderRunThrough, int x, int y, double RepeatFactor, double SpiralFactor, double NumberOfSpirals, double HalfSreenDiagionalLength, boolean Reversed, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted, PixelReader BasisPR, PixelReader BackgroundBasisPR, PixelReader BrowserPR, Dimension Dim, String TypeOfDisplay, Color InitialColorContrastingChoice, Color ColorTooSimilarReplacementColor, double ColorDifference, boolean InvertBasisFromBackground, boolean InvertInsteadOfReverse, boolean InvertBoth, boolean InvertJustOrigional, boolean InvertTextAlways, /*boolean ReversalOfBackgroundEffectsMaster,*/ boolean NextStepColorTooSimilarEffect )
	{
		pattern2D.set( VibrantColors.HalfGrey );
		rainbowSoftColor.set( VibrantColors.HalfGrey );
		pattern2D.RainbowDoubleExponentiator( FullSliderRunThrough * - ColorsFactor / RepeatFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, FullSliderRunThrough, Dim, 4., -1, displayType.laterReversed && !InvertInsteadOfReverse, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
		if ( ( InvertInsteadOfReverse && displayType.laterReversed != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.laterReversed == Reversed ) || ( InvertTextAlways && displayType.laterReversed != Reversed ) )
			pattern2D.set( pattern2D.ToFXColor().invert() );
		rainbowSoftColor.set( pattern2D.ToFXColor() );
		//rainbowSoftColor = new RainbowSoftColor( new double[] { 255 * fxColor.getRed(), 255 * fxColor.getGreen(), 255 * fxColor.getBlue(), fxColor.getOpacity() } );
		rgb = rainbowSoftColor.rgb;
		argb = rainbowSoftColor.argb;
		fxColor = rainbowSoftColor.ToFXColor();
		return fxColor;
	}
	

	/*public Color[] CustomColorsReverser ( Color[] FXcolorArray )//Reverses Custom Colors By Flipping Around Colors Like Rainbow Reversal Without Changing Any Colors Like Green In Rainbow To Pink In Reversed //
	{//!!Use ColorArrayReverser If Visual Clarity And Appeal Is Needed!!
		fxColorArray = new Color[FXcolorArray.length];
		for (int c = 0; c < FXcolorArray.length; c++)
			fxColorArray[c] = FXcolorArray[ FXcolorArray.length - c - 1 ];
		return fxColorArray;
	}// */
	public double ColorValueFitter ( double ColorToBeChecked )//30th Square DiagnosticsClass.java
	{
		colorBeingChecked = ColorToBeChecked;
		while ( colorBeingChecked < -4080 )
			colorBeingChecked = colorBeingChecked + 4080;
		while ( colorBeingChecked < 0 )
			colorBeingChecked = colorBeingChecked + 255;
		while ( colorBeingChecked > 4080 )
			colorBeingChecked = colorBeingChecked - 4080;
		while ( colorBeingChecked > 255 )
			colorBeingChecked = colorBeingChecked - 255;
		return Math.round(colorBeingChecked);
	}
	public double OpacityValueFitter ( double OpacityToBeChecked )//31st Square DiagnosticsClass.java
	{
		opacityBeingChecked = OpacityToBeChecked;
		while ( opacityBeingChecked < -16 )
			opacityBeingChecked = opacityBeingChecked + 16;
		while ( opacityBeingChecked < 0 )
			opacityBeingChecked = opacityBeingChecked + 1;
		while ( opacityBeingChecked > 16 )
			opacityBeingChecked = opacityBeingChecked - 16;
		while ( opacityBeingChecked > 1 )
			opacityBeingChecked = opacityBeingChecked - 1;
		return opacityBeingChecked;
	}
	public void set(double[] ARGB) { argb = ARGB; rgb[0] = ARGB[0]; rgb[1] = ARGB[1]; rgb[2] = ARGB[2]; fxColor = Color.rgb( (int)(ColorValueFitter(ARGB[0])), (int)(ColorValueFitter(ARGB[1])), (int)(ColorValueFitter(ARGB[2])), (int)(OpacityValueFitter(ARGB[3])) ); rainbowSoftColor = new RainbowSoftColor( ARGB ); }//Assigns Colors With ARGB //29th Square In SimpleDiagnosticsClass.java
	public void set(Color FXColor) { fxColor = FXColor; argb = new double[] { FXColor.getRed() * 255, FXColor.getGreen() * 255, FXColor.getBlue() * 255, FXColor.getOpacity() }; rgb = new double[] { FXColor.getRed() * 255, FXColor.getGreen() * 255, FXColor.getBlue() * 255 }; rainbowSoftColor = new RainbowSoftColor( argb ); }//Assigns Colors With FXColor //30th Square In SimpleDiagnosticsClass.java
	public Color get() { return fxColor; }//Returns Always Happen With Variable Output With ARGB Functionality //31st Square In SimpleDiagnosticsClass.java
}