/** * $OpenXM: OpenXM/src/OpenMath/OXplot.java,v 1.4 2000/09/07 09:12:28 tam Exp $ */ import JP.ac.kobe_u.math.tam.OpenXM.*; import java.util.Stack; import java.util.Vector; import java.awt.*; public class OXplot extends OpenXMserver{ private Stack stack = new Stack(); private Vector plotframe = new Vector(); protected boolean debug = true; final int version = 200007010; public OXplot(String hostname,int ControlPort,int DataPort){ super(hostname,ControlPort,DataPort); } public void computeProcess(OpenXMconnection stream){ debug("OXplot started."); stack = new Stack(); plotframe = new Vector(); try{ while(true){ Thread.yield(); try{ OXmessage message = stream.receive(); int ox_tag = message.getTag(); switch(ox_tag){ case OXmessage.OX_COMMAND: StackMachine((SM)message.getBody(),stream); break; case OXmessage.OX_DATA: stack.push(message.getBody()); debug("push: "+ stack.peek()); break; } }catch(RuntimeException e){ System.err.println(e.getMessage()); e.printStackTrace(); debug("error occured. stack was cleared."); stack = new Stack(); } } }catch(java.io.IOException e){ System.err.println(e.getMessage()); e.printStackTrace(); System.err.println("error occured, and recovering processes seems to be impossible."); }catch(Exception e){ System.err.println(e.getMessage()); e.printStackTrace(); System.err.println("error occured, and recovering processes seems to be impossible."); }finally{ System.out.println("breaking..."); } } class plotframe extends java.awt.Frame implements java.awt.event.MouseListener{ Canvas canvas; int pixels[][]; plotframe(int width,int height){ super("plotframe"); add("Center", new Panel().add(canvas = new Canvas())); canvas.setSize(width,height); setResizable(false); canvas.addMouseListener(this); pixels = new int[height][]; for(int i=0;i