import java.awt.*;

/**
 * Repräsentiert eine Kandidatenmenge für eine Sudoku-Zelle
 * 
 * @author Rainer Helfrich
 * @version Dezember 2020
 */
public class Kandidatenmenge extends BitSet implements Eintrag
{
    /**
     * Erzeugt eine neue Kandidatenmenge bestehend aus den Zahlen von 1 bis 9
     */
    public Kandidatenmenge()
    {
        for (int i = 1; i <= 9; i++)
        {
            this.einfuegen(i);
        }
    }

    /**
     * Zeichnet die Kandidatenmenge auf ein Graphics-Objekt
     * Sollte nicht direkt aufgerufen werden.
     */
    public void zeichneDich(Graphics g, Rectangle r)
    {
        if (istLeer())
        {
            g.setColor(Color.RED);
            ((Graphics2D)g).setStroke(new BasicStroke(3));
            g.drawLine(r.x,r.y,r.x+r.width, r.y+r.height);
            g.drawLine(r.x,r.y+r.height,r.x+r.width, r.y);
        }
        else
        {
            g.setColor(Color.BLUE);
            g.setFont(g.getFont().deriveFont(20.0f));
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    int n = 3*j+i+1;
                    if (enthaelt(n))
                    {
                        int x = (int)(r.getX()+i*r.getWidth()/3);
                        int y = (int)(r.getY()+j*r.getHeight()/3);
                        int w = (int)(r.getWidth()/3);
                        int h = (int)(r.getHeight()/3);
                        SudokuPanel.drawCenteredString(g, ""+n, x, y, w, h);
                    }
                }
            }
        }
    }
}
