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;
import javafx.geometry.Dimension2D;

public class MagiElite //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
	private VibrantColors vibrantColors = new VibrantColors();
	private VibrantColorCombos vibrantColorCombos = new VibrantColorCombos();
	//private RainbowSoftColorCodesSets rainbowSoftColorCodesSets = new RainbowSoftColorCodesSets();
	private RainbowPostPattern2D postPattern2D = new RainbowPostPattern2D();
	//private double[] rgb = {0,0,0}, argb = {0,0,0,1};
	private Color fxColor = Color.BEIGE;//, tempColor = Color.OLIVE, basisPRColor = Color.CHOCOLATE, fxOtherColor = Color.PERU;//returnImmediatlyColor = fxColor.LAVENDER;
	//private Color[] fxColorArray = { Color.PINK, Color.SKYBLUE };
	//private ArrayReverser arrayReverser = new ArrayReverser();
	//private ColorArrayReverser colorArrayReverser = new ColorArrayReverser();
	//private ColorSlider tempColorSlider = new ColorSlider();
	//private TransparencySlider transparencySlider = new TransparencySlider( vibrantColors.Black );
	private double textTransitionFactor = 1;//, colorBeingChecked = 0, opacityBeingChecked = 1;
	//private ColorFader tempColorFader = new ColorFader();
	//private ColorTooSimilar colorTooSimilarFunction = new ColorTooSimilar();
	//private ArrayReverser arrayReverser = new ArrayReverser();
	//private rainbowSoftColorCodesSets rainbowSoftColorCodesSets = new rainbowSoftColorCodesSets();
	//private double ColorBeingChecked = 0, OpacityBeingChecked = 1, sliderValue = 0, originalFormulaValue = 0, numberOfTransitions = 0, coreVariableStill = 0, coreTranisitionVariable = 0, eightColorDiamondsIndexStill = 0, eightColorDiamondsIndexMoving = 0, eightColorDiamondsIndex = 0;
	private RainbowSoftColor rainbowSoftColor = new RainbowSoftColor( new double[]{0,0,0,1} );
	//private RainbowPattern2D pattern2D = new RainbowPattern2D( new double[]{0,0,0,1} );
	private DisplayType displayType = new DisplayType();
	//private ColorDecide colorDecide = new ColorDecide();
	//private IndependentTextBackgroundColorPasser independentTextBackgroundColorPasser = new IndependentTextBackgroundColorPasser();
	private DeterminerForBasisImageHit determinerForBasisImageHit;// = new DeterminerForBasisImageHit();
	private Dimension2D halfedDim = new Dimension2D( 1920, 1080 );
	boolean someTargetColorInTheCenterHit = false;//, greenBlueGreenUsed = false;// wheelTipsHit = false, someTargetColorHit = true, greenBlueGreenUsed = false, otherBrowserColorHit = false, makePixelTransparent = false, aColorBarHit = false, aWheelDiamondHit = false;
	private boolean laterReversed = false, browserTextHit = false, someTargetColorHit = true, basisImageStandOutHit = false, someTargetColorHitFromDisplayType = false; //reversalOfBackgroundEffectsSlave = true;

	public MagiElite()//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();
		fxColor = vibrantColors.Black;
	}
	public MagiElite( Color FXColor )//Creates Class And Sets Color With JavaFX Color Class //
	{
		fxColor = FXColor;
	}
	/*public MagiElite( 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 MagiElite( double[] ARGB )//Creates Class And Sets Color With ARGB //
	{
		for (int z = 0; z <= 2; z++)
		{
			rgb[z] = ColorValueFitterCapper(ARGB[z]);
			argb[z] = ColorValueFitterCapper(ARGB[z]);
		}
		if ( ARGB.length == 3 )
		{
			argb = new double[4];
			for (int z = 0; z <= 2; z++)
				argb[z] = ColorValueFitterCapper(rgb[z]);
			ARGB[3] = 1;
		}
		else
			argb[3] = OpacityValueFitterCapper(ARGB[3]);
		rainbowSoftColor = new RainbowSoftColor( argb );
		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] = ColorValueFitterCapper(ARGB[z]);
			argb[z] = ColorValueFitterCapper(ARGB[z]);
		}
		if ( ARGB.length == 3 )
		{
			argb = new double[4];
			for (int z = 0; z <= 2; z++)
				argb[z] = ColorValueFitterCapper(rgb[z]);
			ARGB[3] = 1;
		}
		else
			argb[3] = OpacityValueFitterCapper(ARGB[3]);
		rainbowSoftColor = new RainbowSoftColor( argb );
		fxColor = rainbowSoftColor.ToFXColor();
		return fxColor;
	}// */

	public Color MagiEliteForRaster(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double FullSliderRunThrough, double x, double y, double RepeatFactor, double RainbowWidth, double NumberOfClockHands, double NumberOfRingsVertically, double RingDisplacement, double InnerCutOffRadius, double OuterCutOffRadius, double SpiralFactor, double ShrunkenFactor, double NumberOfSpirals, double HalfScreenDiagionalLength, double ExponentValue, double ColorFlipper, double XScaleFactor, double YScaleFactor, double SuckInExponentialness, double SuckInDivisor, double LengthOfColorBar, boolean ReversedColors, boolean ReversedRainbow, boolean SwapColorComboDuo, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted, Color BasisPRColor, Color BackgroundBasisPRColor, Color BrowserPRColor, Dimension2D Dim, String TypeOfDisplay, Color InitialColorContrastingChoice, Color ColorTooSimilarReplacementColor, double ColorDifference, boolean InvertBasisFromBackground, boolean AuxiliarySwitch, boolean InvertInsteadOfReverse, boolean InvertBasisPicture, boolean InvertBoth, boolean InvertJustOrigional, boolean InvertTextAlways, /*boolean ReversalOfBackgroundEffectsMaster,*/ boolean NextStepColorTooSimilarEffect, boolean TextOutlineBlendingToBasisInvert, Color TextColorToOverlay, Color BackgroundColorToOverlay, Color BasisOverlaySperateTextColor, Color BasisOverlaySperateBackgroundColor, boolean TextColorOverlay, boolean BackgroundColorOverlay, boolean ShowBasisOverlayForText, boolean ShowBasisOverlayForBackground, boolean BasisOverlaySeperateTextFade, boolean BasisOverlaySeperateBackgroundFade, boolean UseFadeAtAll, boolean OverlayColorScheme, Color[][] ColorSet )
	{
		//pattern2D.set( vibrantColors.HalfGrey );
		//rainbowSoftColor.set( vibrantColors.HalfGrey );

		//if ( !AuxiliarySwitch || UseFadeAtAll )
		determinerForBasisImageHit = new DeterminerForBasisImageHit();

		//boolean someTargetColorInTheCenterHit = false, greenBlueGreenUsed = false;
		halfedDim = new Dimension2D( Dim.getWidth() / 2, Dim.getHeight() / 2 );//Check Into If This Is Right

		final double chrysanthemumRadius = 0.055555555555555 * Dim.getHeight(), chrysanthemumYDisplacement = 0.0231481481481481 * Dim.getHeight();//, chrysanthemumInnerRadius = 0.0083333333333333 * Dim.getHeight(), chrysanthemumRidgeAltitude = 0.175979734764 * chrysanthemumRadius;//, chrysanthemumNumberOfPedals = 16;
		int subSelection = 0;

		double FanOutRadius = Dim.getHeight() / 2;
		someTargetColorHit = true; //browserHit = false;
		//browserTextHit = Reversed; //reversalOfBackgroundEffectsSlave = ReversalOfBackgroundEffectsMaster;
		//rainbowSoftColor.set( displayType.DisplayTypeDeterminer ( TypeOfDisplay, BasisPRColor, BackgroundBasisPRColor, BrowserPRColor, browserTextHit, ShowBasisOverlayForText, ShowBasisOverlayForBackground ) );//, reversalOfBackgroundEffectsSlave ) );
		/*try { Thread.sleep(0,1);//primaryThread.sleep(1);
		} catch (InterruptedException e) {
			System.out.println("Interrupted.");
		}// */
		//postPattern2D.set( rainbowSoftColor.ToFXColor() );
		//rgb = rainbowSoftColor.ToRGB();
		//argb = rainbowSoftColor.ToARGB();
		//fxColor = rainbowSoftColor.ToFXColor();
		laterReversed = ReversedColors;
		fxColor = displayType.DisplayTypeDeterminer ( TypeOfDisplay, BasisPRColor, BackgroundBasisPRColor, BrowserPRColor, laterReversed, ShowBasisOverlayForText, ShowBasisOverlayForBackground );
		browserTextHit = displayType.AccessLaterReversed() != laterReversed;
		laterReversed = displayType.AccessLaterReversed();
		textTransitionFactor = displayType.AccessTextTransitionFactor();
		if ( displayType.AccessReturnImmediately() )
			return fxColor;
		basisImageStandOutHit = !( BasisPRColor.getOpacity() == BackgroundBasisPRColor.getOpacity() && 
				BasisPRColor.getRed() == BackgroundBasisPRColor.getRed() && 
				BasisPRColor.getGreen() == BackgroundBasisPRColor.getGreen() && 
				BasisPRColor.getBlue() == BackgroundBasisPRColor.getBlue() )
				&& TypeOfDisplay != "BackgroundToBasisFullDisplay";

		if ( Math.pow( Math.pow( x - halfedDim.getWidth(), 2) + Math.pow( y - halfedDim.getHeight() + chrysanthemumYDisplacement, 2), 0.5 ) <= chrysanthemumRadius )
		{	fxColor = displayType.DisplayTypeDeterminer ( TypeOfDisplay, vibrantColors.SkyBlue, vibrantColors.SkyBlue, BrowserPRColor, laterReversed, ShowBasisOverlayForText, ShowBasisOverlayForBackground ); }
		/*if ( Math.pow( Math.pow( x - halfedDim.getWidth(), 2) + Math.pow( y - halfedDim.getHeight() + chrysanthemumYDisplacement, 2), 0.5 ) <= chrysanthemumRadius )
		{//902 //1019
			someTargetColorInTheCenterHit = true;
			if ( fxColor.getOpacity() == rainbowSoftColorCodesSets.magiEliteSchemeSet.black6().getOpacity() &&
					fxColor.getRed() == rainbowSoftColorCodesSets.magiEliteSchemeSet.black6().getRed() &&
					fxColor.getGreen() == rainbowSoftColorCodesSets.magiEliteSchemeSet.black6().getGreen() &&
					fxColor.getBlue() == rainbowSoftColorCodesSets.magiEliteSchemeSet.black6().getBlue() )
			{
				postPattern2D.Selector( "RainbowRing", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, Dim.getWidth(), halfedDim.getHeight() / chrysanthemumRidgeAltitude, 0, 0, 99999, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );//Figure Out What To Use Instead Of ColorsFactor
			}
			else if ( fxColor.getOpacity() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white1().getOpacity() &&
					fxColor.getRed() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white1().getRed() &&
					fxColor.getGreen() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white1().getGreen() &&
					fxColor.getBlue() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white1().getBlue() )
			{
				postPattern2D.Selector( "RainbowSpiral", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y + chrysanthemumYDisplacement, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor * halfedDim.getHeight() / chrysanthemumRadius, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
			}
			else if ( fxColor.getOpacity() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white2().getOpacity() &&
					fxColor.getRed() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white2().getRed() &&
					fxColor.getGreen() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white2().getGreen() &&
					fxColor.getBlue() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white2().getBlue() )
			{
				postPattern2D.Selector( "RainbowHorizontal", subSelection, ColorsFactor, - LocationOfStillMovement, - LocationOfColorMovement, x - 0.469791666666666 * Dim.getWidth(), y, RepeatFactor, FullSliderRunThrough, 2 * chrysanthemumRadius, NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
			}
			else if ( fxColor.getOpacity() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white3().getOpacity() &&
					fxColor.getRed() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white3().getRed() &&
					fxColor.getGreen() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white3().getGreen() &&
					fxColor.getBlue() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white3().getBlue() )
			{
				postPattern2D.Selector( "RainbowCheapFractal", subSelection, ColorsFactor, 0.001 * chrysanthemumRadius * LocationOfStillMovement, 0.001 * chrysanthemumRadius * LocationOfColorMovement, x, y + chrysanthemumYDisplacement, RepeatFactor, FullSliderRunThrough, Dim.getWidth(), NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
			}
			else if ( fxColor.getOpacity() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white4().getOpacity() &&
					fxColor.getRed() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white4().getRed() &&
					fxColor.getGreen() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white4().getGreen() &&
					fxColor.getBlue() == rainbowSoftColorCodesSets.magiEliteSchemeSet.white4().getBlue() )
			{
				postPattern2D.Selector( "RainbowSpiral", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x / 10, ( y + chrysanthemumYDisplacement ) / 10, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, ShrunkenFactor * halfedDim.getHeight() / chrysanthemumRadius, SpiralFactor, 10. * NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
			}
			else
				if ( fxColor.getOpacity() == vibrantColors.SimpleBlue.getOpacity() &&
				fxColor.getRed() == vibrantColors.SimpleBlue.getRed() &&
				fxColor.getGreen() == vibrantColors.SimpleBlue.getGreen() &&
				fxColor.getBlue() == vibrantColors.SimpleBlue.getBlue() )
				{//951 To 969
					postPattern2D.Selector( "RainbowRing", subSelection, ColorsFactor, 8.8 * LocationOfStillMovement, 8.8 * LocationOfColorMovement, x, y + chrysanthemumYDisplacement, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, Dim.getWidth(), halfedDim.getHeight() / chrysanthemumInnerRadius, 0, 0, 99999, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
				}
				else
				{
					someTargetColorInTheCenterHit = false;
					if ( fxColor.getOpacity() == vibrantColors.SkyBlue.getOpacity() &&
							fxColor.getRed() == vibrantColors.SkyBlue.getRed() &&
							fxColor.getGreen() == vibrantColors.SkyBlue.getGreen() &&
							fxColor.getBlue() == vibrantColors.SkyBlue.getBlue() )
					{
						postPattern2D.Selector( "RainbowSpiral", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
					}
				}	
		}//if ( someTargetColorInTheCenterHit == false )
		else */if ( fxColor.getOpacity() == vibrantColors.OxylBlue.getOpacity() &&
				fxColor.getRed() == vibrantColors.OxylBlue.getRed() &&
				fxColor.getGreen() == vibrantColors.OxylBlue.getGreen() &&
				fxColor.getBlue() == vibrantColors.OxylBlue.getBlue() )
		{
			postPattern2D.Selector( "RainbowStrobe", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
		}
		else if ( fxColor.getOpacity() == vibrantColors.SkyBlue.getOpacity() &&
				fxColor.getRed() == vibrantColors.SkyBlue.getRed() &&
				fxColor.getGreen() == vibrantColors.SkyBlue.getGreen() &&
				fxColor.getBlue() == vibrantColors.SkyBlue.getBlue() )
		{
			//postPattern2D.Selector( "RainbowStrobe", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
			postPattern2D.Selector( "RainbowSpiral", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
		}
		else if ( fxColor.getOpacity() == vibrantColors.Magenta.getOpacity() &&
				fxColor.getRed() == vibrantColors.Magenta.getRed() &&
				fxColor.getGreen() == vibrantColors.Magenta.getGreen() &&
				fxColor.getBlue() == vibrantColors.Magenta.getBlue() )
		{
			postPattern2D.Selector( "RainbowRing", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement /*+ 0.0545 * halfedDim.getHeight()*/, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, Dim.getWidth(), 5.625, 226.25 * Dim.getHeight() / 1080, 0, 999999, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, !ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );//Figure Out What To Use Instead Of ColorsFactor
		}
		else if ( fxColor.getOpacity() == vibrantColors.NeonGreen.getOpacity() &&
				fxColor.getRed() == vibrantColors.NeonGreen.getRed() &&
				fxColor.getGreen() == vibrantColors.NeonGreen.getGreen() &&
				fxColor.getBlue() == vibrantColors.NeonGreen.getBlue() )
		{
			//angle = 0;//Testing Purposes Only.
			postPattern2D.Selector( "RainbowClock", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, 1, NumberOfClockHands, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
		}
		else if ( fxColor.getOpacity() == vibrantColors.HalfGrey.getOpacity() &&
				fxColor.getRed() == vibrantColors.HalfGrey.getRed() &&
				fxColor.getGreen() == vibrantColors.HalfGrey.getGreen() &&
				fxColor.getBlue() == vibrantColors.HalfGrey.getBlue() )
		{
			//angle = 0;//Testing Purposes Only.
			postPattern2D.Selector( "RainbowClock", subSelection, ColorsFactor, -LocationOfStillMovement, -LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, !ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
		}
		else if ( fxColor.getOpacity() == vibrantColors.DarkPink.getOpacity() &&
				fxColor.getRed() == vibrantColors.DarkPink.getRed() &&
				fxColor.getGreen() == vibrantColors.DarkPink.getGreen() &&
				fxColor.getBlue() == vibrantColors.DarkPink.getBlue() )//neonGreenNum)
		{//pw.setArgb( x, y, (int)(255 * 16777216 + (int)color.ToRGB()[0] * 65536 + (int)color.ToRGB()[1] * 256 + (int)color.ToRGB()[2]));//setArgb // */
			//greenBlueGreenUsed = true;
			postPattern2D.Selector( "RainbowClock", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, 16 * NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, new Color[][] { vibrantColorCombos.GreenBlueGreenFXcolors, vibrantColorCombos.GreenBlueGreenFXcolorsReverse } );
		}
		else if ( fxColor.getOpacity() == vibrantColors.Pink.getOpacity() &&
				fxColor.getRed() == vibrantColors.Pink.getRed() &&
				fxColor.getGreen() == vibrantColors.Pink.getGreen() &&
				fxColor.getBlue() == vibrantColors.Pink.getBlue() )
		{//304 + 244 = 548 // 656 //Need Correction For Screen Size !!
			postPattern2D.Selector( "RainbowHorizontal", subSelection, ColorsFactor, - LocationOfStillMovement, - LocationOfColorMovement, x - 0.341666666666666 * Dim.getWidth(), 0.3270833333333333 * Dim.getWidth(), RepeatFactor, FullSliderRunThrough, 0.3270833333333333 * Dim.getWidth(), NumberOfClockHands, FanOutRadius, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, OuterCutOffRadius, SpiralFactor, ShrunkenFactor, NumberOfSpirals, HalfScreenDiagionalLength, ExponentValue, ColorFlipper, XScaleFactor, YScaleFactor, ReversedColors, ReversedRainbow, SwapColorComboDuo, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted, BrowserPRColor, Dim, TypeOfDisplay, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertInsteadOfReverse, InvertBasisPicture, InvertBoth, InvertJustOrigional, InvertTextAlways, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
		}
		else
		{
			someTargetColorHit = false;
			//if ( ( ShowBasisOverlayForBackground && laterReversed == Reversed ) || ( ShowBasisOverlayForText && laterReversed != Reversed ) )
			postPattern2D.set( fxColor );
		}
		fxColor = postPattern2D.ToFXColor(); 
		//basisPRColor = BasisPRColor;


		//BelowToSpaceAndCommentModularizedStreamLinedSystem
		/*if ( AuxiliarySwitch && !UseFadeAtAll )//Circumvention if else tree For Speed
		{
			basisPRColor = BasisPRColor;
			if ( someTargetColorHit )
				if ( !( InvertBoth || InvertBasisPicture ) )
					basisPRColor = BasisPRColor;
				else
				{	
					tempColor = basisPRColor;
					basisPRColor = tempColor.invert();
				}
			else// if ( !someTargetColorHit )
			{
				if ( ( InvertBasisPicture && !browserTextHit ) || ( !InvertBasisPicture && browserTextHit ) )
					fxColor = basisPRColor.invert();
				else// if ( ( InvertBasisPicture && browserTextHit ) || ( !InvertBasisPicture && !browserTextHit ) )
					fxColor = basisPRColor;
				rainbowSoftColor.set( fxColor );
				return fxColor;
			}
			if ( !basisImageStandOutHit && !browserTextHit )
				if ( !InvertJustOrigional && !InvertBoth )
				{
					fxColor = postPattern2D.ToFXColor();
					rainbowSoftColor.set( fxColor );
					return fxColor;
				}
				else
				{
					tempColor = postPattern2D.ToFXColor();
					fxColor = tempColor.invert();
					rainbowSoftColor.set( fxColor );
					return fxColor;
				}
			else if ( basisImageStandOutHit && !browserTextHit )
				if ( !InvertBasisPicture && !InvertBoth )
				{
					fxColor = basisPRColor;
					rainbowSoftColor.set( fxColor );
					return fxColor;
				}
				else
				{
					tempColor = basisPRColor;
					fxColor = tempColor.invert();
					rainbowSoftColor.set( fxColor );
					return fxColor;
				}
			else if ( basisImageStandOutHit && browserTextHit )
			{
				if ( ShowBasisOverlayForText )
				{
					tempColor = basisPRColor;
					fxColor = tempColor.invert();
				}
				//fxColor = colorDecide.NextColorDecide( basisPRColor, BackgroundBasisPRColor, fxColor, BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, someTargetColorHit, !browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );
				tempColor = fxColor;
				colorDecide.NextColorDecide( basisPRColor, BackgroundBasisPRColor, tempColor, BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, someTargetColorHit, !browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );
				fxColor = colorDecide.ToFXColor();
				if ( textTransitionFactor > 0.01 )// && textTransitionFactor < 0.99 )// No Computation Of || TextOutlineBlendingToBasisInvert ) With Auxillary Switch True.
				{
					transparencySlider.TransparencySliderFunction( 1, textTransitionFactor, fxColor, basisPRColor );
					fxColor = transparencySlider.ToFXColor();
				}
			}
		}// #%#/ //Below Should Work Without Above
		else// if ( !AuxiliarySwitch || UseFadeAtAll )
		{*/
		determinerForBasisImageHit.PixelColorDetermine( BasisPRColor, BackgroundBasisPRColor, BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertBasisPicture, InvertBoth, NextStepColorTooSimilarEffect, !basisImageStandOutHit, TextColorToOverlay, BackgroundColorToOverlay, BasisOverlaySperateTextColor, BasisOverlaySperateBackgroundColor, TextColorOverlay, BackgroundColorOverlay, ShowBasisOverlayForText, ShowBasisOverlayForBackground, BasisOverlaySeperateTextFade, BasisOverlaySeperateBackgroundFade, basisImageStandOutHit, someTargetColorHit, browserTextHit, textTransitionFactor, someTargetColorHitFromDisplayType, laterReversed, TypeOfDisplay == "BackgroundToBasisFullDisplay", UseFadeAtAll, postPattern2D.ToFXColor() );
		fxColor = determinerForBasisImageHit.ToFXColor();
		//if ( determinerForBasisImageHit.ReturnImmediatly() )// || ( basisImageStandOutHit && browserTextHit && !TextOutlineBlendingToBasisInvert && textTransitionFactor > 0.04 && textTransitionFactor < 0.96 ) )
		//{
		//	rainbowSoftColor.set( fxColor );
		//	return fxColor;
		//}
		//if ( basisImageStandOutHit && ( InvertBoth || InvertBasisPicture ) )
		//{
		//	tempColor = basisPRColor;
		//	basisPRColor = tempColor.invert();
		//}
		//tempColor = fxColor;
		//fxColor = colorDecide.NextColorDecide( basisPRColor, BackgroundBasisPRColor, tempColor, BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, someTargetColorHit, !browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );
		//}
		rainbowSoftColor.set( fxColor );
		return fxColor;// */


		//Below Is Most Boiled Down Form Of Core Function For Perfect Blended-Invertable-Basis Display
		/*boolean returnImmediatly = basisImageStandOutHit && browserTextHit && !TextOutlineBlendingToBasisInvert && textTransitionFactor > 0.01 && textTransitionFactor < 0.99;
		//if ( basisImageStandOutHit && ( InvertBoth || InvertBasisPicture ) )
		//{
		//	tempColor = basisPRColor.invert();
		//	basisPRColor = tempColor;
		//}
		if ( someTargetColorHit && basisImageStandOutHit && browserTextHit )
		{
				if ( ShowBasisOverlayForText )
				{
					tempColor = basisPRColor;
					fxColor = tempColor.invert();
				}
				if ( textTransitionFactor > 0.01 )
					transparencySlider.TransparencySliderFunction( 1, textTransitionFactor, fxColor, basisPRColor );
		}
		else if ( !someTargetColorHit && browserTextHit )//( !someTargetColorHit )
		{
			fxColor = basisPRColor.invert();
			returnImmediatly = true;
		}
			{
			if ( ( InvertBasisPicture && !browserTextHit ) || ( !InvertBasisPicture && browserTextHit ) )
			{
				returnImmediatly = false;
				fxColor = basisPRColor.invert();
			}
			else if ( browserTextHit )
				fxColor = basisPRColor;
		}// #/
		if ( returnImmediatly )// || ( basisImageStandOutHit && browserTextHit && !TextOutlineBlendingToBasisInvert && textTransitionFactor > 0.04 && textTransitionFactor < 0.96 ) )
		{
			postPattern2D.set( fxColor );
			rainbowSoftColor.set( fxColor );
			return fxColor;
		}
		fxOtherColor = fxColor;
		fxColor = colorDecide.NextColorDecide( basisPRColor, BackgroundBasisPRColor, fxOtherColor, BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, someTargetColorHit, !browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );
		postPattern2D.set( fxColor );
		rainbowSoftColor.set( fxColor );
		return fxColor;// #/


		//Old 2026 NonModular System To End Of Class
		if ( someTargetColorHit )
			if ( !( InvertBoth || InvertBasisPicture ) )
				basisPRColor = BasisPRColor;
			else
			{	
				tempColor = basisPRColor;
				basisPRColor = tempColor.invert();
			}
		if ( AuxiliarySwitch )
		{
			//if ( ( InvertBasisPicture && !browserTextHit ) || ( !InvertBasisPicture && browserTextHit ) )
			//{
			//	tempColor = basisPRColor;
			//	fxColor = tempColor.invert();
			//}
			//else
			//	return basisPRColor;
			//if ( InvertBasisFromBackground )
			//	if ( !colorTooSimilarFunction.ColorTooSimilarFunction( fxColor, basisPRColor, ColorDifference ) )
			//		return fxColor;
			//transparencySlider.TransparencySliderFunction( 2, 1, fxColor, basisPRColor );
			//if ( !colorTooSimilarFunction.ColorTooSimilarFunction( InitialColorContrastingChoice, transparencySlider.ToFXColor(), ColorDifference ) )
			//	return InitialColorContrastingChoice;
			//else if ( !colorTooSimilarFunction.ColorTooSimilarFunction( ColorTooSimilarReplacementColor, transparencySlider.ToFXColor(), ColorDifference ) )
			//	return ColorTooSimilarReplacementColor;
			//else if ( !colorTooSimilarFunction.ColorTooSimilarFunction( vibrantColors.SimpleBlue, transparencySlider.ToFXColor(), ColorDifference ) )
			//	return vibrantColors.SimpleBlue;
			//else
			//	return vibrantColors.SimpleRed;
			if ( !someTargetColorHit )
			{
				//return colorDecide.NextColorDecide( basisPRColor, BackgroundBasisPRColor, postPattern2D.ToFXColor(), BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, someTargetColorHit, !browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );

				if ( ( InvertBasisPicture && !browserTextHit ) || ( !InvertBasisPicture && browserTextHit ) )
					return colorDecide.NextColorDecide( basisPRColor.invert(), BackgroundBasisPRColor, postPattern2D.ToFXColor(), BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, someTargetColorHit, !browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );
				else
					return colorDecide.NextColorDecide( basisPRColor, BackgroundBasisPRColor, postPattern2D.ToFXColor(), BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, someTargetColorHit, !browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );
			}
			else if ( basisImageStandOutHit && !TextOutlineBlendingToBasisInvert && !ShowBasisOverlayForText && textTransitionFactor > 0.01 && textTransitionFactor < 0.99 )
			{
				//if ( !someTargetColorHit )
					//tempColor = fxColor;
				//else
				//tempColor = basisPRColor;
				if ( colorTooSimilarFunction.ColorTooSimilarFunction( postPattern2D.ToFXColor(), basisPRColor, ColorDifference) )
				{
					fxColor = basisPRColor.invert();
					postPattern2D.TransparencySliderFunction( 1, textTransitionFactor, fxColor, basisPRColor );
					return postPattern2D.ToFXColor();
				}
				postPattern2D.TransparencySliderFunction( 1, textTransitionFactor, postPattern2D.ToFXColor(), basisPRColor );
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				//return colorDecide.NextColorDecide( postPattern2D.ToFXColor(), postPattern2D.ToFXColor(), postPattern2D.ToFXColor(), BrowserPRColor, postPattern2D.ToFXColor(), postPattern2D.ToFXColor(), 9999, true, false, false, false );
				return postPattern2D.ToFXColor();
			}
			else if ( !ShowBasisOverlayForText )
			{
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				return colorDecide.NextColorDecide( basisPRColor, BackgroundBasisPRColor, postPattern2D.ToFXColor(), BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, someTargetColorHit, !browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );
			}
			else if ( basisImageStandOutHit )
			{
				if ( !browserTextHit )//&& someTargetColorHit )
				{
					postPattern2D.set( basisPRColor );
					rainbowSoftColor.set( postPattern2D.ToFXColor() );
					return postPattern2D.ToFXColor();
				}
				//else if ( browserTextHit && !someTargetColorHit )
				//{
				//	tempColor = postPattern2D.ToFXColor();
				//	fxColor = postPattern2D.ToFXColor().invert();
				//}
				else if ( browserTextHit )//&& someTargetColorHit )
				{
					tempColor = basisPRColor;
					fxColor = tempColor.invert();
				}
				else ;// if ( !browserTextHit && !someTargetColorHit ) Just Shows fxColor
					tempColor = basisPRColor;
				if ( textTransitionFactor < 0.01 )
					postPattern2D.set( fxColor );
				else
					postPattern2D.TransparencySliderFunction( 1, textTransitionFactor, fxColor, tempColor );
			}
		rainbowSoftColor.set( postPattern2D.ToFXColor() );
		return postPattern2D.ToFXColor();// #/
		}// #/

		tempColor = postPattern2D.ToFXColor();
		if ( !someTargetColorHit )
		{
			if ( ( InvertBasisPicture && !browserTextHit ) || ( !InvertBasisPicture && browserTextHit ) )
			{
				tempColor = basisPRColor;
				fxColor = tempColor.invert();
			}
			else// if ( ( InvertBasisPicture && browserTextHit ) || ( !InvertBasisPicture && !browserTextHit ) )
				fxColor = basisPRColor;
			postPattern2D.set( fxColor );
		}
		else //if ( someTargetColorHit )
		{
			if ( !BasisOverlaySeperateBackgroundFade && !BasisOverlaySeperateTextFade )
				postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( tempColor, TextColorToOverlay, BackgroundColorToOverlay, BackgroundColorOverlay, TextColorOverlay, browserTextHit ) );
			else if ( BasisOverlaySeperateBackgroundFade && !browserTextHit && !BasisOverlaySeperateTextFade && basisImageStandOutHit && ShowBasisOverlayForBackground )
			{
				postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( basisPRColor, TextColorToOverlay, BasisOverlaySperateBackgroundColor, BasisOverlaySeperateBackgroundFade, TextColorOverlay, browserTextHit ) );
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				return postPattern2D.ToFXColor();
			}
			else if ( BasisOverlaySeperateBackgroundFade && !browserTextHit && !BasisOverlaySeperateTextFade && basisImageStandOutHit )
			{
				postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( tempColor, TextColorToOverlay, BasisOverlaySperateBackgroundColor, BasisOverlaySeperateBackgroundFade, TextColorOverlay, browserTextHit ) );
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				return postPattern2D.ToFXColor();
			}
			else if ( BasisOverlaySeperateBackgroundFade && !BasisOverlaySeperateTextFade )
				postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( tempColor, TextColorToOverlay, BackgroundColorToOverlay, BackgroundColorOverlay, TextColorOverlay, browserTextHit ) );
			else if ( BasisOverlaySeperateTextFade && browserTextHit && !BasisOverlaySeperateBackgroundFade && basisImageStandOutHit && ShowBasisOverlayForText )
			{
				postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( basisPRColor, BasisOverlaySperateTextColor, BackgroundColorToOverlay, BackgroundColorOverlay, BasisOverlaySeperateTextFade, browserTextHit ) );
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				return postPattern2D.ToFXColor();
			}
			else if ( BasisOverlaySeperateTextFade && browserTextHit && !BasisOverlaySeperateBackgroundFade && basisImageStandOutHit )
			{
				postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( tempColor, BasisOverlaySperateTextColor, BackgroundColorToOverlay, BackgroundColorOverlay, BasisOverlaySeperateTextFade, browserTextHit ) );
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				return postPattern2D.ToFXColor();
			}
			else if ( BasisOverlaySeperateTextFade && !BasisOverlaySeperateBackgroundFade )
				postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( tempColor, TextColorToOverlay, BackgroundColorToOverlay, BackgroundColorOverlay, TextColorOverlay, browserTextHit ) );
			else if ( BasisOverlaySeperateTextFade && BasisOverlaySeperateBackgroundFade && basisImageStandOutHit && ( ShowBasisOverlayForBackground && !browserTextHit ) || ( ShowBasisOverlayForText && browserTextHit ) )
			{
				postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( basisPRColor, BasisOverlaySperateTextColor, BasisOverlaySperateBackgroundColor, BasisOverlaySeperateBackgroundFade, BasisOverlaySeperateTextFade, browserTextHit ) );
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				return postPattern2D.ToFXColor();
			}
			else if ( BasisOverlaySeperateTextFade && BasisOverlaySeperateBackgroundFade && basisImageStandOutHit )
			{
				postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( tempColor, BasisOverlaySperateTextColor, BasisOverlaySperateBackgroundColor, BasisOverlaySeperateBackgroundFade, BasisOverlaySeperateTextFade, browserTextHit ) );
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				return postPattern2D.ToFXColor();
			}
			else //if ( BasisOverlaySeperateTextFade && BasisOverlaySeperateBackgroundFade )
				postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( tempColor, TextColorToOverlay, BackgroundColorToOverlay, BackgroundColorOverlay, TextColorOverlay, browserTextHit ) );

			if ( basisImageStandOutHit && !TextOutlineBlendingToBasisInvert && !ShowBasisOverlayForText && ( textTransitionFactor > 0.001 ) )
			{
				tempColor = basisPRColor;
				transparencySlider.TransparencySliderFunction( 1, textTransitionFactor, postPattern2D.ToFXColor(), tempColor );
				postPattern2D.set( transparencySlider.ToFXColor() );
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				//return colorDecide.NextColorDecide( postPattern2D.ToFXColor(), postPattern2D.ToFXColor(), postPattern2D.ToFXColor(), BrowserPRColor, postPattern2D.ToFXColor(), postPattern2D.ToFXColor(), 9999, true, false, false, false );
				return postPattern2D.ToFXColor();
			}
			else if ( basisImageStandOutHit && ( ( !ShowBasisOverlayForBackground && !browserTextHit ) || ( !ShowBasisOverlayForText && browserTextHit ) ) )
			{
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				//return colorDecide.NextColorDecide( postPattern2D.ToFXColor(), postPattern2D.ToFXColor(), postPattern2D.ToFXColor(), BrowserPRColor, postPattern2D.ToFXColor(), postPattern2D.ToFXColor(), 9999, true, false, false, false );
				return postPattern2D.ToFXColor();
			}
			else if ( ShowBasisOverlayForText && basisImageStandOutHit && browserTextHit && textTransitionFactor > 0.01 )
			{
				tempColor = basisPRColor;
				fxColor = tempColor.invert();
				transparencySlider.TransparencySliderFunction( 1, textTransitionFactor, fxColor, tempColor );
				postPattern2D.set( transparencySlider.ToFXColor() );
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				return postPattern2D.ToFXColor();
			}
		}// #/
		//if ( !( basisImageStandOutHit && browserTextHit && ( InvertBoth || InvertBasisPicture ) ) )
		//	basisPRColor = BasisPRColor;
		//else
		//	basisPRColor = basisPRColor.invert();
		//if ( !browserTextHit && BrowserPRColor.getOpacity() > 0 && ( TypeOfDisplay != "FullDisplayNoBrowser" || TypeOfDisplay != "TextDisplayOnly" || TypeOfDisplay != "TextDisplayOnlyWhiteShowingBackground" ) )
		//{
		//	transparencySlider.CombineColors( postPattern2D.ToFXColor(), BrowserPRColor );
		//	postPattern2D.set( transparencySlider.ToFXColor() );
		//}// #/
		rainbowSoftColor.set( postPattern2D.ToFXColor() );
		//if ( basisImageStandOutHit && browserTextHit && ( InvertBoth || InvertBasisPicture ) )
		//return colorDecide.NextColorDecide( basisPRColor.invert(), BackgroundBasisPRColor, postPattern2D.ToFXColor(), BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, someTargetColorHit, !browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );
		//if ( determinerForBasisImageHit.ReturnImmediatly() )
		//	return postPattern2D.ToFXColor();
		fxColor = colorDecide.NextColorDecide( basisPRColor, BackgroundBasisPRColor, postPattern2D.ToFXColor(), BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, someTargetColorHit, !browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );
		return fxColor;// */
	}

	/*public Color RainbowVideoTest(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double FullSliderRunThrough, int x, int y, double RepeatFactor, double SpiralFactor, double NumberOfSpirals, double HalfScreenDiagionalLength, boolean ReversedColors, boolean ReversedRainbow, boolean SwapColorComboDuo, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted, Color BasisPRColor, Color BackgroundBasisPRColor, Color BrowserPRColor, Dimension2D Dim, String TypeOfDisplay, Color InitialColorContrastingChoice, Color ColorTooSimilarReplacementColor, double ColorDifference, boolean InvertBasisFromBackground, boolean InvertInsteadOfReverse, boolean InvertBasisPicture, boolean InvertBoth, boolean InvertJustOrigional, boolean InvertTextAlways, /#boolean ReversalOfBackgroundEffectsMaster,#/ boolean NextStepColorTooSimilarEffect, Color TextColorToOverlay, Color BackgroundColorToOverlay, boolean TextColorOverlay, boolean BackgroundColorOverlay, boolean OverlayColorScheme )
	{
		pattern2D.set( vibrantColors.HalfGrey );
		rainbowSoftColor.set( vibrantColors.HalfGrey );
		pattern2D.RainbowDoubleExponentiator( FullSliderRunThrough * - ColorsFactor / RepeatFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, FullSliderRunThrough, FullSliderRunThrough, Dim, 4., -1, displayType.AccessLaterReversed() && !InvertInsteadOfReverse, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
		if ( ( InvertInsteadOfReverse && displayType.AccessLaterReversed() != Reversed ) || InvertBoth || ( InvertJustOrigional && displayType.AccessLaterReversed() == Reversed ) || ( InvertTextAlways && displayType.AccessLaterReversed() != Reversed ) )
			pattern2D.set( pattern2D.ToFXColor().invert() );
		pattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( pattern2D.ToFXColor(), TextColorToOverlay, BackgroundColorToOverlay, BackgroundColorOverlay, TextColorOverlay, displayType.AccessLaterReversed() != Reversed ) );
		rainbowSoftColor.set( pattern2D.ToFXColor() );
		//rainbowSoftColor = new RainbowSoftColor( new double[] { 255 * fxColor.getRed(), 255 * fxColor.getGreen(), 255 * fxColor.getBlue(), fxColor.getOpacity() } );
		rgb = rainbowSoftColor.ToRGB();
		argb = rainbowSoftColor.ToARGB();
		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 ColorValueFitterCapper ( double ColorToBeChecked )
	{
		colorBeingChecked = ColorToBeChecked;
		while ( colorBeingChecked < 0 )
			colorBeingChecked = 0;
		while ( colorBeingChecked > 255 )
			colorBeingChecked = 255;
		return Math.round(colorBeingChecked);
	}
	public double OpacityValueFitterCapper ( double OpacityToBeChecked )
	{
		opacityBeingChecked = OpacityToBeChecked;
		while ( opacityBeingChecked < 0 )
			opacityBeingChecked = 0;
		while ( opacityBeingChecked > 1 )
			opacityBeingChecked = 1;
		return opacityBeingChecked;
	}
	public double ColorValueFitter ( double ColorToBeChecked )
	{
		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 )
	{
		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)(ColorValueFitterCapper(ARGB[0])), (int)(ColorValueFitterCapper(ARGB[1])), (int)(ColorValueFitterCapper(ARGB[2])), OpacityValueFitterCapper(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
}