import processing.serial.*;
Vector list = new Vector();
Serial port;
void setup() {
port=new Serial(this,Serial.list()[0],9600);
size(1000,800);
String file = dataPath("hack-a-day.svg");
try {
Scanner sc = new Scanner (new File(file));
while(sc.hasNext()) {
String line = sc.nextLine();
if(match(line,"d=.M")!=null) {
String[] dots = line.split("L");
Vector data = new Vector();
for(int i=0; i<dots.length; i++) {
String[] v = match(dots[i],"(\\d+.\\d+) (\\d+.\\d+)") ;
Double x = Double.parseDouble(v[1]);
Double y = Double.parseDouble(v[2]);
data.add(x.intValue());
data.add(y.intValue());
print(x.intValue()+" "+y.intValue());
if(i<dots.length-1) print(" ");
}
list.add(data);
println();
}
else
if(match(line," d=.m ")!=null) {
line=line.substring(12);
String[] dots = line.split(" ");
Vector data = new Vector();
Double x=new Double(0);
Double y= new Double(0);
for(int i=0; i<dots.length; i++) {
String[] v = match(dots[i],"([0-9\\-\\.]+),([0-9\\-\\.]+)") ;
if(i==0) {
x = Double.parseDouble(v[1]);
y = Double.parseDouble(v[2]);
}
else {
x+= Double.parseDouble(v[1]);
y+= Double.parseDouble(v[2]);
}
data.add(x.intValue());
data.add(y.intValue());
print(x.intValue()+" "+y.intValue());
if(i<dots.length-1) print(" ");
}
list.add(data);
println();
}
}
}
catch (Exception e) {
println("EXCEPTION "+e);
}
}
void mousePressed() {
println("Starting to print...");
Enumeration e = list.elements();
while(e.hasMoreElements()) {
Vector data = (Vector) e.nextElement();
Enumeration i = data.elements();
boolean nofirst=false;
while(i.hasMoreElements()) {
int x = (Integer) i.nextElement();
int y = (Integer) i.nextElement();
port.write(x+" "+y);
if (i.hasMoreElements()) port.write(" "); else port.write(0xd);
if (nofirst) while(port.available()<2) ;
nofirst=true;
println(port.readString());
}
}
}
void draw() {
Enumeration e = list.elements();
while(e.hasMoreElements()) {
Vector data = (Vector) e.nextElement();
Enumeration i = data.elements();
int ox=-1,oy=0;
while(i.hasMoreElements()) {
int x = (Integer) i.nextElement();
int y = (Integer) i.nextElement();
if(ox>-1) line(ox,oy,x,y);
ox=x;
oy=y;
}
}
}