</COMMENT> No JDK 1.1 support for APPLET!!

Programming Assignment 1 Version 2 - Indeterminacy

So often we collect home movies but never really give ourselves the opportunity to look at them again. Or perhaps looking at home movies feels awkward compared to just renting one at the video store. In the future, we'll envision our television sets, computer, pictures frames to be all combined into one large flat-panel screen display that displays collages to our own liking. Instead of the television cable stations choosing what programs we look at and when, users will be able to define what gets shown on our panel screen. Why not collage our home pictures when we are not looking at T.V. or using the screen as a computer monitor? Or even better, why not have a collection of home movies and have a collage display still images (choosing movie frames at random) from our movies? This way, we will be readily surrounded by art that essentially we have created, but yet is generated dynamically and derived from our home movie collection. As users, we control the content of our collage but an algorithm will determine what gets displayed from the raw content that we provide.

Currently, three movies are being shown in the above collage. I chose "Analyze That", "Divine Secrets of the Ya-Ya Sisterhood", and "The Majestic" simply because these were movies that depicted everyday life... there are people in the movie whose faces we can discern and capture to create a still image. The program randomly chooses one of these three movies at any time, creates a still image, and displays that particular frame on the canvas. All three movies continuously loop and play in the background.

Three buttons are provided at the top of the display: Color, Scale and Collage Mode. Each gives the user some form of control... but yet limits that control that they can possess. On the one hand, the user is able to color the movie or have it scaled to a different area, yet is unable to determine which movie gets scaled or recolored. In addition, the user doesn't have any control over the magnitude of the scaling, or the color that gets blended into the movie. These scaling factors and colors are randomly generated using a standard Math function to determine these values. Currently, rescaling a still image takes a bit of time to accomplish before the actual scale factor appears on the text box. This is because we are actually resizing the movie while it is still playing. Since the canvas must be redrawn to reflect the new scaling, some of the previously collaged still images for that movie may be removed from the display. Also, during scaling, still images are continuously being added to the collage. Since the movie is playing in the background, every now and then, sounds from the movie will be played for a second or two, until another movie is chosen to be placed on the collage. The "Collage Mode" button allows the user to toggle between showing the collage or playing all 3 movies at once. If the collage mode is turned on, all 3 movies are re-displayed on the canvas and the random selection of frames begins again. Once turned off, all movies are displayed on the canvas and played at normal rate, in the following order: Analyze That, Secrets of the Ya-Ya Sisterhood, and The Majestic. This button was included if the user decided to first play one of the movies, and then decides to turn on the collage mode after. However, since turning on the collage requires re-positioning all the movies back on the canvas again, the reaction time of the button can be very slow, a major drawback of this button.

However, room for improvement exists in developing this idea of creating our own collage. I envision this application to be playing in someone's living room whenever their flat panel display is not in use. Perhaps some of the issues regarding slow image scaling will be resolved in a stand-alone application vs. an online network connection. I hope to allow the user to have better control in determining how this collage works, and perhaps users can add their entire collection of home movies, let the algorithm generate which movies get collaged, and let the user have more control on how the collage looks by changing the effects of each image, and not just displaying a still frame. Furthermore, once a user sees a still picture of interest in the periphery, and is curious about the source of this image, the user can click on that still image and the particular movie can play.

I have included this function where the user may click on a still frame and be able to see that one particular movie. Since I am using x and y coordinates to determine the location of every movie, it becomes difficult to detect which movie is selected, especially since movies are being placed on top of each other every few seconds. Currently, the "mouse click" function works as follows: the x and y coordinates that correspond to the last movie placed at that location is played. Sometimes a user may click on a certain co-ordinate, but that particular movie may be already "covered" by another one, in which case the last movie placed at the location will be played, which is not necessarily the movie that the user clicked on. Many more improvements can be added, especially a means to better determine which movie the user selected. In the case where the user may select a coordinate not corresponding to any movie, then all three movies are played on the canvas at normal rate. At any time, the user may also decide to return to the "collage" mode by using the "Collage Mode" button.