import java.awt.*; import java.awt.font.*; import java.awt.geom.*; import java.text.*; /** * A class that represents a picture. This class inherits from * SimplePicture and allows the student to add functionality to * the Picture class. * * Copyright Georgia Institute of Technology 2004-2005 * @author Barbara Ericson ericson@cc.gatech.edu */ public class Picture extends SimplePicture { ///////////////////// constructors ////////////////////////////////// /** * Constructor that takes no arguments */ public Picture () { /* not needed but use it to show students the implicit call to super() * child constructors always call a parent constructor */ super(); } /** * Constructor that takes a file name and creates the picture * @param fileName the name of the file to create the picture from */ public Picture(String fileName) { // let the parent class handle this fileName super(fileName); } /** * Constructor that takes the width and height * @param width the width of the desired picture * @param height the height of the desired picture */ public Picture(int width, int height) { // let the parent class handle this width and height super(width,height); } /** * Constructor that takes a picture and creates a * copy of that picture */ public Picture(Picture copyPicture) { // let the parent class do the copy super(copyPicture); } ////////////////////// methods /////////////////////////////////////// /** * Method to return a string with information about this picture. * @return a string with information about the picture such as fileName, * height and width. */ public String toString() { String output = "Picture, filename " + getFileName() + " height " + getHeight() + " width " + getWidth(); return output; } // ***** CHROMAKEY ------------------------------------------------ public void chromakeyOnBlue( Picture newBackground ) { int red, green, blue; int x, y; Pixel newPixel; for ( Pixel currentPixel : this.getPixels() ) { red = currentPixel.getRed(); green = currentPixel.getGreen(); blue = currentPixel.getBlue(); if ( red + green < blue ) { x = currentPixel.getX(); y = currentPixel.getY(); newPixel = newBackground.getPixel( x, y ); currentPixel.setColor( newPixel.getColor() ); } } } // ***** CHROMAKEY, take 2 ---------------------------------------- // public void chromakeyOnBlue( Picture newBackground ) // { // int x, y; // Pixel newPixel; // // for ( Pixel currentPixel : this.getPixels() ) // { // if ( isBlue(currentPixel) ) // { // x = currentPixel.getX(); // y = currentPixel.getY(); // newPixel = newBackground.getPixel( x, y ); // currentPixel.setColor( newPixel.getColor() ); // } // } // } // // public boolean isBlue( Pixel p ) // { // int red = p.getRed(); // int green = p.getGreen(); // int blue = p.getBlue(); // // return red + green < blue; // } // ***** helper methods ------------------------------------------- // ***** test method ---------------------------------------------- } // end of class Picture, put all new methods before this