/** * Method to show large changes in color * * @param edgeDist the distance for finding edges */ public void edgeDetection(int edgeDist) { Pixel leftPixel = null; Pixel rightPixel = null; Pixel[][] pixels = this.getPixels2D(); Color rightColor = null; for (int row = 0; row < pixels.length; row++) { for (int col = 0; col < pixels[0].length - 1; col++) { leftPixel = pixels[row][col]; rightPixel = pixels[row][col + 1]; rightColor = rightPixel.getColor(); if (leftPixel.colorDistance(rightColor) > edgeDist) leftPixel.setColor(Color.BLACK); else leftPixel.setColor(Color.WHITE); } } // code to improve edge detection Pixel topPixel = null; Pixel bottomPixel = null; Color bottomColor = null; for (int col = 0; col < pixels[0].length; col++) { for (int row = 0; row < pixels.length - 1; row++) { topPixel = pixels[row][col]; bottomPixel = pixels[row + 1][col]; bottomColor = bottomPixel.getColor(); if (topPixel.colorDistance(bottomColor) > edgeDist) { topPixel.setColor(Color.BLACK); } else { topPixel.setColor(Color.WHITE); } } } }
public void cropAndCopy( Picture sourcePicture, int startSourceRow, int endSourceRow, int startSourceCol, int endSourceCol, int startDestRow, int startDestCol) { Pixel leftPixel = null; Pixel rightPixel = null; Pixel[][] pixels = this.getPixels2D(); Color rightColor = null; Pixel[][] fromPixels = sourcePicture.getPixels2D(); Pixel[][] toPixels = this.getPixels2D(); Pixel fromPixel = null; Pixel toPixel = null; for (int fromRow = startSourceRow, toRow = endSourceRow; fromRow < fromPixels.length && toRow < toPixels.length; fromRow++, toRow++) { for (int fromCol = startSourceCol, toCol = endSourceCol; fromCol < fromPixels[0].length && toCol < toPixels[0].length; fromCol++, toCol++) { fromPixel = fromPixels[fromRow][fromCol]; toPixel = toPixels[toRow][toCol]; toPixel.setColor(fromPixel.getColor()); } } }
public boolean ManipBoxPattern(int xMin, int yMin, int xMax, int yMax, double amount) { int x; int y; y = yMin; while (y < yMax) { x = xMin; while (x < xMax) { Pixel p = this.getPixel(x, y); int yOffset = Math.abs(yMin - y); int xOffset = Math.abs(xMin - x); double ra = normal(x, xMin, xMax); if (ra >= 1.0) { int R = (int) (p.getRed() * amount); int G = (int) (p.getGreen() * amount); int B = (int) (255 * amount); p.setRed(R); p.setGreen(G); p.setBlue(B); p.getColor().brighter(); } else { int R = (int) (p.getRed() * amount); int G = (int) (255 * amount); int B = (int) (p.getBlue() * amount); p.setRed(R); p.setGreen(G); p.setBlue(B); } if (x % 2 == 0) { int R = (int) (255 * amount); int G = (int) (p.getGreen() * amount); int B = (int) (p.getBlue() * amount); p.setRed(R); p.setGreen(G); p.setBlue(B); } x = x + 1; } y = y + 1; } return true; }
public void mirrorArms() { int mirrorPoint = 205; Pixel leftPixel = null; Pixel rightPixel = null; Pixel[][] pixels = this.getPixels2D(); for (int row = 152; row < 200; row++) { for (int col = 92; col < mirrorPoint; col++) { leftPixel = pixels[row][col]; rightPixel = pixels[row][mirrorPoint - col + mirrorPoint]; rightPixel.setColor(leftPixel.getColor()); } } }
public void mirrorGull() { int mirrorPoint = 352; Pixel leftPixel = null; Pixel rightPixel = null; Pixel[][] pixels = this.getPixels2D(); for (int row = 233; row < 323; row++) { for (int col = 235; col < mirrorPoint; col++) { leftPixel = pixels[row][col]; rightPixel = pixels[row][mirrorPoint - col + mirrorPoint]; rightPixel.setColor(leftPixel.getColor()); } } }
/** * Method that mirrors the picture around a vertical mirror in the center of the picture from left * to right */ public void mirrorVertical() { Pixel[][] pixels = this.getPixels2D(); Pixel leftPixel = null; Pixel rightPixel = null; int width = pixels[0].length; for (int row = 0; row < pixels.length; row++) { for (int col = 0; col < width / 2; col++) { leftPixel = pixels[row][col]; rightPixel = pixels[row][width - 1 - col]; rightPixel.setColor(leftPixel.getColor()); } } }
public void mirrorVerticalRightToLeft() { Pixel[][] pixels = this.getPixels2D(); Pixel leftPixel = null; Pixel rightPixel = null; int pictureWidth = pixels[0].length; for (int row = 0; row < pixels.length; row++) { for (int col = pixels[0].length - 1; col > pictureWidth / 2; col--) { rightPixel = pixels[row][col]; leftPixel = pixels[row][(pictureWidth / 2) - (col - pictureWidth / 2)]; leftPixel.setColor(rightPixel.getColor()); } } }
public void mirrorHorizontalBotToTop() { Pixel[][] pixels = this.getPixels2D(); Pixel topPixel = null; Pixel bottomPixel = null; int width = pixels[0].length; for (int col = 0; col < width; col++) { for (int row = 0; row < pixels.length / 2; row++) { topPixel = pixels[row][col]; bottomPixel = pixels[(pixels.length) - 1 - row][col]; topPixel.setColor(bottomPixel.getColor()); } } }
public void mirrorVerticalBottomToTop() { Pixel[][] pixels = this.getPixels2D(); Pixel topPixel = null; Pixel bottomPixel = null; int width = pixels[0].length; int height = pixels.length; for (int row = 0; row < pixels.length; row++) { for (int col = 0; col < width; col++) { topPixel = pixels[height - 1 - row][col]; bottomPixel = pixels[row][col]; bottomPixel.setColor(topPixel.getColor()); } } }
/** * Method to show large changes in color * * @param edgeDist the distance for finding edges */ public void edgeDetection(int edgeDist) { Pixel leftPixel = null; Pixel rightPixel = null; Pixel[][] pixels = this.getPixels2D(); Color rightColor = null; for (int row = 0; row < pixels.length; row++) { for (int col = 0; col < pixels[0].length - 1; col++) { leftPixel = pixels[row][col]; rightPixel = pixels[row][col + 1]; rightColor = rightPixel.getColor(); if (leftPixel.colorDistance(rightColor) > edgeDist) leftPixel.setColor(Color.BLACK); else leftPixel.setColor(Color.WHITE); } } }
/** * copy from the passed fromPic to the specified startRow and startCol in the current picture * * @param fromPic the picture to copy from * @param startRow the start row to copy to * @param startCol the start col to copy to */ public void copy(Picture fromPic, int startRow, int startCol) { Pixel fromPixel = null; Pixel toPixel = null; Pixel[][] toPixels = this.getPixels2D(); Pixel[][] fromPixels = fromPic.getPixels2D(); for (int fromRow = 0, toRow = startRow; fromRow < fromPixels.length && toRow < toPixels.length; fromRow++, toRow++) { for (int fromCol = 0, toCol = startCol; fromCol < fromPixels[0].length && toCol < toPixels[0].length; fromCol++, toCol++) { fromPixel = fromPixels[fromRow][fromCol]; toPixel = toPixels[toRow][toCol]; toPixel.setColor(fromPixel.getColor()); } } }
/** * Method that will copy all of the passed source picture into the current picture object * * @param sourcePicture the picture object to copy */ public void copyPicture(SimplePicture sourcePicture) { Pixel sourcePixel = null; Pixel targetPixel = null; // loop through the columns for (int sourceX = 0, targetX = 0; sourceX < sourcePicture.getWidth() && targetX < this.getWidth(); sourceX++, targetX++) { // loop through the rows for (int sourceY = 0, targetY = 0; sourceY < sourcePicture.getHeight() && targetY < this.getHeight(); sourceY++, targetY++) { sourcePixel = sourcePicture.getPixel(sourceX, sourceY); targetPixel = this.getPixel(targetX, targetY); targetPixel.setColor(sourcePixel.getColor()); } } }
public void mirrorArms() { int mirrorPoint = 298; Pixel leftPixel = null; Pixel rightPixel = null; int count = 0; Pixel[][] pixels = this.getPixels2D(); // loop through the rows for (int row = 153; row < 192; row++) { // loop from 13 to just before the mirror point for (int col = 100; col < mirrorPoint; col++) { leftPixel = pixels[row][col]; rightPixel = pixels[mirrorPoint - row][col]; rightPixel.setColor(leftPixel.getColor()); } } }
/** Mirror just part of a picture of a temple */ public void mirrorTemple() { int mirrorPoint = 276; Pixel leftPixel = null; Pixel rightPixel = null; int count = 0; Pixel[][] pixels = this.getPixels2D(); // loop through the rows for (int row = 27; row < 97; row++) { // loop from 13 to just before the mirror point for (int col = 13; col < mirrorPoint; col++) { leftPixel = pixels[row][col]; rightPixel = pixels[row][mirrorPoint - col + mirrorPoint]; rightPixel.setColor(leftPixel.getColor()); } } }
// Makes the right half of the picture mirror the left public static void mirror(Picture pict) { int mirrorPoint = pict.getWidth() / 2; // calculating the midpoint Pixel leftPixel = null; // the left pixel to copy from Pixel rightPixel = null; // the right pixel to copy to // loop through the rows for (int y = 0; y < pict.getHeight(); y++) { // loop from 0 to just before the mirror point for (int x = 0; x < mirrorPoint; x++) { // Getting the left and right pixels leftPixel = pict.getPixel(x, y); rightPixel = pict.getPixel(pict.getWidth() - 1 - x, y); // Setting the right pixel to the left pixel's color rightPixel.setColor(leftPixel.getColor()); } } }
/** * Create the color information panel * * @param labelFont the font to use for labels * @return the color information panel */ private JPanel createColorInfoPanel(Font labelFont) { // create a color info panel JPanel colorInfoPanel = new JPanel(); colorInfoPanel.setLayout(new FlowLayout()); // get the pixel at the x and y Pixel pixel = new Pixel(picture, colIndex, rowIndex); // create the labels rValue = new JLabel("R: " + pixel.getRed()); gValue = new JLabel("G: " + pixel.getGreen()); bValue = new JLabel("B: " + pixel.getBlue()); // create the sample color panel and label colorLabel = new JLabel("Color at location: "); colorPanel = new JPanel(); colorPanel.setBorder(new LineBorder(Color.black, 1)); // set the color sample to the pixel color colorPanel.setBackground(pixel.getColor()); // set the font rValue.setFont(labelFont); gValue.setFont(labelFont); bValue.setFont(labelFont); colorLabel.setFont(labelFont); colorPanel.setPreferredSize(new Dimension(25, 25)); // add items to the color information panel colorInfoPanel.add(rValue); colorInfoPanel.add(gValue); colorInfoPanel.add(bValue); colorInfoPanel.add(colorLabel); colorInfoPanel.add(colorPanel); return colorInfoPanel; }
public void copy( Picture fromPic, int fromStartRow, int fromStartCol, int toStartRow, int toStartCol, int fromEndRow, int fromEndCol) { Pixel fromPixel = null; Pixel toPixel = null; Pixel[][] toPixels = this.getPixels2D(); Pixel[][] fromPixels = fromPic.getPixels2D(); for (int fromRow = fromStartRow, toRow = toStartRow; fromRow <= fromEndRow && toRow < toPixels.length; fromRow++, toRow++) { for (int fromCol = fromStartCol, toCol = toStartCol; fromCol <= fromEndCol && toCol < toPixels.length; fromCol++, toCol++) { fromPixel = fromPixels[fromRow][fromCol]; toPixel = toPixels[toRow][toCol]; toPixel.setColor(fromPixel.getColor()); } } }