import java.awt.Color;

/**
 * An interface allowing some primitive graphical operations.
 * @author Maxim Buzdalov
 */
public interface Graphics {
    /** 
     * Puts a single pixel using default (usually black) color.
     * @param x the absciss of the point.
     * @param y the ordinate of the point.
     */
    public void putPixel(double x, double y);

    /** 
     * Puts a single pixel using the specified color.
     * @param x the absciss of the point.
     * @param y the ordinate of the point.
     * @param color the color.
     */
    public void putPixel(double x, double y, Color color);

    /** 
     * Puts a line with the given base point coordinates using default (usually black) color. 
     * @param xs the abscisses of the base points.
     * @param ys the ordinates of the base points.
     * @param closed determines if the line should be closed.
     * @param curved determines if the line should be made curved.
     */
    public void putLine(double[] xs, double[] ys, boolean closed, boolean curved);

    /** 
     * Puts a line with the given base point coordinates using the specified color. 
     * @param xs the abscisses of the base points.
     * @param ys the ordinates of the base points.
     * @param closed determines if the line should be closed.
     * @param curved determines if the line should be made curved.
     * @param color the color.
     */
    public void putLine(double[] xs, double[] ys, boolean closed, boolean curved, Color color);

    /** 
     * Fills a contour limited by the given closed line with the given base point coordinates using default (usually black) color. 
     * @param xs the abscisses of the base points.
     * @param ys the ordinates of the base points.
     * @param curved determines if the line should be made curved.
     */
    public void fillLine(double[] xs, double[] ys, boolean curved);

    /** 
     * Fills a contour limited by the given closed line with the given base point coordinates using the specified color. 
     * @param xs the abscisses of the base points.
     * @param ys the ordinates of the base points.
     * @param curved determines if the line should be made curved.
     * @param color the color.
     */
    public void fillLine(double[] xs, double[] ys, boolean curved, Color color);
}
