package rainbowPackage;

//import javafx.scene.paint.Paint.*;
import javafx.scene.paint.Color;

public class TransparencySlider //Basic Class For Variating Colors And Determining Transparency For RainbowSoftColor.java Class
{
	public double[] argb = {0,0,0,1};
	public Color fxColor;
	public double ColorBeingChecked = 0, OpacityBeingChecked = 1;//, ColorToBeChecked = 0;
	//ColorValueFit colorValueFit = new ColorValueFit(0.);
	public TransparencySlider()//1st Square DiagnosticsClass.java
	{
        argb = new double[]{0,0,0,1};
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
	}
	public TransparencySlider( Color FXColor )//2nd Square DiagnosticsClass.java
	{
		fxColor = FXColor;
        argb = new double[] { fxColor.getRed() * 255, fxColor.getGreen() * 255, fxColor.getBlue() * 255, fxColor.getOpacity() };
    }
	public TransparencySlider( double[] ARGB )//3rd & 4th Square DiagnosticsClass.java
	{
		if ( ARGB.length < 4 )
			argb = new double[] { ColorValueFitter(ARGB[0]),ColorValueFitter(ARGB[1]),ColorValueFitter(ARGB[2]),1.};
		else
			argb = ARGB;
    	fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
    }
	public Object TransparencySliderFunction(double ColorInterval, double Loc, TransparencySlider ColorBefore, TransparencySlider ColorAfter)//5th Square DiagnosticsClass.java
	{
		for (int z = 0; z <= 2; z++)
			argb[z] = ColorValueFitter( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Loc/ColorInterval + ColorBefore.argb[z] ) );
		argb[3] = 1;
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, TransparencySlider ColorBefore, TransparencySlider ColorAfter, double Opacity)//6th Square DiagnosticsClass.java
	{
		for (int z = 0; z <= 2; z++)
			argb[z] = ColorValueFitter( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Loc/ColorInterval + ColorBefore.argb[z] ) );
		argb[3] = OpacityValueFitter( Opacity );
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, TransparencySlider ColorBefore, TransparencySlider ColorAfter, double OpacityBefore, double OpacityAfter)//7th Square DiagnosticsClass.java
	{
		for (int z = 0; z <= 2; z++)
			argb[z] = ColorValueFitter( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Loc/ColorInterval + ColorBefore.argb[z] ) );
		argb[3] = OpacityValueFitter( (OpacityAfter - OpacityBefore) * Loc/ColorInterval + OpacityBefore );
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, TransparencySlider ColorBefore, double BrightnessMultiplyer, TransparencySlider ColorAfter)//8th Square DiagnosticsClass.java
	{
		if ( BrightnessMultiplyer <= 1 && BrightnessMultiplyer >= 0 )
			for (int z = 0; z <= 2; z++)
				argb[z] = ColorValueFitter( ( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Loc/ColorInterval + ColorBefore.argb[z] ) * BrightnessMultiplyer) );
		else
			for (int z = 0; z <= 2; z++)
			{
				argb[z] = Math.abs( ( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Loc/ColorInterval + ColorBefore.argb[z] ) ) );
				argb[z] = ColorValueFitter( (255 - argb[z]) / BrightnessMultiplyer + argb[z] );
			}
		argb[3] = 1;
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, TransparencySlider ColorBefore, double BrightnessMultiplyer, TransparencySlider ColorAfter, double Opacity)//9th Square DiagnosticsClass.java
	{
		if ( BrightnessMultiplyer <= 1 && BrightnessMultiplyer >= 0 )
			for (int z = 0; z <= 2; z++)
				argb[z] = ColorValueFitter( ( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Loc/ColorInterval + ColorBefore.argb[z] ) * BrightnessMultiplyer) );
		else
			for (int z = 0; z <= 2; z++)
			{
				argb[z] = Math.abs( ( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Loc/ColorInterval + ColorBefore.argb[z] ) ) );
				argb[z] = ColorValueFitter( (255 - argb[z]) / BrightnessMultiplyer + argb[z] );
			}
		argb[3] = OpacityValueFitter( Opacity );
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, TransparencySlider ColorBefore, double BrightnessMultiplyer, TransparencySlider ColorAfter, double OpacityBefore, double OpacityAfter)//10th Square DiagnosticsClass.java
	{
		if ( BrightnessMultiplyer <= 1 && BrightnessMultiplyer >= 0 )
			for (int z = 0; z <= 2; z++)
				argb[z] = ColorValueFitter( ( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Loc/ColorInterval + ColorBefore.argb[z] ) * BrightnessMultiplyer) );
		else
			for (int z = 0; z <= 2; z++)
			{
				argb[z] = ColorValueFitter( ( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Loc/ColorInterval + ColorBefore.argb[z] ) ) );
				argb[z] = ( (255 - argb[z]) / BrightnessMultiplyer + argb[z] );
			}
		argb[3] = Math.abs( (OpacityAfter - OpacityBefore) * Loc/ColorInterval + OpacityBefore );
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, int Gradations, TransparencySlider ColorBefore, TransparencySlider ColorAfter )//11th Square DiagnosticsClass.java
	{
		for (int z = 0; z <= 2; z++)
			argb[z] = ColorValueFitter( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + ColorBefore.argb[z] ) );
		argb[3] = 1;
		fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, int Gradations, TransparencySlider ColorBefore, TransparencySlider ColorAfter, double Opacity)//12th Square DiagnosticsClass.java
	{
		for (int z = 0; z <= 2; z++)
			argb[z] = ColorValueFitter( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + ColorBefore.argb[z] ) );
		argb[3] = OpacityValueFitter( Opacity );
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, int Gradations, TransparencySlider ColorBefore, TransparencySlider ColorAfter, double OpacityBefore, double OpacityAfter)//13th Square DiagnosticsClass.java
	{
		for (int z = 0; z <= 2; z++)
			argb[z] = ColorValueFitter( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + ColorBefore.argb[z] ) );
		argb[3] = OpacityValueFitter( ( (OpacityAfter - OpacityBefore) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + OpacityBefore ) );
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, double BrightnessMultiplyer, int Gradations, TransparencySlider ColorBefore, TransparencySlider ColorAfter)//14th Square DiagnosticsClass.java
	{
		if ( BrightnessMultiplyer <= 1 && BrightnessMultiplyer >= 0 )
			for (int z = 0; z <= 2; z++)
				argb[z] = ColorValueFitter( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + ColorBefore.argb[z] * BrightnessMultiplyer ) );
		else
			for (int z = 0; z <= 2; z++)
			{
				argb[z] = Math.abs( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + ColorBefore.argb[z] ) );
				argb[z] = ColorValueFitter( (255 - argb[z]) / BrightnessMultiplyer + argb[z] );
			}
		argb[3] = 1;
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, double BrightnessMultiplyer, int Gradations, TransparencySlider ColorBefore, TransparencySlider ColorAfter, double Opacity)//15th Square DiagnosticsClass.java
	{
		if ( BrightnessMultiplyer <= 1 && BrightnessMultiplyer >= 0 )
			for (int z = 0; z <= 2; z++)
				argb[z] = Math.abs( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + ColorBefore.argb[z] * BrightnessMultiplyer ) );
		else
			for (int z = 0; z <= 2; z++)
			{
				argb[z] = Math.abs( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + ColorBefore.argb[z] ) );
				argb[z] = ColorValueFitter( (255 - argb[z]) / BrightnessMultiplyer + argb[z] );
			}
		argb[3] = OpacityValueFitter( Opacity );
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Object TransparencySliderFunction(double ColorInterval, double Loc, double BrightnessMultiplyer, int Gradations, TransparencySlider ColorBefore, TransparencySlider ColorAfter, double OpacityBefore, double OpacityAfter)//16th Square DiagnosticsClass.java
	{
		if ( BrightnessMultiplyer <= 1 && BrightnessMultiplyer >= 0 )
			for (int z = 0; z <= 2; z++)
				argb[z] = Math.abs( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + ColorBefore.argb[z] * BrightnessMultiplyer ) );
		else
			for (int z = 0; z <= 2; z++)
			{
				argb[z] = Math.abs( ( (ColorAfter.argb[z] - ColorBefore.argb[z]) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + ColorBefore.argb[z] ) );
				argb[z] = ColorValueFitter( (255 - argb[z]) / BrightnessMultiplyer + argb[z] );
			}
		argb[3] = OpacityValueFitter( (OpacityAfter - OpacityBefore) * Math.floor( Loc/ColorInterval * ( Gradations + 2 ) ) / ( Gradations + 1 ) + OpacityBefore );
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return new TransparencySlider( argb );
	}
	public Color ToFXColor ()//17th Square DiagnosticsClass.java
	{
        fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
        return fxColor;
	}
	public Color ToFXColor ( double[] ARGB )//18th Square DiagnosticsClass.java
	{
		if ( ARGB.length < 4 )
			argb = new double[] { ColorValueFitter(ARGB[0]),ColorValueFitter(ARGB[1]),ColorValueFitter(ARGB[2]),1.};
		else
			argb = ARGB;
    	fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
        return fxColor;
	}
	public int ToARGBcolorNum ()//8th Square DiagnosticsClass.java
	{
        //fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
        return (int)( argb[3] * 256 * 16777216 + argb[0] * 65536 + argb[1] * 256 + argb[2] );
	}
	public int ToARGBcolorNum ( double[] ARGB )//9th Square DiagnosticsClass.java
	{
		if ( ARGB.length < 4 )
			argb = new double[] { ColorValueFitter(ARGB[0]),ColorValueFitter(ARGB[1]),ColorValueFitter(ARGB[2]),1.};
		else
			argb = ARGB;
		fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) );
		return (int)( argb[3] * 256 * 16777216 + argb[0] * 65536 + argb[1] * 256 + argb[2] );
	}
	public int ToARGBcolorNum ( Color FXColor )//9th Square DiagnosticsClass.java
	{
		argb = new double[] { FXColor.getRed() * 255, FXColor.getGreen() * 255, FXColor.getBlue() * 255, FXColor.getOpacity() };
        fxColor = FXColor;
        return (int)( argb[3] * 256 * 16777216 + argb[0] * 65536 + argb[1] * 256 + argb[2] );
	}
	//tempFXColor = tempFXColor.rgb((int)color.RGB[0] , Math.abs( (int)color.RGB[1] ), (int)color.RGB[2]).invert();
	public Boolean ColorTooSimilarFunction(int Color1, int Color2)//19th Square DiagnosticsClass.java
	{
		Boolean TooSimilar = false;
		int color1A = (Color1 >> 24) & 0xff;
	    int color1R = (Color1 >> 16) & 0xff;
	    int color1G = (Color1 >> 8) & 0xff;
	    int color1B = (Color1) & 0xff;
	    int color2A = (Color2 >> 24) & 0xff;
	    int color2R = (Color2 >> 16) & 0xff;
	    int color2G = (Color2 >> 8) & 0xff;
	    int color2B = (Color2) & 0xff;
		/*
		int Color1A = Color1 / 16777216;
		int Color1R = ( Color1 - Color1A * 16777216 ) / 65536;
		int Color1G = ( Color1 - Color1A * 16777216 - Color1R * 65536 ) / 256;
		int Color1B = ( Color1 - Color1A * 16777216 - Color1R * 65536 - Color1G * 256);
		int Color2A = Color2 / 16777216;
		int Color2R = ( Color2 - Color2A * 16777216 ) / 65536;
		int Color2G = ( Color2 - Color2A * 16777216 - Color2R * 65536 ) / 256;
		int Color2B = ( Color2 - Color2A * 16777216 - Color2R * 65536 - Color2G * 256);// */
		int colorDifference = Math.abs(color1R - color2R) + Math.abs(color1G - color2G) + Math.abs(color1B - color2B);
		if ( colorDifference <= 164 )
			TooSimilar = true;
		else
			TooSimilar = false;
		//System.out.println("colorDifference: " + colorDifference);
		//System.out.println(TooSimilar);
		return TooSimilar;
	}
	public Boolean ColorTooSimilarFunction(Color Color1, Color Color2)//4th Square DiagnosticsClass.java
	{
		Boolean TooSimilar = false;
		int colorDifference = (int)(Math.abs(Math.abs(Color1.getRed()) - Math.abs(Color2.getRed())) + Math.abs(Math.abs(Color1.getGreen()) - Math.abs(Color2.getGreen())) + Math.abs(Math.abs(Color1.getBlue()) - Math.abs(Color2.getBlue())));
		if ( colorDifference <= 164 )//200 )
			TooSimilar = true;
		else
			TooSimilar = false;
		//System.out.println("colorDifference: " + colorDifference);
		//System.out.println(TooSimilar);
		return TooSimilar;
	}
	public Boolean ColorTooSimilarFunction(TransparencySlider Color1, TransparencySlider Color2)//20th Square DiagnosticsClass.java
	{
		Boolean TooSimilar = false;
		int colorDifference = (int)( Math.abs(Color1.argb[0] - Color2.argb[0]) + Math.abs(Color1.argb[1] - Color2.argb[1]) + Math.abs(Color1.argb[2] - Color2.argb[2]) );
		if ( colorDifference <= 164 )
			TooSimilar = true;
		else
			TooSimilar = false;
		//System.out.println("colorDifference: " + colorDifference);
		//System.out.println(TooSimilar);
		return TooSimilar;
	}
	public Boolean ColorTooSimilarFunction(int Color1, int Color2, double ColorDifference)//3rd Square DiagnosticsClass.java
	{
		Boolean TooSimilar = false;
	    int color1A = (Color1 >> 24) & 0xff;
	    int color1R = (Color1 >> 16) & 0xff;
	    int color1G = (Color1 >> 8) & 0xff;
	    int color1B = (Color1) & 0xff;
	    int color2A = (Color2 >> 24) & 0xff;
	    int color2R = (Color2 >> 16) & 0xff;
	    int color2G = (Color2 >> 8) & 0xff;
	    int color2B = (Color2) & 0xff;
		int colorDifference = Math.abs(Math.abs(color1R) - Math.abs(color2R)) + Math.abs(Math.abs(color1G) - Math.abs(color2G)) + Math.abs(Math.abs(color1B) - Math.abs(color2B));
		if ( colorDifference <= ColorDifference )//200 )
			TooSimilar = true;
		else
			TooSimilar = false;
		//System.out.println("colorDifference: " + colorDifference);
		//System.out.println(TooSimilar);
		return TooSimilar;
	}
	public Boolean ColorTooSimilarFunction(Color Color1, Color Color2, double ColorDifference)//4th Square DiagnosticsClass.java
	{
		Boolean TooSimilar = false;
		int colorDifference = (int)(Math.abs(Math.abs(Color1.getRed()) - Math.abs(Color2.getRed())) + Math.abs(Math.abs(Color1.getGreen()) - Math.abs(Color2.getGreen())) + Math.abs(Math.abs(Color1.getBlue()) - Math.abs(Color2.getBlue())));
		if ( colorDifference <= ColorDifference )//200 )
			TooSimilar = true;
		else
			TooSimilar = false;
		//System.out.println("colorDifference: " + colorDifference);
		//System.out.println(TooSimilar);
		return TooSimilar;
	}
	public Boolean ColorTooSimilarFunction(TransparencySlider Color1, TransparencySlider Color2, double ColorDifference )//20th Square DiagnosticsClass.java
	{
		Boolean TooSimilar = false;
		int colorDifference = (int)( Math.abs(Color1.argb[0] - Color2.argb[0]) + Math.abs(Color1.argb[1] - Color2.argb[1]) + Math.abs(Color1.argb[2] - Color2.argb[2]) );
		if ( colorDifference <= ColorDifference )
			TooSimilar = true;
		else
			TooSimilar = false;
		//System.out.println("colorDifference: " + colorDifference);
		//System.out.println(TooSimilar);
		return TooSimilar;
	}
	public double ColorValueFitter ( double ColorToBeChecked )//21th Square DiagnosticsClass.java
	{
		this.ColorBeingChecked = Math.abs(ColorToBeChecked);
		while ( ColorBeingChecked > 255)
			this.ColorBeingChecked = ColorBeingChecked - 255;// */
		/*this.ColorBeingChecked = ColorBeingChecked;
		while ( ColorBeingChecked < 0)
			ColorBeingChecked = 0;
		while ( ColorBeingChecked > 255)
			ColorBeingChecked = 255;// */
		return ColorBeingChecked;
	}
	public double OpacityValueFitter ( double OpacityToBeChecked )//22nd Square DiagnosticsClass.java
	{
		this.OpacityBeingChecked = Math.abs(OpacityToBeChecked);
		while ( OpacityBeingChecked > 1)
			this.OpacityBeingChecked = OpacityBeingChecked - 1;// */
		/*this.OpacityBeingChecked = OpacityBeingChecked;
		while ( OpacityBeingChecked < 0)
			OpacityBeingChecked = 0;
		while ( OpacityBeingChecked > 1)
			OpacityBeingChecked = 1;// */
		return OpacityBeingChecked;
	}
	public void set(double[] ARGB) { argb = ARGB; if ( ARGB.length == 3 ) argb = new double[] { (double)(ColorValueFitter(ARGB[0])), (double)(ColorValueFitter(ARGB[1])), (double)(ColorValueFitter(ARGB[2])), (double)OpacityValueFitter(1) }; fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), OpacityValueFitter(argb[3]) ); }//23rd Square DiagnosticsClass.java
	public void set(Color FXColor) { fxColor = FXColor; argb = new double[] { fxColor.getRed() * 255, fxColor.getGreen() * 255, fxColor.getBlue() * 255, fxColor.getOpacity() }; }//24th Square DiagnosticsClass.java
    public Object get() { return argb; }
    //public Object get() { return fxColor; }
}
