/**
 * ============================================================================
 *                   Software License
 * ============================================================================
 *
 *    Copyright (C) 2001 Johannes Zemlin. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modifica-
 * tion, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 *
 * 3. The end-user documentation included with the redistribution, if any, must
 *    include the following  acknowledgment: "This product includes software
 *    developed by Johannes Zemlin (http://zemlin-online.de/)."
 *    Alternately, this acknowledgment may appear in the software itself, if
 *    and wherever such third-party acknowledgments normally appear.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE  DISCLAIMED. IN NO  EVENT SHALL
 * JOHANNES ZEMLIN OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
 * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 * OF USE, DATA, OR  PROFITS; OR BUSINESS INTERRUPTION)  HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER  IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package zemlin.fritz;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

/**
 *@author     <A href=mailto:Johannes@zemlin-online.de>Johannes Zemin</A>
 *@created    20. August 2001
 */
public class GreyCanvas extends Canvas {

    private int chimax;


    /**
     *  Constructor for the GreyCanvas object
     *
     *@param  chimax  Description of Parameter
     */
    public GreyCanvas(int chimax) {
        this.chimax = chimax;
        this.setSize(50, 50);
    }


    /**
     *  Description of the Method
     *
     *@param  g  Description of Parameter
     */
    public void paint(Graphics g) {
        // Größe der Zeichenfläche
        Dimension s = getSize();
        g.setColor(Color.black);

        int count = (2 * chimax) + 2;
        System.out.println("count " + count);
        System.out.println("chimax " + chimax);
        int delta = s.height / count;

        for (int i = 0; i < count; i++) {
            if (i == count - 1) {
                g.setColor(Color.red);
                g.fillRect(s.width / 2, delta * i, s.width, delta * (i + 1));
                g.setColor(Color.black);
                g.drawString("i", 10, delta * i + delta / 2 + 5);
            }
            else {
                g.setColor(calcColor(i / (float) (2 * chimax)));
                g.fillRect(s.width / 2, delta * i, s.width, delta * (i + 1));
                g.setColor(Color.black);
                g.drawLine(s.width / 2 - 2, delta * i + delta / 2, s.width / 2, delta * i + delta / 2);

                g.drawString(String.valueOf((i - 5) / 2.5), 0, delta * i + delta / 2 + 5);
            }
        }
    }


    /**
     *  Description of the Method
     *
     *@param  value  Description of Parameter
     *@return        Description of the Returned Value
     */
    private Color calcColor(float value) {
        // 0/10 - 10/10
        if (value < 0 || value > 1) {
            return Color.red;
        }
        double c = (float) (((int) (value * 11)) / 11.0);
        c = ((-0.5 + c) * 0.7) + 0.5;
        return new Color((float) c, (float) c, (float) c);
    }

}

