import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.geom.*; import java.math.*; public class ScaleCanvas extends Canvas implements MouseListener, MouseMotionListener { Complex SOURCE=new Complex(0,0); AffineTransform[] A=new AffineTransform[2]; public void paint(Graphics g2) {} public static AffineTransform[] preFit(GeneralPath gp,double x,double y,double w,double h) { AffineTransform[] AFF=new AffineTransform[2]; Rectangle2D R0=gp.getBounds2D(); Rectangle2D.Float R1=(Rectangle2D.Float)(R0); double[] t={R1.x,R1.y,R1.x+R1.getWidth(),R1.y+R1.getHeight()}; double x1=1.0*(w)/(t[2]-t[0]); double x2=1.0*(h)/(t[3]-t[1]); double sc=x1; if(sc>x2) sc=x2; AFF[0]=AffineTransform.getScaleInstance(sc,-sc); double cenx=(t[0]+t[2])/2.0; double ceny=(t[1]+t[3])/2.0; double targetx=x+1.0*w/2; double targety=y+1.0*h/2; double xx=targetx-cenx*sc; double yy=targety+ceny*sc; AFF[1]=AffineTransform.getTranslateInstance(xx,yy); return(AFF); } public static GeneralPath expand(Point X,GeneralPath gp) { return(expand(X,2,gp)); } public static GeneralPath expand(Point X,double s,GeneralPath gp) { double t=1-s; AffineTransform A1=AffineTransform.getScaleInstance(s,s); AffineTransform A2=AffineTransform.getTranslateInstance(t*X.x,t*X.y); GeneralPath gp2=new GeneralPath(gp); gp2.transform(A1); gp2.transform(A2); return(gp2); } public static GeneralPath fit(GeneralPath gp,double x,double y,double w,double h) { AffineTransform[] AFF=preFit(gp,x,y,w,h); gp.transform(AFF[0]); gp.transform(AFF[1]); return(gp); } public void mousePressed(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseMoved(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseDragged(MouseEvent e) {} }