// Copyright Andy Deck 2002, GNU Public License 2
// With the notable provision that any commercial use
// must be approved by the copyright holder.
import java.awt.*;
import java.awt.*;
import java.util.StringTokenizer;

public class gas extends Module
{

    public gas()
    {
        down = false;
        count = 4;
        CURSOR = 8;
    }

    public void init(lexicon lexicon1, String s)
    {
        super.lex = lexicon1;
        try
        {
            StringTokenizer stringtokenizer = new StringTokenizer(s);
            switch(stringtokenizer.countTokens())
            {
            case 1: // '\001'
                count = Integer.parseInt(stringtokenizer.nextToken());
                break;
            }
            if(count < 1 || count > 20)
                count = 4;
        }
        catch(Exception exception)
        {
            count = 4;
        }
    }

    public void finish(int i, int j, int k, int l, Color color, Color color1)
    {
        drawSegment(i - 3, j - 3, k + 3, l + 3, color, color1);
    }

    public void drawSegment(int i, int j, int k, int l, Color color, Color color1)
    {
        int k1 = i + k >> 1;
        int l1 = j + l >> 1;
        double d = i;
        double d1 = j;
        double d2 = k;
        double d3 = l;
        int i2 = (int)Math.sqrt((d - d2) * (d - d2) + (d1 - d3) * (d1 - d3));
        double d4 = i2 >> 1;
        int i1 = (int)((double)k1 - d4);
        int j1 = (int)((double)l1 - d4);
        Graphics g = super.lex.img.getGraphics();
        if(g != null)
        {
            setRenderMode(g);
            g.setColor(color);
            g.drawOval(i1, j1, i2, i2);
            g.drawOval(i1 + 1, j1 + 1, i2 - 2, i2 - 2);
            if(i2 > 4)
            {
                g.setColor(color1);
                g.drawOval(i1 + 2, j1 + 2, i2 - 4, i2 - 4);
            }
            g.dispose();
        }
        ox = i;
        oy = j;
        super.repaint();
    }

    public boolean handleEvent(Event event)
    {
        if(event.id == 501)
        {
            down = true;
            ox = event.x;
            oy = event.y;
            return true;
        }
        if(event.id == 506)
            if(!down)
            {
                return true;
            } else
            {
                int i = event.x;
                int j = event.y;
                drawSegment(event.x, event.y, ox, oy, Color.black, Color.white);
                ox = i;
                oy = j;
                return true;
            }
        if(event.id == 502)
        {
            if(!down)
                return true;
            count--;
            ox = event.x;
            oy = event.y;
            if(count == 0)
                super.lex.showNext();
            finish(event.x, event.y, ox, oy, Color.black, Color.white);
            return true;
        } else
        {
            return false;
        }
    }

    boolean down;
    int ox;
    int oy;
    int count;
    int CURSOR;
}
