![Page 1: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/1.jpg)
TOPIC 11
RETURNING VALUES FROM METHODS
PICTURE TRANSFORMATIONS
1
Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson, andinstructor materials prepared by B. Ericson.
![Page 2: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/2.jpg)
Outline2
How to return a value from a method
How to transform a picture into one of a different sizeRotation(Scaling up and scaling down)
Returning a Picture object from a method
![Page 3: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/3.jpg)
Return Values from Methods
3
Recall that methods can return values We have invoked some methods that
returned something, for example: getWidth() returns an int
for (int x = 0; x < pictureObj.getWidth(); x ++) …
getPixel() returns a reference to a Pixel object Pixel pixelObj = pictureObj.getPixel(x,y);
getPixels() returns a reference to an array of pixels Pixel[] pixelArray = pictureObj.getPixels() ;
![Page 4: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/4.jpg)
Return Values: Count White Pixels
4
// this is an object methodpublic int countWhitePixels(){
int counter = 0; // loop through the columns (x direction) for (int x = 0; x < this.getWidth(); x++) { // loop through the rows (y direction) for (int y = 0; y < this.getHeight(); y++) {
![Page 5: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/5.jpg)
Counting White Pixels5
// get the pixel at the x and y location Pixel pixelObj = this.getPixel(x,y);
// if the pixel is white increment the counter if (pixelObj.getRed()==255 &&
pixelObj.getGreen()==255 && pixelObj.getBlue() == 255)
counter = counter + 1; } } return counter;}
![Page 6: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/6.jpg)
Rules6
The return type must be specified in the method header, for examplepublic int countWhitePixels()
The return statement sends a value back to where the method was invoked The returned value can be stored in a
variable:int numWhitePixels = pictureObj.countWhitePixels();
Or it can be used directly:System.out.println(pictureObj.countWhitePixels());
![Page 7: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/7.jpg)
Warning 7
The method must always return a value of the correct type
public int badMethod1(){
return 1.1;
}
public int badMethod2(int x){
if (x < 10)
return 1;
}
![Page 8: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/8.jpg)
Warning 8
The method must always return a value of the correct type
public int badMethod3(int x){
if (x < 10)
return 1;
if (x >= 10)
return 2;
}
![Page 9: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/9.jpg)
Example9
A return value can be a boolean value, i.e. true or false
Exercise: Write a method for the Picture class that checks whether two pictures are of the same sizepublic boolean equalSize(Picture otherPic) It will be invoked on a Picture object If this Picture object is of the same size as
the parameter picture, the method returns true, otherwise it returns false
![Page 10: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/10.jpg)
Returning a Picture Object10
So far, we have invoked our picture methods on a target Picture object
We will now write a new version of decreaseRed It will create a new target Picture object
inside the method It will return this Picture object as the result
of the method
![Page 11: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/11.jpg)
Decrease Red Method11
The new decreaseRed method will be invoked on the source picture return a target picture that has the same
dimensions as the source picture So we don’t need to pass the source picture
as a parameter Example of a call to the new decreaseRed() :
Picture sourcePic = new Picture(…); Picture targetPic = sourcePic.decreaseRed(); targetPic.show();
![Page 12: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/12.jpg)
Decrease Red Method12
public Picture decreaseRed() { Picture targetPicture = new Picture(this.getWidth(),
this.getHeight()); // loop through the columns for (int x = 0; x < this.getWidth(); x++) { // loop through the rows for (int y = 0; y < this.getHeight(); y++) { sourcePixel = this.getPixel(x, y); int redValue = sourcePixel.getRed(); int greenValue = sourcePixel.getGreen(); int blueValue = sourcePixel.getBlue();
// decrease the red value redValue = redValue / 2;
![Page 13: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/13.jpg)
Decrease Red Method (continued)
13
// assign target picture values Pixel targetPixel = targetPicture.getPixel(x, y); targetPixel.setGreen(greenValue); targetPixel.setBlue(greenValue); targetPixel.setRed(redValue); } } return targetPicture; }
![Page 14: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/14.jpg)
Rotating Pictures14
![Page 15: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/15.jpg)
Rotating Pictures
![Page 16: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/16.jpg)
Left Rotation16
(0,0) (1,0) (2,0)
(0,1) (1,1) (2,1)
To rotate an image 90 degrees to the left, we copy all the pixels, but they go to different locations in the target
(0,0) goes to (0,2)(1,0) goes to (0,1)(2,0) goes to (0,0)(0,1) goes to (1,2)(1,1) goes to (1,1)(2,1) goes to (1,0)
What happens to the source row (y) cordinates?
They go to the target column (x) coordinates :
target x = source y
(2,0) goes here
(2,1)goes here
(1,0)goes here
(1,1)goes here
(0,0)goes here
(0,1)goes here
![Page 17: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/17.jpg)
Left Rotation
What happens to the source column (x) coordinates?(0,0) goes to (0,2)(1,0) goes to (0,1)(2,0) goes to (0,0)(0,1) goes to (1,2)(1,1) goes to (1,1)(2,1) goes to (1,0)
They go to the target row (y) coordinates that are calculated by:
target y = (source width –1) – source x
(0,0) (1,0) (2,0)
(0,1) (1,1) (2,1)
(2,0) goes here
(2,1)goes here
(1,0)goes here
(1,1)goes here
(0,0)goes here
(0,1)goes here
17 0 1 2
0
1
0
0
1
1
2
![Page 18: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/18.jpg)
Left Rotation Method18
The copyLeftRotation method will be invoked on the source picture return a target picture that is the source
picture rotated left So we don’t need to pass the source picture
as a parameter Example of a call to the new
copyLeftRotation() :
Picture sourcePic = new Picture(…); Picture targetPic = sourcePic.copyLeftRotation(); targetPic.show();
![Page 19: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/19.jpg)
Left Rotation Method19
public Picture copyLeftRotation(){ Picture targetPicture = new Picture(this.getHeight(),
this.getWidth()); for (int sourceX = 0; sourceX < this.getWidth();
sourceX++){ for (int sourceY = 0; sourceY < this.getHeight();
sourceY++){ int targetX = sourceY; int targetY = (this.getWidth() – 1) – sourceX; Pixel sourcePixel = this.getPixel(sourceX, sourceY);
Pixel targetPixel = targetPicture.getPixel(targetX,
targetY); targetPixel.setColor(sourcePixel.getColor()); } }
return targetPicture; }
![Page 20: TOPIC 11 RETURNING VALUES FROM METHODS PICTURE TRANSFORMATIONS 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach](https://reader035.vdocument.in/reader035/viewer/2022062517/56649f145503460f94c29677/html5/thumbnails/20.jpg)
Summary20
Returning values from Methods Returning Pictures Picture Algorithms that Return Pictures