<< Chapter < Page Chapter >> Page >

Complete program listing

A complete listing of the program discussed in this module is provided in Listing 5 below.

Listing 5 . Complete program listing.
/*File Prob04 Copyright 2008 R.G.Baldwin *********************************************************/import java.awt.Graphics2D; import java.awt.geom.AffineTransform;import java.awt.geom.Rectangle2D; import java.awt.Graphics;import java.awt.geom.Ellipse2D; import java.awt.Color;public class Prob04{ public static void main(String[]args){ new Prob04Runner().run();}//end main method }//end class Prob04//======================================================// class Prob04Runner{public Prob04Runner(){ System.out.println("Display your name here.");}//end constructor //----------------------------------------------------//public void run(){ Picture pix = new Picture("Prob04a.jpg");//Rotate and mirror the picture. pix = rotatePicture(pix,35);pix = mirrorUpperQuads(pix); pix = mirrorHoriz(pix);pix.explore(); //Clip the picture to an ellipse on a red background.pix = clipToEllipse(pix); //Add your name and display the output picture.pix.addMessage("Display your name here.",10,20); pix.explore();System.out.println(pix); }//end run//----------------------------------------------------// private Picture clipToEllipse(Picture pix){Picture result = new Picture(pix.getWidth(),pix.getHeight());result.setAllPixelsToAColor(Color.RED); //Get the graphics2D objectGraphics2D g2 = (Graphics2D)(result.getGraphics()); //Create an ellipse for clippingEllipse2D.Double ellipse = new Ellipse2D.Double(28,64,366,275);//Use the ellipse for clipping g2.setClip(ellipse);//Draw the image g2.drawImage(pix.getImage(),0,0,pix.getWidth(),pix.getHeight(), null);return result; }//end clipToEllipse//----------------------------------------------------//private Picture rotatePicture(Picture pix, double angle){//Set up the rotation transform AffineTransform rotateTransform = new AffineTransform();rotateTransform.rotate(Math.toRadians(angle), pix.getWidth()/2,pix.getHeight()/2); //Get the required dimensions of a rectangle that will// contain the rotated image. Rectangle2D rectangle2D =pix.getTransformEnclosingRect(rotateTransform); int resultWidth = (int)(rectangle2D.getWidth());int resultHeight = (int)(rectangle2D.getHeight()); //Set up the translation transform that will translate// the rotated image to the center of the new Picture // object.AffineTransform translateTransform = new AffineTransform();translateTransform.translate( (resultWidth - pix.getWidth())/2,(resultHeight - pix.getHeight())/2); //Concatenate the two transforms so that the image// will first be rotated around its center and then // translated to the center of the new Picture object.translateTransform.concatenate(rotateTransform); //Create a new Picture object to contain the results// of the transformation. Picture result = new Picture(resultWidth,resultHeight); //Get the graphics context of the new Picture object,// apply the transform to the incoming picture and // draw the transformed picture on the new Picture// object. Graphics2D g2 = (Graphics2D)result.getGraphics();g2.drawImage(pix.getImage(),translateTransform,null); return result;}//end rotatePicture //----------------------------------------------------////This method mirrors the upper-left quadrant of a // picture into the upper-right quadrant.private Picture mirrorUpperQuads(Picture pix){ Pixel leftPixel = null;Pixel rightPixel = null; int midpoint = pix.getWidth()/2;int width = pix.getWidth(); for(int row = 0;row<pix.getHeight()/2;row++){ for(int col = 0;col<midpoint;col++){ leftPixel = pix.getPixel(col,row);rightPixel = pix.getPixel(width-1-col,row);rightPixel.setColor(leftPixel.getColor()); }//end inner loop}//end outer loop return pix;}//end mirrorUpperQuads //----------------------------------------------------////This method mirrors the top half of a picture into // the bottom half.private Picture mirrorHoriz(Picture pix){ Pixel topPixel = null;Pixel bottomPixel = null; int midpoint = pix.getHeight()/2;int height = pix.getHeight(); for(int col = 0;col<pix.getWidth();col++){ for(int row = 0;row<midpoint;row++){ topPixel = pix.getPixel(col,row);bottomPixel = pix.getPixel(col,height-1-row);bottomPixel.setColor(topPixel.getColor()); }//end inner loop}//end outer loop return pix;}//end mirrorHoriz //----------------------------------------------------//}//end class Prob04Runner

-end-

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?

Ask