shapes! and reset

This commit is contained in:
jan 2016-07-10 09:03:16 -07:00
commit 8c41aa417a
15 changed files with 473 additions and 451 deletions

View file

@ -107,6 +107,8 @@ class Calibrator {
projector.text("world!", x0+20, y0+110);
// Four dots used for calibration (may need to change code so that it better matches the math used to convert other points)
projector.ellipseMode(CORNER);
projector.fill(projector.color(0, 0, 190));
projector.ellipse(x0, y0, 5, 5);

View file

@ -13,6 +13,7 @@ class Ellipse {
Ellipse(int color, int penWidth) {
this.color = color;
this.brushSize = penWidth;
this.visible = false;
this.centerPointComplete = false;
this.widthComplete = false;

View file

@ -116,5 +116,27 @@ public class EuglenaApplet extends PApplet {
line(len, 0, len - 8, 8);
popMatrix();
}
void reset() {
if (projectorApplet.calibrator.active) {
projectorApplet.calibrator.deactivate();
} else {
projectorApplet.calibrator.deactivate();
ledControl.allOff();
projectorApplet.clear();
// lines.clear();
// ellipses.clear();
// rectangles.clear();
// triangles.clear();
// shrinkwindows.clear();
// expandwindows.clear();
// translatewindows.clear();
// rotatewindows.clear();
}
}
}

74
src/Line.java Normal file
View file

@ -0,0 +1,74 @@
import processing.core.*;
import static processing.core.PApplet.*;
class Line {
float x1, y1, x2, y2;
int color, brushSize;
boolean visible;
private boolean point1complete;
Line(int color, int penWidth) {
this.color = color;
this.brushSize = penWidth;
this.visible = true;
this.point1complete = false;
}
Line(float x1, float y1, float x2, float y2, int color, int penWidth) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.color = color;
this.brushSize = penWidth;
this.visible = true;
this.point1complete = true;
}
ProjectorCommand drawCommand() {
return (ProjectorApplet p) -> {
if (!visible) {
//done drawing already
return true;
}
float old_strokeWeight = p.g.strokeWeight;
int old_strokeColor = p.g.strokeColor;
p.strokeWeight(brushSize);
p.stroke(color);
p.noFill();
p.line(p.convertXCoord(x1), p.convertYCoord(y1),
p.convertXCoord(x2), p.convertYCoord(y2));
p.strokeWeight(old_strokeWeight);
p.stroke(old_strokeColor);
return true;
};
}
ClickGetter makeClickGetter(ProjectorApplet p) {
return (int x, int y) -> {
if (!point1complete){
x1 = x;
y1 = y;
point1complete = true;
return false;
} else {
x2 = x;
y2 = y;
visible = true;
p.commandQueue.add(drawCommand());
return true;
}
};
}
}

View file

@ -1,79 +0,0 @@
class LineDrawer {
Line lineinprogress;
boolean point1complete;
void reset() {
lineinprogress = new Line(-1,-1,-1,-1);
lineinprogress.visible = false;
point1complete = false;
}
LineDrawer(){
this.reset();
}
void mouseClicked(float x, float y){
if (!point1complete){
lineinprogress.x1 = x;
lineinprogress.y1 = y;
point1complete = true;
} else {
lineinprogress.x2 = x;
lineinprogress.y2 = y;
lineinprogress.visible = true;
lines.add(lineinprogress);
lineinprogress.draw();
this.reset();
}
}
}
class Line {
float x1, y1, x2, y2;
int red, green, blue, brushSize;
boolean visible;
Line(float x1, float y1, float x2, float y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.red = rVal;
this.green = gVal;
this.blue = bVal;
this.brushSize = penWidth;
this.visible = true;
}
void draw() {
if (visible) {
float old_strokeWeight = g.strokeWeight;
int old_strokeColor = g.strokeColor;
strokeWeight(brushSize);
stroke(color(red, green, blue));
line(convertXCoord(x1), convertYCoord(y1), convertXCoord(x2), convertYCoord(y2));
strokeWeight(old_strokeWeight);
stroke(old_strokeColor);
print(rVal);
print(",");
print(gVal);
print(",");
print(bVal);
print("\n");
print(red);
print(",");
print(green);
print(",");
print(blue);
print("\n");
}
}
}

View file

@ -189,6 +189,9 @@ class Menu {
}
void controlEvent(ControlEvent theEvent) {
println(theEvent);
println(theEvent.getName());
println(theEvent.getLabel());
if (theEvent.isFrom(shapesList)) {
switch((int) shapesList.getValue()) {
case 0:
@ -196,117 +199,67 @@ class Menu {
.makeClickGetter(parent.projectorApplet);
break;
case 1:
//rectangleDrawer.reset();
parent.clickGetter = new Rectangle(parent.penColor, parent.penWidth)
.makeClickGetter(parent.projectorApplet);
break;
case 2:
//triangleDrawer.reset();
parent.clickGetter = new Triangle(parent.penColor, parent.penWidth)
.makeClickGetter(parent.projectorApplet);
break;
}
}
/*
if (theEvent.isFrom(animateList)){
} else if (theEvent.isFrom(animateList)){
switch((int) animateList.getValue()) {
case 0:
shrink.reset();
drawtype = 's';
// shrink.reset();
// drawtype = 's';
break;
case 1:
expand.reset();
drawtype = 'x';
// expand.reset();
// drawtype = 'x';
break;
case 2:
translate.reset();
drawtype = 'm';
// translate.reset();
// drawtype = 'm';
break;
case 3:
rotate.reset();
drawtype = 'c';
// rotate.reset();
// drawtype = 'c';
break;
}
} else if (theEvent.isFrom(presetsList)){
// preset = (int) presetsList.getValue();
} else {
switch (theEvent.getLabel()) {
case "Commit":
int rVal = Integer.parseInt(redField.getText());
int gVal = Integer.parseInt(greenField.getText());
int bVal = Integer.parseInt(blueField.getText());
parent.penColor = parent.color(rVal, gVal, bVal);
parent.penWidth = Integer.parseInt(penwidthField.getText());
parent.projectorApplet.setBgColor(Integer.parseInt(backgroundField.getText()));
// parent.lagTime = Integer.parseInt(lagField.getText());
// parent.totalTime = Integer.parseInt(totaltimeField.getText());
// parent.speed = Integer.parseInt(speedField.getText());
break;
case "Reset":
parent.reset();
break;
case "Calibrate":
parent.projectorApplet.calibrator.toggle();
break;
case "Eraser":
parent.penColor = parent.color(0, 0, 0);
break;
case "Line":
parent.clickGetter = new Line(parent.penColor, parent.penWidth)
.makeClickGetter(parent.projectorApplet);
break;
}
}
if (theEvent.isFrom(presetsList)){
preset = (int) presetsList.getValue();
}
*/
}
}
/*
*/
/* Adds all features to initial display including toolbar and camera display */
/*
void Commit() {
rVal = int(menu.redField.getText());
gVal = int(menu.greenField.getText());
bVal = int(menu.blueField.getText());
penWidth = int(menu.penwidthField.getText());
bgVal = int(menu.backgroundField.getText());
lagTime = float(menu.lagField.getText());
totalTime = int(menu.totaltimeField.getText());
speed = int(menu.speedField.getText());
// print(rVal);
// print(",");
// print(gVal);
// print(",");
// print(bVal);
// print("\n");
// print(speed);
// print("\n");
}
void Reset() {
if (calibrator.active = true){
calibrator.toggle();
} else {
calibrator.active = false;
clearDisplay();
lines.clear();
ellipses.clear();
rectangles.clear();
triangles.clear();
shrinkwindows.clear();
expandwindows.clear();
translatewindows.clear();
rotatewindows.clear();
arduino.digitalWrite(left, Arduino.LOW);
arduino.digitalWrite(right, Arduino.LOW);
arduino.digitalWrite(up, Arduino.LOW);
arduino.digitalWrite(down, Arduino.LOW);
t = 0;
t2 = 0;
t3 = 0;
t_temp = 0;
}
}
void Calibrate() {
frame.setLocation(0,0);
calibrator.toggle();
}
void Eraser() {
rVal = 0;
gVal = 0;
bVal = 0;
}
void Line() {
lineDrawer.reset();
drawtype = 'l';
}
*/

View file

@ -1,4 +0,0 @@
public interface Procedure {
void execute();
}

View file

@ -8,6 +8,8 @@ class ProjectorApplet extends PApplet {
final static int centerX = 860;
final static int centerY = 540;
int bgColor = color(0, 0, 0);
EuglenaApplet parent;
Calibrator calibrator;
@ -26,6 +28,7 @@ class ProjectorApplet extends PApplet {
@Override
public void setup() {
clear();
smooth();
// calibrator.activate(); //for testing
}
@ -43,6 +46,25 @@ class ProjectorApplet extends PApplet {
}
}
public void clear() {
fill(bgColor);
noStroke();
rectMode(CORNER);
rect(0, 0, width * 4, height * 4);
}
public void setBgColor(int c) {
bgColor = c;
}
public void setBgColor(int r, int b, int g) {
bgColor = color(r, g, b);
}
public int getBgColor() {
return bgColor;
}
public float convertXCoord(float x) {
return (x / calibrator.magx + width * calibrator.offsetx);
}

74
src/Rectangle.java Normal file
View file

@ -0,0 +1,74 @@
import processing.core.*;
import static processing.core.PApplet.*;
class Rectangle {
float corner1x, corner1y, corner2x, corner2y;
int color, brushSize;
boolean visible;
private boolean corner1complete;
Rectangle(int color, int penWidth) {
this.color = color;
this.brushSize = penWidth;
this.visible = false;
this.corner1complete = false;
}
Rectangle(float corner1x, float corner1y, float corner2x, float corner2y, int color, int penWidth) {
this.corner1x = corner1x;
this.corner1y = corner1y;
this.corner2x = corner2x;
this.corner2y = corner2y;
this.color = color;
this.brushSize = penWidth;
this.visible = true;
this.corner1complete = true;
}
ProjectorCommand drawCommand() {
return (ProjectorApplet p) -> {
if (!visible) {
//done drawing already
return true;
}
float old_strokeWeight = p.g.strokeWeight;
int old_strokeColor = p.g.strokeColor;
p.rectMode(CORNERS);
p.strokeWeight(brushSize);
p.stroke(color);
p.noFill();
p.rect(p.convertXCoord(corner1x), p.convertYCoord(corner1y),
p.convertXCoord(corner2x), p.convertYCoord(corner2y));
p.strokeWeight(old_strokeWeight);
p.stroke(old_strokeColor);
return true;
};
}
ClickGetter makeClickGetter(ProjectorApplet p) {
return (int x, int y) -> {
if (!corner1complete){
corner1x = x;
corner1y = y;
corner1complete = true;
return false;
} else {
corner2x = x;
corner2y = y;
visible = true;
p.commandQueue.add(drawCommand());
return true;
}
};
}
}

View file

@ -1,88 +0,0 @@
//class RectangleDrawer {
//
// Rectangle rectangleinprogress;
//
// boolean corner1complete;
//
// void reset() {
// rectangleinprogress = new Rectangle(-1,-1,0,0);
// rectangleinprogress.visible = false;
// corner1complete = false;
//
// }
//
// RectangleDrawer(){
// this.reset();
// }
//
// void mouseClicked(float x, float y){
// if (!corner1complete){
// rectangleinprogress.corner1x = x;
// rectangleinprogress.corner1y = y;
// corner1complete = true;
//
// } else {
// rectangleinprogress.corner2x = x;
// rectangleinprogress.corner2y = y;
// rectangleinprogress.visible = true;
// rectangles.add(rectangleinprogress);
//
// rectangleinprogress.draw();
// this.reset();
// }
// }
//}
//
//class Rectangle {
//
// float corner1x, corner1y, corner2x, corner2y;
// int red, green, blue, brushSize;
// boolean visible;
//
// Rectangle(float corner1x, float corner1y, float corner2x, float corner2y) {
// this.corner1x = corner1x;
// this.corner1y = corner1y;
// this.corner2x = corner2x;
// this.corner2y = corner2y;
// this.red = rVal;
// this.green = gVal;
// this.blue = bVal;
// this.brushSize = penWidth;
// this.visible = true;
// }
//
// void draw() {
// if (visible) {
// float old_strokeWeight = g.strokeWeight;
// int old_strokeColor = g.strokeColor;
//
// rectMode(CORNERS);
// strokeWeight(brushSize);
// stroke(color(red, green, blue));
// noFill();
//
// rect(convertXCoord(corner1x), convertYCoord(corner1y), convertXCoord(corner2x), convertYCoord(corner2y));
// strokeWeight(old_strokeWeight);
// stroke(old_strokeColor);
//
// print(rVal);
// print(",");
// print(gVal);
// print(",");
// print(bVal);
// print("\n");
//
//
// /*
// print(convertXCoord(corner1x));
// print("\n");
// print(convertYCoord(corner1y));
// print("\n");
// print(convertXCoord(corner2x));
// print("\n");
// print(convertYCoord(corner2y));
// print("\n");
// */
// }
// }
//}

86
src/Triangle.java Normal file
View file

@ -0,0 +1,86 @@
import processing.core.*;
import static processing.core.PApplet.*;
class Triangle {
float point1x, point1y, point2x, point2y, point3x, point3y;
int color, brushSize;
boolean visible;
private boolean point1complete, point2complete;
Triangle(int color, int penWidth) {
this.color = color;
this.brushSize = penWidth;
this.visible = false;
this.point1complete = false;
this.point2complete = false;
}
Triangle(float point1x, float point1y, float point2x, float point2y,
float point3x, float point3y, int color, int penWidth) {
this.point1x = point1x;
this.point1y = point1y;
this.point2x = point2x;
this.point2y = point2y;
this.point3x = point3x;
this.point3y = point3y;
this.color = color;
this.brushSize = penWidth;
this.visible = true;
this.point1complete = true;
this.point2complete = true;
}
ProjectorCommand drawCommand() {
return (ProjectorApplet p) -> {
if (!visible) {
//done drawing already
return true;
}
float old_strokeWeight = p.g.strokeWeight;
int old_strokeColor = p.g.strokeColor;
p.strokeWeight(brushSize);
p.stroke(color);
p.noFill();
p.triangle(p.convertXCoord(point1x), p.convertYCoord(point1y),
p.convertXCoord(point2x), p.convertYCoord(point2y),
p.convertXCoord(point3x), p.convertYCoord(point3y));
p.strokeWeight(old_strokeWeight);
p.stroke(old_strokeColor);
return true;
};
}
ClickGetter makeClickGetter(ProjectorApplet p) {
return (int x, int y) -> {
if (!point1complete){
point1x = x;
point1y = y;
point1complete = true;
return false;
} else if (!point2complete) {
point2x = x;
point2y = y;
point2complete = true;
return false;
} else {
point3x = x;
point3y = y;
visible = true;
p.commandQueue.add(drawCommand());
return true;
}
};
}
}

View file

@ -1,98 +0,0 @@
//class TriangleDrawer {
//
// Triangle triangleinprogress;
//
// boolean point1complete;
// boolean point2complete;
//
// void reset() {
// triangleinprogress = new Triangle(-1,-1,0,0,1,1);
// triangleinprogress.visible = false;
// point1complete = false;
// point2complete = false;
//
// }
//
// TriangleDrawer(){
// this.reset();
// }
//
// void mouseClicked(float x, float y){
// if (!point1complete){
// triangleinprogress.point1x = x;
// triangleinprogress.point1y = y;
// point1complete = true;
//
// } else if (!point2complete) {
// triangleinprogress.point2x = x;
// triangleinprogress.point2y = y;
// point2complete = true;
//
// } else {
// triangleinprogress.point3x = x;
// triangleinprogress.point3y = y;
// triangleinprogress.visible = true;
// triangles.add(triangleinprogress);
//
// triangleinprogress.draw();
// this.reset();
// }
// }
//}
//
//class Triangle {
//
// float point1x, point1y, point2x, point2y, point3x, point3y;
// int red, green, blue, brushSize;
// boolean visible;
//
// Triangle(float point1x, float point1y, float point2x, float point2y, float point3x, float point3y) {
// this.point1x = point1x;
// this.point1y = point1y;
// this.point2x = point2x;
// this.point2y = point2y;
// this.point3x = point3x;
// this.point3y = point3y;
// this.red = rVal;
// this.green = gVal;
// this.blue = bVal;
// this.brushSize = penWidth;
// this.visible = true;
// }
//
// void draw() {
// if (visible) {
// float old_strokeWeight = g.strokeWeight;
// int old_strokeColor = g.strokeColor;
//
// strokeWeight(brushSize);
// stroke(color(red, green, blue));
// noFill();
//
// triangle(convertXCoord(point1x), convertYCoord(point1y), convertXCoord(point2x), convertYCoord(point2y),
// convertXCoord(point3x), convertYCoord(point3y));
// strokeWeight(old_strokeWeight);
// stroke(old_strokeColor);
//
// /*
// print(rVal);
// print(",");
// print(gVal);
// print(",");
// print(bVal);
// print("\n");
// */
//
// /*
// print(convertXCoord(centerx));
// print("\n");
// print(convertYCoord(centery));
// print("\n");
// print(convertXDistance(width));
// print("\n");
// print(convertYDistance(height));
// print("\n");
// */
// }
// }
//}

View file

@ -1,12 +0,0 @@
/* Draws a black rectangle the size of the second monitor
completely covers whatever was beneath it so that it looks clear */
void clearDisplay() {
// second monitor
fill(color(bgR, bgG, bgB));
noStroke();
rectMode(CORNER);
rect(displayWidth,0,displayWidth*4,displayHeight-10);
}