package jas2.plot.java1;
import jas2.plot.SetablePlotGraphics;
import jas2.plot.Transformation;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
public class PlotGraphics11 implements SetablePlotGraphics
{
private Transformation xt, yt;
private Graphics g;
private Shape oldClip;
public void setStroke(Stroke s)
{
// no-op
}
public void setGraphics(Graphics g)
{
this.g = g;
if (g == null)
{
oldClip = null;
}
else
{
oldClip = g.getClip();
}
clearTransformation();
}
public void setTransformation(Transformation x, Transformation y)
{
xt = x == null ? defaultTransformation : x;
yt = y == null ? defaultTransformation : y;
}
public void clearTransformation()
{
xt = defaultTransformation;
yt = defaultTransformation;
}
private final static Transformation defaultTransformation = new Transformation()
{
public double convert(double value) { return value; }
};
public void setClip(int xmin, int xmax, int ymin, int ymax)
{
g.clipRect(xmin,ymax,xmax-xmin,ymin-ymax);
}
public void clearClip()
{
g.setClip(oldClip);
}
public void drawLine(double x1, double y1, double x2, double y2)
{
int ix1 = (int) xt.convert(x1);
int ix2 = (int) xt.convert(x2);
int iy1 = (int) yt.convert(y1);
int iy2 = (int) yt.convert(y2);
g.drawLine(ix1,iy1,ix2,iy2);
}
public void drawPolyLine(double[] x, double[] y, int n)
{
polyConvert(x,y,n);
g.drawPolyline(ix,iy,n);
}
public void fillRect(double x1, double y1, double x2, double y2)
{
int ix1 = (int) xt.convert(x1);
int iy1 = (int) yt.convert(y1);
int ix2 = (int) xt.convert(x2);
int iy2 = (int) yt.convert(y2);
int ixmin = Math.min(ix1,ix2);
int ixmax = Math.max(ix1,ix2);
int iymin = Math.min(iy1,iy2);
int iymax = Math.max(iy1,iy2);
// force oval width and height to be at least 1 pixel
int w = ixmax-ixmin;
if (w < 1.0) w = 1;
int h = iymax-iymin;
if (h < 1.0) h = 1;
g.fillRect(ixmin,iymin,w,h);
}
public void drawRect(double x1, double y1, double x2, double y2)
{
int ix1 = (int) xt.convert(x1);
int iy1 = (int) yt.convert(y1);
int ix2 = (int) xt.convert(x2);
int iy2 = (int) yt.convert(y2);
int ixmin = Math.min(ix1,ix2);
int ixmax = Math.max(ix1,ix2);
int iymin = Math.min(iy1,iy2);
int iymax = Math.max(iy1,iy2);
// force oval width and height to be at least 1 pixel
int w = ixmax-ixmin;
if (w < 1.0) w = 1;
int h = iymax-iymin;
if (h < 1.0) h = 1;
g.drawRect(ixmin,iymin,w,h);
}
public void drawOval(double x1, double y1, double x2, double y2)
{
int ix1 = (int) xt.convert(x1);
int iy1 = (int) yt.convert(y1);
int ix2 = (int) xt.convert(x2);
int iy2 = (int) yt.convert(y2);
int ixmin = Math.min(ix1,ix2);
int ixmax = Math.max(ix1,ix2);
int iymin = Math.min(iy1,iy2);
int iymax = Math.max(iy1,iy2);
// force oval width and height to be at least 1 pixel
int w = ixmax-ixmin;
if (w < 1.0) w = 1;
int h = iymax-iymin;
if (h < 1.0) h = 1;
g.drawOval(ixmin,iymin,w,h);
}
public void setColor(Color c)
{
g.setColor(c);
}
public void drawString(String s, double x, double y)
{
g.drawString(s,(int) xt.convert(x), (int) yt.convert(y));
}
public FontMetrics getFontMetrics()
{
return g.getFontMetrics();
}
public void setFont(Font f) {
g.setFont(f);
}
public Font getFont() {
return g.getFont();
}
public void drawPolySymbol(double[] x, double[] y, double size, int type, int n)
{
polyConvert(x,y,n);
int is = (int) size;
for (int i=0; i bufSize)
{
ix = new int[n];
iy = new int[n];
bufSize = n;
}
if (xt != defaultTransformation)
{
for (int i=0; i
Ads help maintain this website.