Presentation is loading. Please wait.

Presentation is loading. Please wait.

Creative Commons Attribution Non-Commercial Share Alike License sa/3.0/http://creativecommons.org/licenses/by-nc-

Similar presentations


Presentation on theme: "Creative Commons Attribution Non-Commercial Share Alike License sa/3.0/http://creativecommons.org/licenses/by-nc-"— Presentation transcript:

1 Creative Commons Attribution Non-Commercial Share Alike License sa/3.0/http://creativecommons.org/licenses/by-nc- sa/3.0/ Original Developer: Beth Simon, 2009

2 CSE8A Lecture 14 Read next class: read pg Grades – expectations Feedback: –Review solutions to quizzes –Review clicker questions –Review PSAs (with others and tutors) –Review labs

3 Chapter 6: Conditionally modifying pixels All pixels change is COLOR meets criteria All pixels change if meet both a COLOR and COORDINATE criteria All pixels change if COORDINATES meet criteria

4 Does the order of the for loops matter? public void fillBottom(Color newColor) { Pixel pix; for (int aaa = 0; aaa < this.getHeight(); aaa++) { for (int bbb = 0; bbb < this.getWidth(); bbb++) { >>> { pix = this.getPixel(bbb,aaa); pix.setColor(newColor); } A.Yes, since we are changing the bottom half, we have to “fill in” across the rows in the inner loop B.Yes, because we need to make sure the if statement is checking aaa not bbb C.Yes, I have my own explanation D.No, the if statement controls the assignment

5 How many times is the variable pix assigned a value? A.1 B.this.getWidth() times C.this.getHeight() times D.this.getHeight()* this.getWidth() times E.this.getHeight()/2* this.getWidth() times public void fillBottom(Color newColor) { Pixel pix; for (int aaa = 0; aaa < this.getHeight(); aaa++) { for (int bbb = 0; bbb < this.getWidth(); bbb++) { >>> { pix = this.getPixel(bbb,aaa); pix.setColor(newColor); }

6 Remember this code? public void everyOtherPixel(Color newColor) { Pixel[] pixArray = this.getPixels(); for (int i = 0; i < pixArray.length(); i = i + 2) { pixArray[i].setColor(newColor); }

7 How is this the same? public void everyOtherColumn(Color newColor) { Pixel pix; for (int aaa = 0; aaa < this.getHeight(); aaa++) { for (int bbb = 0; bbb < this.getWidth(); bbb = bbb + 2) { pix = this.getPixel(bbb,aaa); pix.setColor(newColor); }

8 How many iterations of the loop body are executed? A.getHeight()-1 * getWidth()-1 B.getHeight()-1 * (getWidth()-1)/2 C.getHeight() * getWidth() D.getHeight() * getWidth()/2 E.None of the above public void everyOtherColumn(Color newColor) { Pixel pix; for (int aaa = 0; aaa < this.getHeight(); aaa++) { for (int bbb = 0; bbb < this.getWidth(); bbb = bbb + 2) { pix = this.getPixel(bbb,aaa); pix.setColor(newColor); }

9 Same code with if statement control public void everyOtherColumn(Color newColor) { Pixel pix; for (int aaa = 0; aaa < this.getHeight(); aaa++) { for (int bbb = 0; bbb < this.getWidth(); bbb++) { > pix = this.getPixel(bbb,aaa); pix.setColor(newColor); } A) if(bbb

10 If you can do it both ways, which is “better”? Efficiency Software Engineering Design –Readability –Modifyability We just looked at: –Looping over restricted bounds (< or %2 == 0) –Looping over all bounds with if statement inside

11 What parameters would YOU provide a user for a red eye reduction method? 1.Top left pixel coordinates for box to look for red eye in 2.Bottom right pixel coordinates for box to look for red eye in 3.Start index and end index for location to look for red eye in. 4.Color to change red eyes to 5.Threshold value to determine if eyes are “red” AXXXXX BXXXX CXXX DXXX EXXX

12 Book code for RedEye reduction: Parameters for good Software Engineering public void removeRedEye(int startX, int startY, int endX, int endY, Color newColor ) { Pixel pix; for (int x = ; x < ; x++) { for (int y = ; y < ;y++) { pix = this.getPixel(x,y); if (pix.colorDistance(Color.red) < 167) pix.setColor( ); }


Download ppt "Creative Commons Attribution Non-Commercial Share Alike License sa/3.0/http://creativecommons.org/licenses/by-nc-"

Similar presentations


Ads by Google