/**
Polargraph controller
Copyright Sandy Noble 2015.
This file is part of Polargraph Controller.
Polargraph Controller is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Polargraph Controller is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Polargraph Controller. If not, see .
Requires the excellent ControlP5 GUI library available from http://www.sojamo.de/libraries/controlP5/.
Requires the excellent Geomerative library available from http://www.ricardmarxer.com/geomerative/.
This is an application for controlling a polargraph machine, communicating using ASCII command language over a serial link.
sandy.noble@gmail.com
http://www.polargraph.co.uk/
https://github.com/euphy/polargraphcontroller
*/
class Scaler
{
public float scale = 1.0;
public float mmPerStep = 1.0;
public Scaler(float scale, float mmPerStep)
{
this.scale = scale;
this.mmPerStep = mmPerStep;
}
public void setScale(float scale)
{
this.scale = scale;
}
public float scale(float in)
{
return in * mmPerStep * scale;
}
}
class PreviewVector extends PVector
{
public String command;
}
//
//
//import java.awt.Toolkit;
//import java.awt.BorderLayout;
//import java.awt.GraphicsEnvironment;
//
//public class Console extends WindowAdapter implements WindowListener, ActionListener, Runnable
//{
// private JFrame frame;
// private JTextArea textArea;
// private Thread reader;
// private Thread reader2;
// private boolean quit;
//
// private final PipedInputStream pin=new PipedInputStream();
// private final PipedInputStream pin2=new PipedInputStream();
//
// private PrintStream cOut = System.out;
// private PrintStream cErr = System.err;
//
// Thread errorThrower; // just for testing (Throws an Exception at this Console
//
// public Console()
// {
// // create all components and add them
// frame=new JFrame("Java Console");
// Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
// Dimension frameSize=new Dimension((int)(screenSize.width/2),(int)(screenSize.height/2));
// int x=(int)(frameSize.width/2);
// int y=(int)(frameSize.height/2);
// frame.setBounds(x,y,frameSize.width,frameSize.height);
//
// textArea=new JTextArea();
// textArea.setEditable(false);
// JButton button=new JButton("clear");
//
// frame.getContentPane().setLayout(new BorderLayout());
// frame.getContentPane().add(new JScrollPane(textArea),BorderLayout.CENTER);
// frame.getContentPane().add(button,BorderLayout.SOUTH);
// frame.setVisible(true);
//
// frame.addWindowListener(this);
// button.addActionListener(this);
//
// try
// {
// this.cOut = System.out;
// PipedOutputStream pout=new PipedOutputStream(this.pin);
// System.setOut(new PrintStream(pout,true));
// }
// catch (java.io.IOException io)
// {
// textArea.append("Couldn't redirect STDOUT to this console\n"+io.getMessage());
// }
// catch (SecurityException se)
// {
// textArea.append("Couldn't redirect STDOUT to this console\n"+se.getMessage());
// }
//
// try
// {
// this.cErr = System.err;
// PipedOutputStream pout2=new PipedOutputStream(this.pin2);
// System.setErr(new PrintStream(pout2,true));
// }
// catch (java.io.IOException io)
// {
// textArea.append("Couldn't redirect STDERR to this console\n"+io.getMessage());
// }
// catch (SecurityException se)
// {
// textArea.append("Couldn't redirect STDERR to this console\n"+se.getMessage());
// }
//
// quit=false; // signals the Threads that they should exit
//
// // Starting two seperate threads to read from the PipedInputStreams
// //
// reader=new Thread(this);
// reader.setDaemon(true);
// reader.start();
// //
// reader2=new Thread(this);
// reader2.setDaemon(true);
// reader2.start();
//
//// // testing part
//// // you may omit this part for your application
//// //
//// System.out.println("Hello World 2");
//// System.out.println("All fonts available to Graphic2D:\n");
//// GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
//// String[] fontNames=ge.getAvailableFontFamilyNames();
//// for(int n=0;n