public interface GfxCanvas {
/* ****************************** Drawing **********************************/
// cartesian coord system (ox,oy) is lower-left
public double windowOX();
public double windowOY();
public double windowWidth();
public double windowHeigt();
public int viewportLeft();
public int viewportRight();
public int viewportTop();
public int viewportBottom();
public int deviceWidth();
public int deviceHeight();
public void setWindowViewportTransform(
double ox, double oy, double width, double heigth,
int bottom, int left, int right, int top);
public void setIdentityAffine();
public void translate(double x, double y);
public void rotate(double x, double y);
public void scale(double x, double y);
public void push();
public void pop();
public void usePattern(ImagePattern pat);
public void useBitPattern(long[]);
public void useLineStyle(LINE_STYLE style);
public void useFillStyle(FILL_STYLE style);
public void useGfxWriteMode(GfxWriteMode mode);
public void useTransparentColor(Color color);
public void useBackgroundColor(Color color);
public void useForegroundColor(Color color);
public void usePenSize(double size);
public void useFigure(Figure fig);
public void useGfxFont(GfxFont font);
public void begin();
public void end();
public void close();
public void line(double x0, double y0, double x1, double y1);
public void reline(double x0, double y0, double x1, double y1);
public void curve(double x0, double y0, double x1, double y1, double arch);
public void recurve(double x0, double y0, double x1, double y1, double arch);
public void curve2(double x0, double y0, double x1, double y1, double a1, double a2);
public void recurve2(double x0, double y0, double x1, double y1, double a1, double a2);
public void plot(double x, double y);
public void fill();
public void stroke();
}