Initial revision
import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; public class ShowSkeleton extends Frame implements KeyListener{ Skeleton skel; Renderer renderer; ShowSkeleton(){ super("skeleton"); addKeyListener(this); renderer=MinchoRenderer.chuuMincho; } public void keyPressed(KeyEvent e){ System.exit(1);} public void keyReleased(KeyEvent e){ System.exit(1);} public void keyTyped(KeyEvent e){ System.exit(1);} public void showOutline(Graphics g,Outline outline){ Vector ret=new Vector(10); OutlineComponent[] components=outline.getComponents(); int i,len=components.length; for(i=0;i<len;i++){ components[i].render(ret,3.0); } len=ret.size(); int[] xs=new int[len], ys=new int[len]; for(i=0;i<len;i++){ Point p=(Point)(ret.elementAt(i)); xs[i]=(int)p.x; ys[i]=(int)p.y; } g.drawPolyline(xs,ys,len); } public void paint(Graphics g){ g.setColor(Color.white); g.fillRect(0,0,400,400); g.setColor(Color.black); Point[] points=skel.getPoints(); Element[] elements=skel.getElements(); int i,len=elements.length; for(i=0;i<len;i++){ int[] elementPoints=elements[i].getPoints(); int j,plen=elementPoints.length; Point p0,p1; for(j=0;j<plen-1;j++){ p0=points[elementPoints[j]]; p1=points[elementPoints[j+1]]; g.drawLine((int)p0.getX(),(int)p0.getY(),(int)p1.getX(),(int)p1.getY()); } } g.setColor(Color.red); for(i=0;i<len;i++){ Outline[] outlines=renderer.elementRenderer(points,elements[i]); showOutline(g,outlines[0]); showOutline(g,outlines[1]); } } public static void main(String[] args) throws IOException,LispException{ ShowSkeleton window=new ShowSkeleton(); window.setSize(400,400); window.show(); LispInputStream lis; lis=new LispInputStream(new FileReader(args[0])); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); LispObject lo=null; while((lo=lis.nextObject())!=null){ if(lo.getType()==LispObject.CONS && lo.car().getName().equals("setq")){ window.skel=LispToSkeleton.lispToSkeleton(lo.cdr().cdr().car().cdr().car()); window.repaint(); br.readLine(); } } } }
ktanaka Powered by ViewCVS 1.0-dev |
ViewCVS and CVS Help |