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 javafx.application.Platform;
//import java.awt.Dimension;
import javafx.geometry.Dimension2D;

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

//FOR RainbowColorCodeSchemes.java! To Use RainbowSoftColorCodes And Access RainbowpostPattern2D.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 RainbowPostPattern2D rainbowPostPattern2D = new RainbowPostPattern2D();
	private double[] rgb = {0,0,0}, argb = {0,0,0,1};
	private Color fxColor = Color.BEIGE, tempColor = Color.OLIVE;//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 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 RainbowPostPattern2D postPattern2D = new RainbowPostPattern2D( 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 Dimension halfedDim = new Dimension();
	private Dimension2D halfedDim = new Dimension2D( 1920, 1080 );
	//private boolean someTargetColorInTheCenterHit = false, greenBlueGreenUsed = false;// wheelTipsHit = false, someTargetColorHit = true, greenBlueGreenUsed = false, otherBrowserColorHit = false, makePixelTransparent = false, aColorBarHit = false, aWheelDiamondHit = false;
	//private int colorBarIndex = 0, colorBarCheck = 0, colorBarDistance = 0;
	boolean laterReversed = false, browserTextHit = false, someTargetColorHit = true, basisImageStandOutHit = false;//returnImmediately = false, browserHit = false; //reversalOfBackgroundEffectsSlave = true;

	public FwaFlagLogo()//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 FwaFlagLogo( 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 FwaFlagLogo( 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
	{
		//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 FwaFlagLogoRaster(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, RainbowOvalFitting[] Rainbowovalfitting, 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 )
	{
		postPattern2D.set( vibrantColors.HalfGrey );
		rainbowSoftColor.set( vibrantColors.HalfGrey );
		//double ringSize = 0.175979734764;//50 833 = 783 47 1835 = 1788 //0.175979734764//0.087989867382
		int subSelection = 0;

		double FanOutRadius = Dim.getHeight() / 2;

		halfedDim = new Dimension2D( Dim.getWidth() / 2, Dim.getHeight() / 2 );
		//halfedDim.setSize( Dim.getWidth() / 2, Dim.getHeight() / 2 );//Check Into If This Is Right
		someTargetColorHit = true; //browserHit = false;
		//rainbowSoftColor = new RainbowSoftColor( DisplayTypeDeterminer ( TypeOfDisplay, BasisPRColor, BackgroundBasisPRColor, BrowserPRColor, browserTextHit ) );// reversalOfBackgroundEffectsSlave ) );
		laterReversed = ReversedColors;//reversalOfBackgroundEffectsSlave = ReversalOfBackgroundEffectsMaster;
		rainbowSoftColor.set( displayType.DisplayTypeDeterminer ( TypeOfDisplay, BasisPRColor, BackgroundBasisPRColor/*BackgroundBasisPRColor*/, BrowserPRColor, laterReversed, ShowBasisOverlayForText, ShowBasisOverlayForBackground ) );// reversalOfBackgroundEffectsSlave ) );
		browserTextHit = displayType.AccessLaterReversed() != laterReversed;
		laterReversed = displayType.AccessLaterReversed();
		/*try { Thread.sleep(0,1);//primaryThread.sleep(1);
		} catch (InterruptedException e) {
			System.out.println("Interrupted.");
		}// */
		//pattern2D.set( rainbowSoftColor.ToFXColor() );
		rgb = rainbowSoftColor.ToRGB();
		argb = rainbowSoftColor.ToARGB();
		fxColor = rainbowSoftColor.ToFXColor();
		if ( displayType.AccessReturnImmediately() )
			return fxColor;

		/*if ( tertiaryXslider < videoSequenceLoopQuantity / 3. )
		{



		}
		else if ( tertiaryXslider < 2. * videoSequenceLoopQuantity / 3. )
		{
			postPattern2D.RainbowRing( ringSize * Dim.getHeight() / 2., 0, ( tertiaryXslider + 6. * ringSize * Dim.getHeight() ) * ringSize * Dim.getHeight() / ( 2. * videoSequenceLoopQuantity ), ( x - Dim.getWidth() / 2. ) * Dim.getHeight() / 1788., ( y - Dim.getHeight() / 2. + 1. ) * Dim.getHeight() / 783., ringSize * Dim.getHeight() / 2., (1. - ringSize ) * Dim.getHeight() / 2. - .5, Dim.getHeight() / 2., vibrantColorCombos.RainbowFXcolorsWNeonGreenCenterReverse, false );
		}
		else
		{

		}// */


		if ( fxColor.getOpacity() == vibrantColors.White.getOpacity() &&
				fxColor.getRed() == vibrantColors.White.getRed() &&
				fxColor.getGreen() == vibrantColors.White.getGreen() &&
				fxColor.getBlue() == vibrantColors.White.getBlue() )
		{//RainbowStrobeGradated
			//postPattern2D.Selector( "RainbowStrobe", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, FanOutRadius, NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
			postPattern2D.Selector( "RainbowClock", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement - FullSliderRunThrough / 2, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, 16, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
		}//public Color RainbowStrobe(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, int x, int y, double RepeatFactor, double FullSliderRunThrough, double HalfScreenDiagionalLength, double XScaleFactor, double YScaleFactor, boolean ReversedColors, boolean ReversedRainbow, boolean SwapColorComboDuo, boolean SwapColorComboDuo, boolean SwapColorComboDuo, boolean SwapColorComboDuo, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted, Color BrowserPRColor, /*PixelWriter BrowserPW,*/ 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, Color[][] colorSet )
		else if ( fxColor.getOpacity() == vibrantColors.Maroon.getOpacity() &&
				fxColor.getRed() == vibrantColors.Maroon.getRed() &&
				fxColor.getGreen() == vibrantColors.Maroon.getGreen() &&
				fxColor.getBlue() == vibrantColors.Maroon.getBlue() )
		{//304 + 244 = 548 // 656 //Need Correction For Screen Size !!
			postPattern2D.Selector( "RainbowHorizontal", subSelection, ColorsFactor, - LocationOfStillMovement, - LocationOfColorMovement, x - Dim.getWidth() * 11.5 / 1920, y, RepeatFactor, FullSliderRunThrough, Dim.getWidth() * 1895 / 1920, NumberOfClockHands, FanOutRadius, NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
			//postPattern2D.Selector( "RainbowHorizontal", subSelection, ColorsFactor, - LocationOfStillMovement, - LocationOfColorMovement, x - Rainbowovalfitting[1].getXOfLeftOfRing(), y, RepeatFactor, FullSliderRunThrough, Rainbowovalfitting[1].xOfRightOfLeftOfRing - Rainbowovalfitting[1].xOfLeftOfRing, NumberOfClockHands, FanOutRadius, NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
		}
		else if ( fxColor.getOpacity() == vibrantColors.Lime.getOpacity() &&
				fxColor.getRed() == vibrantColors.Lime.getRed() &&
				fxColor.getGreen() == vibrantColors.Lime.getGreen() &&
				fxColor.getBlue() == vibrantColors.Lime.getBlue() )
		{//219 - 197 = 22 1040 / 783 = 0.7528846153846154 : - 16.56346153846154//RainbowRingGradated																																																																														/#(1. - ringSize ) * Dim.getHeight() / 2. - .5, Dim.getHeight() / 2. #/
			postPattern2D.Selector( "RainbowRing", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, ( x - 1927 * Dim.getWidth() / 3840 ) / 2.2868117797695264 + halfedDim.getWidth(), y - 1093 * Dim.getHeight() / 2160 + halfedDim.getHeight(), RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, FanOutRadius, 8, 29 * Dim.getHeight() / 2160, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
			//postPattern2D.Selector( "RainbowRing", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, ( x - Rainbowovalfitting[0].getXofCenter() ) / Math.abs( Rainbowovalfitting[0].getWidthToHeightRatio() ) + halfedDim.getWidth(), y - Rainbowovalfitting[0].getYofCenter() + halfedDim.getHeight(), RepeatFactor, FullSliderRunThrough, RainbowWidth, NumberOfClockHands, Rainbowovalfitting[0].getNumberOfRings(), Rainbowovalfitting[0].getRingDisplacement(), 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
		}
		else if ( fxColor.getOpacity() == vibrantColors.Black.getOpacity() &&
				fxColor.getRed() == vibrantColors.Black.getRed() &&
				fxColor.getGreen() == vibrantColors.Black.getGreen() &&
				fxColor.getBlue() == vibrantColors.Black.getBlue() )
		{//304 + 244 = 548 // 656 //Need Correction For Screen Size !!
			postPattern2D.Selector( "RainbowHorizontal", subSelection, ColorsFactor, - LocationOfStillMovement, - LocationOfColorMovement, x - Dim.getWidth() * 438 / 1920, y, RepeatFactor, FullSliderRunThrough, Dim.getWidth() * 1074 / 1920, NumberOfClockHands, FanOutRadius, NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, new Color[][] { vibrantColorCombos.ImperialFXcolors, vibrantColorCombos.ImperialFXcolorsReverse } );//new Color[][] { vibrantColorCombos.BlackWhiteFX, vibrantColorCombos.WhiteMagentaBlackFX } );//new Color[][] { colorArrayReverser.ReverseArray( vibrantColorCombos.BlackWhiteFX, true, false, ReversedRainbow ), colorArrayReverser.ReverseArray( vibrantColorCombos.WhiteNeonGreenBlackFX, true, false, ReversedRainbow ) } );
			//postPattern2D.Selector( "RainbowHorizontal", subSelection, ColorsFactor, - LocationOfStillMovement, - LocationOfColorMovement, x - Rainbowovalfitting[2].getXOfLeftOfRing(), y, RepeatFactor, FullSliderRunThrough, Rainbowovalfitting[2].xOfRightOfRing - Rainbowovalfitting[2].xOfLeftOfRing, NumberOfClockHands, FanOutRadius, NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, new Color[][] { colorArrayReverser.ReverseArray( vibrantColorCombos.BlackWhiteFX, true, false, ReversedRainbow ), colorArrayReverser.ReverseArray( vibrantColorCombos.WhiteNeonGreenBlackFX, true, false, ReversedRainbow ) } );
		}
		else if ( fxColor.getOpacity() == vibrantColors.Magenta.getOpacity() &&
				fxColor.getRed() == vibrantColors.Magenta.getRed() &&
				fxColor.getGreen() == vibrantColors.Magenta.getGreen() &&
				fxColor.getBlue() == vibrantColors.Magenta.getBlue() )
		{//304 + 244 = 548 // 656 //Need Correction For Screen Size !!
			postPattern2D.Selector( "RainbowClock", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, RainbowWidth, 1/*NumberOfClockHands*/, Dim.getWidth(), NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
		}
		else if ( fxColor.getOpacity() == vibrantColors.Teal.getOpacity() &&
				fxColor.getRed() == vibrantColors.Teal.getRed() &&
				fxColor.getGreen() == vibrantColors.Teal.getGreen() &&
				fxColor.getBlue() == vibrantColors.Teal.getBlue() )
		{
			//postPattern2D.Selector( "RainbowFlasher", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, FullSliderRunThrough, NumberOfClockHands, FanOutRadius, NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, null );
			//postPattern2D.Selector( "RainbowFlasher", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, FullSliderRunThrough, NumberOfClockHands, FanOutRadius, NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, new Color[][] { { vibrantColors.Green, vibrantColors.Pink, vibrantColors.OxylBlue } } );
			//if ( !OverlayColorScheme )
			//	postPattern2D.Selector( "RainbowFlasher", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, FullSliderRunThrough, NumberOfClockHands, FanOutRadius, NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, new Color[][] { { vibrantColors.Green, vibrantColors.Pink }, { vibrantColors.White, vibrantColors.NeonGreen }, { vibrantColors.SkyBlue, vibrantColors.Brown } } );
			//else
			//	postPattern2D.Selector( "RainbowFlasher", subSelection, ColorsFactor, LocationOfStillMovement, LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, FullSliderRunThrough, NumberOfClockHands, FanOutRadius, NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, new Color[][] { { vibrantColors.Green, vibrantColors.Pink }, { vibrantColors.BrightBlue, vibrantColors.NeonGreen } } );
			if ( !OverlayColorScheme )
				if ( !laterReversed )
					transparencySlider.TransparencySliderFunction( ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.Green, vibrantColors.Pink );
			//postPattern2D.TransparencySliderFunction(ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.Green, vibrantColors.Pink );
				else if ( !InvertInsteadOfReverse )
					transparencySlider.TransparencySliderFunction( ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.White, vibrantColors.NeonGreen );
			//postPattern2D.TransparencySliderFunction(ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.White, vibrantColors.NeonGreen );
				else
					transparencySlider.TransparencySliderFunction( ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.SkyBlue, vibrantColors.Brown );
			else
				if ( !laterReversed )
					transparencySlider.TransparencySliderFunction( ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.Green, vibrantColors.Pink );
				else
					transparencySlider.TransparencySliderFunction( ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.BrightBlue, vibrantColors.NeonGreen );
			postPattern2D.set( transparencySlider.ToFXColor() );
			if ( ( InvertInsteadOfReverse && browserTextHit ) || InvertBoth || ( InvertJustOrigional && !browserTextHit ) || ( InvertTextAlways && browserTextHit ) )
				postPattern2D.set( postPattern2D.ToFXColor().invert() );
			//tempColor = postPattern2D.ToFXColor();
			//postPattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( tempColor, TextColorToOverlay, BackgroundColorToOverlay, BackgroundColorOverlay, TextColorOverlay, browserTextHit ) );
			if ( displayType.AccessTextTransitionFactor() > 0.001 )
			{
				fxColor = postPattern2D.ToFXColor();
				if ( !OverlayColorScheme )
					if ( !laterReversed )
						transparencySlider.TransparencySliderFunction( ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.White, vibrantColors.NeonGreen );
					else if ( !InvertInsteadOfReverse )
						transparencySlider.TransparencySliderFunction( ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.Green, vibrantColors.Pink );
					else
						transparencySlider.TransparencySliderFunction( ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.SkyBlue, vibrantColors.Brown );
				else
					if ( !laterReversed )
						transparencySlider.TransparencySliderFunction( ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.White, vibrantColors.NeonGreen );
					else
						transparencySlider.TransparencySliderFunction( ColorsFactor / RepeatFactor, LocationOfStillMovement / FullSliderRunThrough, vibrantColors.Green, vibrantColors.Pink );
				//pattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( transparencySlider.ToFXColor(), TextColorToOverlay, BackgroundColorToOverlay, BackgroundColorOverlay, TextColorOverlay, !browserTextHit ) );
				//tempColor = pattern2D.ToFXColor();
				tempColor = transparencySlider.ToFXColor();
				transparencySlider.TransparencySliderFunction( 1, displayType.AccessTextTransitionFactor(), fxColor, tempColor );
				postPattern2D.set( transparencySlider.ToFXColor() );
			}// */
		}
		else if ( fxColor.getOpacity() == vibrantColors.NonHotPink.getOpacity() &&
				fxColor.getRed() == vibrantColors.NonHotPink.getRed() &&
				fxColor.getGreen() == vibrantColors.NonHotPink.getGreen() &&
				fxColor.getBlue() == vibrantColors.NonHotPink.getBlue() )
		{
			postPattern2D.Selector( "RainbowHorizontal", subSelection, ColorsFactor, - LocationOfStillMovement, - LocationOfColorMovement, x, y, RepeatFactor, FullSliderRunThrough, Dim.getWidth(), NumberOfClockHands, FanOutRadius, NumberOfRingsVertically, RingDisplacement, InnerCutOffRadius, 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, TextColorToOverlay, BackgroundColorToOverlay, TextColorOverlay, BackgroundColorOverlay, OverlayColorScheme, ColorSet );
		}
		else
		{
			someTargetColorHit = false;
			//if ( ( ShowBasisOverlayForBackground && !browserTextHit ) || ( ShowBasisOverlayForText && browserTextHit ) )
			postPattern2D.set( fxColor );
		}

		basisImageStandOutHit = !( BasisPRColor.getOpacity() == BackgroundBasisPRColor.getOpacity() && 
				BasisPRColor.getRed() == BackgroundBasisPRColor.getRed() && 
				BasisPRColor.getGreen() == BackgroundBasisPRColor.getGreen() && 
				BasisPRColor.getBlue() == BackgroundBasisPRColor.getBlue() )
				&& TypeOfDisplay != "BackgroundToBasisFullDisplay";
		boolean someTargetColorHitFromDisplayType = displayType.AccessSomeTargetColorHit();
		determinerForBasisImageHit.PixelColorDetermine( BasisPRColor, BackgroundBasisPRColor, BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, InvertBasisFromBackground, AuxiliarySwitch, InvertBasisPicture, InvertBoth, NextStepColorTooSimilarEffect, TextOutlineBlendingToBasisInvert, TextColorToOverlay, BackgroundColorToOverlay, BasisOverlaySperateTextColor, BasisOverlaySperateBackgroundColor, TextColorOverlay, BackgroundColorOverlay, ShowBasisOverlayForText, ShowBasisOverlayForBackground, BasisOverlaySeperateTextFade, BasisOverlaySeperateBackgroundFade, basisImageStandOutHit, someTargetColorHit, browserTextHit, displayType.AccessTextTransitionFactor(), someTargetColorHitFromDisplayType, laterReversed, UseFadeAtAll, postPattern2D.ToFXColor() );
		postPattern2D.set( determinerForBasisImageHit.ToFXColor() );
		/*if ( AuxiliarySwitch )
		{
			if ( basisImageStandOutHit && !TextOutlineBlendingToBasisInvert && !ShowBasisOverlayForText && ( displayType.AccessTextTransitionFactor() > 0.001 ) )
			{
				if ( !someTargetColorHit )
					tempColor = fxColor;
				else
					tempColor = BasisPRColor;
				if ( colorTooSimilarFunction.ColorTooSimilarFunction( postPattern2D.ToFXColor(), BasisPRColor, ColorDifference) )
				{
					fxColor = BasisPRColor.invert();
					postPattern2D.TransparencySliderFunction( 1, displayType.AccessTextTransitionFactor(), fxColor, tempColor );
					return postPattern2D.ToFXColor();
				}
				postPattern2D.TransparencySliderFunction( 1, displayType.AccessTextTransitionFactor(), postPattern2D.ToFXColor(), tempColor );
				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, displayType.AccessSomeTargetColorHit(), laterReversed == Reversed, NextStepColorTooSimilarEffect, InvertBasisFromBackground );
			}
			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 = BasisPRColor.invert();
				}
				else// if ( !browserTextHit && !someTargetColorHit ) Just Shows fxColor
					tempColor = fxColor;
				if ( displayType.AccessTextTransitionFactor() < 0.001 )
					postPattern2D.set( fxColor );
				else
					postPattern2D.TransparencySliderFunction( 1, displayType.AccessTextTransitionFactor(), fxColor, tempColor );
			}
			rainbowSoftColor.set( postPattern2D.ToFXColor() );
			return postPattern2D.ToFXColor();// #/
		}// #/

		tempColor = postPattern2D.ToFXColor();
		if ( InvertBasisPicture && basisImageStandOutHit )
		{
			BasisPRColor = BasisPRColor.invert();
			if ( tempColor == postPattern2D.ToFXColor() )
			{
				tempColor = postPattern2D.ToFXColor().invert();
				postPattern2D.set( tempColor );
			}
		}
		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 && ( displayType.AccessTextTransitionFactor() > 0.001 ) )
			{
				tempColor = BasisPRColor;
				transparencySlider.TransparencySliderFunction( 1, displayType.AccessTextTransitionFactor(), 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 && displayType.AccessTextTransitionFactor() > 0.001 )
			{
				tempColor = BasisPRColor;
				fxColor = BasisPRColor.invert();
				transparencySlider.TransparencySliderFunction( 1, displayType.AccessTextTransitionFactor(), fxColor, tempColor );
				postPattern2D.set( transparencySlider.ToFXColor() );
				rainbowSoftColor.set( postPattern2D.ToFXColor() );
				return postPattern2D.ToFXColor();
			}
		}// */
		/*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, browserTextHit, NextStepColorTooSimilarEffect, InvertBasisFromBackground, TypeOfDisplay == "BackgroundToBasisFullDisplay" );
		if ( determinerForBasisImageHit.ReturnImmediatly() )
			return postPattern2D.ToFXColor();
		fxColor = colorDecide.NextColorDecide( BasisPRColor, BackgroundBasisPRColor, postPattern2D.ToFXColor(), BrowserPRColor, InitialColorContrastingChoice, ColorTooSimilarReplacementColor, ColorDifference, someTargetColorHitFromDisplayType, 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, laterReversed && !InvertInsteadOfReverse, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter, Adjusted );
		if ( ( InvertInsteadOfReverse && browserTextHit ) || InvertBoth || ( InvertJustOrigional && !browserTextHit ) || ( InvertTextAlways && browserTextHit ) )
			pattern2D.set( pattern2D.ToFXColor().invert() );
		pattern2D.set( independentTextBackgroundColorPasser.IndependentTextBackgroundColorPasserFunction ( pattern2D.ToFXColor(), TextColorToOverlay, BackgroundColorToOverlay, BackgroundColorOverlay, TextColorOverlay, browserTextHit ) );
		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 ReversedColors //
	{//!!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
}