//Mod3State.java
/*
 * State routine
 * authors: Umberto Ravaioli, Janice Richards
 * version 1.0 - Copyright: Amanogawa.com - All Rights Reserved
 */

import java.util.*;
import java.awt.*;
import java.awt.Color;
import java.awt.Font;

public class Mod3State {
    
    public int currentFunction;
    public static final int polynomial = 1;
    public static final int exponential = 2;
    public static final int sinusoidal = 3;

    public String sOutput;
    public static double aVal = 1.0;
    public static double bVal = 1.0;
    public static double mVal = 1.0;
    public static double nVal = 1.0;
    //public static double nVal = 1.6;
    public static double aMin = -10;
    public static double aMax = 10;
    public static double bMin = -10;
    public static double bMax = 10;
    public static double mMin = 0;
    public static double mMax = 5;
    public static double nMin = 0;
    public static double nMax = 5;

    public static final double mnMin = 0;
    public static final double mnMax = 5;
    public static final double mnMinSin = -5;
    public static final double mnMaxSin = 5;
    //public static double mMin = -3;
    //public static double mMax = 3;
    //public static double nMin = -3;
    //public static double nMax = 3;

    // These are for the gradient function:  They're initialized using
    //  the initial f(x,y) function coefficients and exponents 
    //  (aVal, bVal, mVal & nVal), for the polynomial-type function.  Note 
    //  that only the sinusoidal function type uses coeff3 and coeff4,
    //  instead of exp1 and exp2
    public static double coeff1 = 1.0;
    public static double coeff2 = 1.0;
    public static double exp1 = 0.0;
    public static double exp2 = 0.0;
    public static double coeff3 = 0.0;
    public static double coeff4 = 0.0;

    public static final Color color1 = Color.magenta;
    public static final Color color2 = Color.red;
    public static final Color color3 = Color.blue.brighter();
    public static final Color color4 = Color.green.darker();

    public static Color bgColor = new Color(194,235,255);
    public static Color axisColor = Color.black;

    static int[] rs = {255,255,255,50,15,35,50};
    static int[] gs = {0,100,220,255,50,0,0};
    static int[] bs = {0,32,32,0,255,100,70};

    //static int[] rs = {209,255,255,50,15,35,50};
    //static int[] gs = {0,100,220,225,50,0,0};
    //static int[] bs = {0,34,32,0,204,102,70};

    //static double[] rs = {209,255,255,50,25,55,90};
    //static double[] gs = {0,100,220,255,100,50,0};
    //static double[] bs = {0,34,32,0,255,102,70};
    int numberTransitions;
    public Color[] colorTable;
    public int tableLength;
    double deltaR, deltaG, deltaB;

    public Font ttfFont, sanSerifFont, serifFont, symbolFont, italicFont;

    //public static Font boldFont = new Font("Serif",Font.BOLD, 18);
    
    public boolean LicenseExpired;
    public int this_month, today_week, this_year, this_hour, this_minute, 
        today_month, today_year, this_zone, saving_time;
    GregorianCalendar Greg = new GregorianCalendar();

    
    public Mod3State(){
        currentFunction = polynomial;
        // create color lookup table for function plot:
        
        numberTransitions = rs.length - 1;
        tableLength = numberTransitions * 20;
        colorTable = new Color[tableLength];
        int istart = 0;
        int istop = 20;
        double r,g,b;
        for (int n=0; n<numberTransitions; n++) {
            deltaR = (rs[n]-rs[n+1])/20.0;
            deltaG = (gs[n]-gs[n+1])/20.0;
            deltaB = (bs[n]-bs[n+1])/20.0;
            r = rs[n];
            g = gs[n];
            b = bs[n];
            for (int i=istart; i<istop; i++) {
                colorTable[i] = new Color((int)r,(int)g,(int)b);
                r -= deltaR;
                g -= deltaG;
                b -= deltaB;
            }
            istart = istop;
            istop += 20;
        }
   }
}


