// Duplicating a given picture x times in the same image.
var originalImage = new SimpleImage("duvall.jpg");
print(originalImage);
var xTimesBigger = 2;
var resultImage = makeXTimesBigger(originalImage, xTimesBigger);
print(resultImage);
function makeXTimesBigger(originalImage, xTimesBigger){
var resultImage = new SimpleImage(originalImage.getWidth()*xTimesBigger, originalImage.getHeight()*xTimesBigger);
resultImage = makeTopLeftPicture(originalImage, resultImage);
resultImage = makeTopRightPicture(originalImage, resultImage);
resultImage = makeBottomLeftPicture(originalImage, resultImage);
resultImage = makeBottomRightPicture(originalImage, resultImage);
return resultImage;
}
function makeTopRightPicture(originalImage, resultImage){
for(var originalPixel of originalImage.values()){
var x = originalPixel.getX();
var y = originalPixel.getY();
var adjustedX = x + originalImage.getWidth();
var resultPixel = resultImage.getPixel(adjustedX, y);
resultPixel.setRed(originalPixel.getRed());
resultPixel.setGreen(originalPixel.getGreen());
resultPixel.setBlue(originalPixel.getBlue());
}
return resultImage;
}
function makeBottomRightPicture(originalImage, resultImage){
for(var originalPixel of originalImage.values()){
var x = originalPixel.getX();
var y = originalPixel.getY();
var adjustedX = x + originalImage.getWidth();
var adjustedY = y + originalImage.getHeight();
var resultPixel = resultImage.getPixel(adjustedX,adjustedY);
resultPixel.setRed(originalPixel.getRed());
resultPixel.setGreen(originalPixel.getGreen());
resultPixel.setBlue(originalPixel.getBlue());
}
return resultImage;
}
function makeBottomLeftPicture(originalImage, resultImage){
for(var originalPixel of originalImage.values()){
var x = originalPixel.getX();
var y = originalPixel.getY();
var adjustedY = y + originalImage.getHeight();
var resultPixel = resultImage.getPixel(x, adjustedY);
resultPixel.setRed(originalPixel.getRed());
resultPixel.setGreen(originalPixel.getGreen());
resultPixel.setBlue(originalPixel.getBlue());
}
return resultImage;
}
function makeTopLeftPicture(originalImage, resultImage){
for(var originalPixel of originalImage.values()){
var x = originalPixel.getX();
var y = originalPixel.getY();
var resultPixel = resultImage.getPixel(x,y);
resultPixel.setRed(originalPixel.getRed());
resultPixel.setGreen(originalPixel.getGreen());
resultPixel.setBlue(originalPixel.getBlue());
}
return resultImage;
}