You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

157 lines
3.6 KiB
Java

import controlP5.ControlEvent;
8 years ago
import processing.core.*;
public class EuglenaApplet extends PApplet {
/*
This is the main Processing applet.
This applet draws the main window and menu
*/
final int cameraMode = 8;
8 years ago
final int whichArduino = 0;
// Hardware
ProjectorApplet projectorApplet;
Camera camera;
LEDControl ledControl;
// Software components
Menu menu;
Calibrator calibrator;
ClickGetter clickGetter;
8 years ago
//Pen
int penColor = color(200);
int penWidth = 15;
8 years ago
int operationSpeed = 10; //speed for Shrink, Expand, etc.
8 years ago
public static void main(String args[]) {
PApplet.main("EuglenaApplet");
}
@Override
public void settings() {
8 years ago
size(1920, 1200, P2D);
8 years ago
}
@Override
public void setup() {
/*
Applet initialization
*/
8 years ago
clear();
smooth();
// Initialize hardware
8 years ago
camera = new Camera(this, cameraMode);
ledControl = new LEDControl(this, whichArduino);
// Initialize software components
8 years ago
menu = new Menu(this);
8 years ago
// Start up projectorApplet window
// Do this last, in case ProjectorApplet wants to use the camera, arduino, etc.
projectorApplet = new ProjectorApplet(this);
8 years ago
String[] args = {"Euglena projector"};
PApplet.runSketch(args, projectorApplet);
8 years ago
}
@Override
public void draw() {
/*
Draw loop
*/
//Draw the menu
menu.draw(this, ledControl);
//Update webcam and draw the updated image to the screen
8 years ago
camera.updateImage();
imageMode(PApplet.CORNER);
image(camera.getImage(), 0, 0, width - menu.width, height);
8 years ago
}
@Override
public void mouseClicked(){
// Ignore mouse clicks in menu area
if (mouseX > width - menu.width) {
return;
}
// If we have a clickGetter, use that to handle the mouse click
if (clickGetter != null) {
boolean done = clickGetter.click(mouseX, mouseY);
if (done) {
clickGetter = null;
}
}
}
@Override
public void keyPressed() {
/*
Key-down handler
*/
ledControl.keyPressed(key);
if (key == CODED) {
projectorApplet.calibrator.buttonPressed(keyCode);
} else {
switch(key) {
case ENTER:
//TODO: snapshot
//snapshot();
break;
case 'r':
//TODO: record
break;
}
}
}
@Override
public void keyReleased() {
/*
Key-up handler
*/
ledControl.keyReleased(key);
}
public void controlEvent(ControlEvent theEvent) {
/*
Pass menu events to the menu component
*/
menu.controlEvent(theEvent);
}
8 years ago
void drawArrow(int cx, int cy, int len, float angle){
/*
Utility function for drawing an arrow
*/
8 years ago
pushMatrix();
translate(cx, cy);
rotate(radians(angle));
line(0,0,len, 0);
line(len, 0, len - 8, -8);
line(len, 0, len - 8, 8);
popMatrix();
}
void reset() {
/*
Reset the applet to a known state
*/
if (projectorApplet.calibrator.active) {
projectorApplet.calibrator.deactivate();
} else {
projectorApplet.calibrator.deactivate();
ledControl.allOff();
8 years ago
projectorApplet.reset();
}
}
8 years ago
}