Problems with Creating a Window
My first problem with this assignment was I didn't realize how difficult it was going to be to figure out how to play a quicktime movie. After some suggestions from others, I checked out the QTJava api and did a google search to find sample code. I found some stuff:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
import quicktime.*;
import quicktime.app.*;
import quicktime.app.players.*;
import quicktime.app.display.*;
import quicktime.io.*;
import quicktime.std.*;
import quicktime.std.movies.*;
public class Window extends Frame{
Movie movie;
public Window (String title) {
super (title);
try {
QTSession.open();
FileDialog fd = new FileDialog (this,"comlab.mov",FileDialog.LOAD);
fd.show();
if (fd.getFile() == null)
return;
// get movie from file
File f = new File (fd.getDirectory(), fd.getFile());
OpenMovieFile omFile =
OpenMovieFile.asRead (new QTFile (f));
movie = Movie.fromFile (omFile);
MoviePlayer player = new MoviePlayer (movie);
QTCanvas canvas = new QTCanvas();
canvas.setClient (player, true);
add (canvas);
addWindowListener (new WindowAdapter() {
public void windowClosing (WindowEvent e) {
QTSession.close();
System.exit(0);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main (String[] args) {
Window frame = new Window ("Cat's Window");
frame.pack();
frame.setVisible(true);
try {
frame.movie.start();
} catch (Exception e) {
e.printStackTrace();
}
}
and it worked, after a little while, much to my surprise.
Then I created a new class within my project to utilize "FindSkin" because I realized that I could not extend two classes.
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
public class WindowSkin extends PixelOperator {
int[] backgroundPixelArray;
float redLower = .35f;
float redUpper = .55f;
float greenLower = .26f;
float greenUpper = .35f;
WindowSkin() {
super();
setTitle("FindSkin");
}
public static void main(String[] args) {
WindowSkin fs = new WindowSkin();
ws.startVideo();
}
public void performPixelOp(int _x, int _y) {
int[] rgb = ps.getPixel(_x, _y);
float total = rgb[1] + rgb[2] + rgb[3];
float normalizedRed = rgb[1] / total;
float normalizedGreen = rgb[2] / total;
if (normalizedRed < redUpper && normalizedRed > redLower && normalizedGreen < greenUpper && normalizedGreen > greenLower) {
ps.setPixel(_x, _y, 255, 0, 0, 0);
}
}
public void keyPressed(KeyEvent keyEvent) {
String keyString = KeyEvent.getKeyText(keyEvent.getKeyCode()); // change
if (keyString.equals("Up")) { // use arrow keys to adjust a
redUpper = redUpper + .01f;
redLower = redLower + .01f;
} else if (keyString.equals("Down")) {
redUpper = redUpper - .01f;
redLower = redLower - .01f;
} else if (keyString.equals("Right")) { // use arrow keys to adjust a
greenUpper = greenUpper + .01f;
greenLower = greenLower + .01f; // variable
} else if (keyString.equals("Left")) {
greenUpper = greenUpper - .01f;
greenLower = greenLower - .01f;
} else {
super.keyPressed(keyEvent);
}
}
}
The problem came when I tried to combine functionality together. I will post the code I was working with in my next post.