run: slipway.jar
java -cp slipway.jar edu.berkeley.slipway.Demo 30
+demo: slipway.jar
+ java -cp slipway.jar edu.berkeley.slipway.Demo2 30
+
build/src/com/ftdi/usb/FtdiUart.c: src/com/ftdi/usb/FtdiUart.i
mkdir -p `dirname $@`
mkdir -p src/com/ftdi/usb
$(linkerflags) \
-o $@ -dynamiclib -framework JavaVM
-slipway.jar: build/$(jnilib) $(shell find src build/src -name \*.java) bitstreams/slipway_drone.bst
+slipway.jar: build/$(jnilib) $(shell find src build/src -name \*.java) bitstreams/slipway_drone_complete.bst
mkdir -p build
javac -d build $(shell find src build/src -name \*.java)
- cp bitstreams/slipway_drone.bst build/edu/berkeley/slipway/
+ cp bitstreams/slipway_drone_complete.bst build/edu/berkeley/slipway/
cd build; jar cvf ../$@ .
upstream/prefix/bin/avr-objcopy -O ihex $@.o $@
# this only works on my personal setup [adam]
-bitstreams/slipway_drone.bst: build/slipway_drone.hex
- cp $< /afs/research.cs.berkeley.edu/user/megacz/edu.berkeley.obits/usbdrone.hex
- fs flush /afs/research.cs.berkeley.edu/user/megacz/edu.berkeley.obits/usbdrone.hex
+bitstreams/slipway_drone_complete.bst: build/slipway_drone.hex
+ cp $< /afs/research.cs.berkeley.edu/user/megacz/slipway/$<
+ fs flush /afs/research.cs.berkeley.edu/user/megacz/slipway/$<
echo okay...
read
- rm /afs/research.cs.berkeley.edu/user/megacz/edu.berkeley.obits/usbdrone.hex
- diff -u /afs/research.cs.berkeley.edu/user/megacz/stupid/fpslic_stupid.bst $@ && exit -1; true
- mv /afs/research.cs.berkeley.edu/user/megacz/stupid/fpslic_stupid.bst $@
+ rm /afs/research.cs.berkeley.edu/user/megacz/slipway/$<
+ diff -u /afs/research.cs.berkeley.edu/user/megacz/slipway/$@ $@ && \
+ exit -1; true
+ mv /afs/research.cs.berkeley.edu/user/megacz/slipway/$@ $@
touch $@
));
}
+ private ArrayList<AffineTransform> transformStack =
+ new ArrayList<AffineTransform>();
+
+ public void pushTransform() {
+ transformStack.add(new AffineTransform(g.getTransform()));
+ }
+ public void popTransform() {
+ AffineTransform t = transformStack.remove(transformStack.size()-1);
+ g.setTransform(t);
+ }
+
+ public void fillTriangle(double x1, double y1,
+ double x2, double y2,
+ double x3, double y3) {
+ GeneralPath gp = new GeneralPath();
+ gp.moveTo((float)x1, (float)y1);
+ gp.lineTo((float)x2, (float)y2);
+ gp.lineTo((float)x3, (float)y3);
+ gp.closePath();
+ g.fill(gp);
+ }
+
+ public void route(P p1, R r, P p2) {
+ if (p1.x < r.minx() && p1.y < r.miny()) { line(p1, r.minx(), r.miny()); route(new P(r.minx(), r.miny()), r, p2); }
+ else if (p1.x > r.maxx() && p1.y < r.miny()) { line(p1, r.maxx(), r.miny()); route(new P(r.maxx(), r.miny()), r, p2); }
+ else if (p1.x < r.minx() && p1.y > r.maxy()) { line(p1, r.minx(), r.maxy()); route(new P(r.minx(), r.maxy()), r, p2); }
+ else if (p1.x > r.maxx() && p1.y > r.maxy()) { line(p1, r.maxx(), r.maxy()); route(new P(r.maxx(), r.maxy()), r, p2); }
+ else if (p1.x < r.minx()) { line(p1, r.minx(), p1.y); route(new P(r.minx(), p1.y), r, p2); }
+ else if (p1.x > r.maxx()) { line(p1, r.maxx(), p1.y); route(new P(r.maxx(), p1.y), r, p2); }
+ else if (p1.y < r.miny()) { line(p1, p1.x, r.miny()); route(new P(p1.x, r.miny()), r, p2); }
+ else if (p1.y > r.maxy()) { line(p1, p1.x, r.maxy()); route(new P(p1.x, r.maxy()), r, p2); }
+ else {
+ double updist = Math.abs(r.maxy()-p2.y);
+ double downdist = Math.abs(r.miny()-p2.y);
+ double leftdist = Math.abs(r.minx()-p2.x);
+ double rightdist = Math.abs(r.maxx()-p2.x);
+ if (updist != 0 && updist <= downdist && updist <= leftdist && updist <= rightdist)
+ { line(p2, p2.x, r.maxy()); route(p1, r, new P(p2.x, r.maxy())); }
+ else if (downdist != 0 && downdist <= updist && downdist <= leftdist && downdist <= rightdist)
+ { line(p2, p2.x, r.miny()); route(p1, r, new P(p2.x, r.miny())); }
+ else if (leftdist != 0 && leftdist <= downdist && leftdist <= updist && leftdist <= rightdist)
+ { line(p2, r.minx(), p2.y); route(p1, r, new P(r.minx(), p2.y)); }
+ else if (rightdist != 0 && rightdist <= updist && rightdist <= downdist && rightdist <= leftdist)
+ { line(p2, r.maxx(), p2.y); route(p1, r, new P(r.maxx(), p2.y)); }
+ else {
+ if (p2.x == p1.x && (p2.x==r.maxx() || p2.x==r.minx())) line(p1, p2);
+ else if (p2.y == p1.y && (p2.y==r.maxy() || p2.y==r.miny())) line(p1, p2);
+
+ // these cases are where p1 and p2 are each on opposite sides
+ else if (p2.y==r.maxy() && p1.y==r.miny() && p1.x!=r.minx() && p1.x!=r.maxx() && p2.x!=r.minx() && p2.x!=r.maxx()) { }
+ else if (p1.y==r.maxy() && p2.y==r.miny() && p1.x!=r.minx() && p1.x!=r.maxx() && p2.x!=r.minx() && p2.x!=r.maxx()) { }
+ else if (p1.x==r.maxx() && p2.x==r.minx() && p1.y!=r.miny() && p1.y!=r.maxy() && p2.y!=r.miny() && p2.y!=r.maxy()) { }
+ else if (p2.x==r.maxx() && p1.x==r.minx() && p1.y!=r.miny() && p1.y!=r.maxy() && p2.y!=r.miny() && p2.y!=r.maxy()) { }
+
+ else {
+ if (Math.abs(p1.x-p2.x) < Math.abs(p1.y-p2.y)) {
+ if (p1.x == r.minx() || p1.x == r.maxx()) {
+ line(p2, p1.x, p2.y);
+ route(p1, r, new P(p1.x, p2.y));
+ } else {
+ line(p1, p2.x, p1.y);
+ route(p2, r, new P(p2.x, p1.y));
+ }
+ } else {
+ if (p1.y == r.miny() || p1.y == r.maxy()) {
+ line(p2, p2.x, p1.y);
+ route(p1, r, new P(p2.x, p1.y));
+ } else {
+ line(p1, p1.x, p2.y);
+ route(p2, r, new P(p1.x, p2.y));
+ }
+ }
+ }
+ }
+ }
+ }
+
}
+
new Thread() {
public void run() {
while(true) scan();
return cell.relevant();
}
public void clear() {
- gg.color(in ? selectedcell : (scanme() ? new Color(0xbb, 0xbb, 0xbb) : nonselectedcell));
+ gg.color(0xffffff);
+ //gg.color(in ? selectedcell : (scanme() ? new Color(0xbb, 0xbb, 0xbb) : nonselectedcell));
g.fillRect(0, 0, SIZE, SIZE);
}
public void draw() {
repaint();
}
public void drawKeyboard(Image keyboardImage, Graphics2D g) {
- /*
+
int width = 300;
int height = (keyboardImage.getHeight(null) * width) / keyboardImage.getWidth(null);
g.drawImage(keyboardImage,
0, 0,
keyboardImage.getWidth(null), keyboardImage.getHeight(null),
null);
- */
+
}
public void _paint(Graphics2D g) {
public boolean result(boolean x, boolean y, boolean z) { return z; }
}
- private static Image keyboard1 = Toolkit.getDefaultToolkit().createImage("keyboard1.png");
- private static Image keyboard2 = Toolkit.getDefaultToolkit().createImage("keyboard2.png");
- private static Image keyboard3 = Toolkit.getDefaultToolkit().createImage("keyboard3.png");
+ private static Image keyboard1 =
+ Toolkit.getDefaultToolkit().createImage("images/keyboard1.png");
+ private static Image keyboard2 =
+ Toolkit.getDefaultToolkit().createImage("images/keyboard2.png");
+ private static Image keyboard3 =
+ Toolkit.getDefaultToolkit().createImage("images/keyboard3.png");
}