/*  This file is part of the source code for 3D-XplorMath-J, Version 1.0 (January 2008).
 *  Copyright (c) 2008 The 3D-XplorMath Consortium (http://3d-xplormath.org).
 *  This source code is released under a BSD License, which allows redistribution   
 *  in source and binary form, with or without modification, provided copyright
 *  and license information are included, and with no warranty or guarantee of
 *  any kind.  For details, see http://3d-xplormath.org/j/source/BSDLicense.txt
 */
 
 package vmm.core.render;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;

import vmm.core.Transform;
import vmm.core.View;

public interface Renderer2D {

	public void startRender(View view, Transform transform, int width,
			int height);

	public boolean restartRender(View view, Transform transform, int width,
			int height);

	public void endRender();

	public void dispose();

	public void draw(Graphics2D g);

	public BufferedImage getImage(boolean alwaysCopy);

	public void setColor(Color c);

	public Color getColor();

	public Stroke getStroke();

	public void setStroke(Stroke stroke);

	public void drawPixel(double x, double y);

	public void drawDot(Point2D pt, double diameter);

	public void drawPixels(Point2D[] points, int pointIndexStart,
			int pointIndexEnd);

	public void drawString(String s, double x, double y);

	public void drawLine(double x1, double y1, double x2, double y2);

	public void drawCurve(Point2D[] points, int pointIndexStart,
			int pointIndexEnd);

	public void drawOval(double x, double y, double width, double height);

	public void fillOval(double x, double y, double width, double height);

	public void drawRect(double x, double y, double width, double height);

	public void fillRect(double x, double y, double width, double height);

	public void drawCrosshair(double x, double y, int armlength, int strokeWidth, Color color, Color background);
	
	public void setDrawAntialiased(boolean antialiased);
	
	public boolean getDrawAntialiased();
	
}