diff --git a/.gradle/8.3/executionHistory/executionHistory.bin b/.gradle/8.3/executionHistory/executionHistory.bin index 5d69cdf12365c6cb914c22b470171a44258c37ed..ddb4b12fab1ca5b2221a680defb1712d7dbba9e3 100644 Binary files a/.gradle/8.3/executionHistory/executionHistory.bin and b/.gradle/8.3/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.3/executionHistory/executionHistory.lock b/.gradle/8.3/executionHistory/executionHistory.lock index 8371cc2bdf1f3a11bc0b0bd0b23b9973f6c37bf7..abcd265318d7524d399506a0a4916b24aa827114 100644 Binary files a/.gradle/8.3/executionHistory/executionHistory.lock and b/.gradle/8.3/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.3/fileHashes/fileHashes.bin b/.gradle/8.3/fileHashes/fileHashes.bin index 27bb7201141549c840c3a3a410fed2ac633398b4..39f7ec8af8f4c6a380fd8a9f8fccf772d89f755e 100644 Binary files a/.gradle/8.3/fileHashes/fileHashes.bin and b/.gradle/8.3/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.3/fileHashes/fileHashes.lock b/.gradle/8.3/fileHashes/fileHashes.lock index b6a8b09d10b9ad58030c5e54869e1802a06843fe..e717aba62fcde27e2654d53ac57cc0c8dbf751eb 100644 Binary files a/.gradle/8.3/fileHashes/fileHashes.lock and b/.gradle/8.3/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.3/fileHashes/resourceHashesCache.bin b/.gradle/8.3/fileHashes/resourceHashesCache.bin index 28d2de720fa180c12037e3504723dd1ee568a3c5..5a4414233f358fa22a3a72f48cdf664e33c7eadc 100644 Binary files a/.gradle/8.3/fileHashes/resourceHashesCache.bin and b/.gradle/8.3/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 305980baca4591f9e7753bb04629fb5a68a206f6..81b374fde1840b9f57f5ad3b746c349f476f02cd 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/classes/java/main/DecreaseGrayLevels.class b/build/classes/java/main/DecreaseGrayLevels.class new file mode 100644 index 0000000000000000000000000000000000000000..7a60c199104f467d3a91b018685962ca61a97ad1 Binary files /dev/null and b/build/classes/java/main/DecreaseGrayLevels.class differ diff --git a/build/classes/java/main/Display.class b/build/classes/java/main/Display.class index 4ae2f76aaf9878582f95633ec7d40a06e1ad8d44..1080fb79294bc6214b6a8a48f14413b539953290 100644 Binary files a/build/classes/java/main/Display.class and b/build/classes/java/main/Display.class differ diff --git a/build/classes/java/test/DecreaseGrayLevelsTest.class b/build/classes/java/test/DecreaseGrayLevelsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..5d64af8ec0735b5e0455f47708de5f289b9e5628 Binary files /dev/null and b/build/classes/java/test/DecreaseGrayLevelsTest.class differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/DecreaseGrayLevels.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/DecreaseGrayLevels.class.uniqueId1 new file mode 100644 index 0000000000000000000000000000000000000000..bbb4e560ff43318539963d09cef48f6ecf0aca50 Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/DecreaseGrayLevels.class.uniqueId1 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 new file mode 100644 index 0000000000000000000000000000000000000000..978934d08c8abbe115ad764a01100b62f5d4c6d3 Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId0 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId1 deleted file mode 100644 index 4ae2f76aaf9878582f95633ec7d40a06e1ad8d44..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Display.class.uniqueId1 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Invert.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Invert.class.uniqueId0 deleted file mode 100644 index 937bb5f59de0351e14a8a6bb1c746cbcab7dc654..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Invert.class.uniqueId0 and /dev/null differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index b56a74fa99192d2b31cb986be7ec59087f6bf058..5b3b3fa5b8ff24e41bee8b4b377e248c8aea091c 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/DecreaseGrayLevelsTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/DecreaseGrayLevelsTest.class.uniqueId0 new file mode 100644 index 0000000000000000000000000000000000000000..9187d8e0714b979389374fe033a806665a74db76 Binary files /dev/null and b/build/tmp/compileTestJava/compileTransaction/stash-dir/DecreaseGrayLevelsTest.class.uniqueId0 differ diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/MatrixGrayImageTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/MatrixGrayImageTest.class.uniqueId0 deleted file mode 100644 index 67b82447a8b96d6230f510cdd74324ac82d9b5fd..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileTestJava/compileTransaction/stash-dir/MatrixGrayImageTest.class.uniqueId0 and /dev/null differ diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin index 4782bfac4ec12e5ef2276f34a69e5e50305d5108..22f4d54e8cc10e1eb8d63f66c62ca6b046b88ca4 100644 Binary files a/build/tmp/compileTestJava/previous-compilation-data.bin and b/build/tmp/compileTestJava/previous-compilation-data.bin differ diff --git a/src/main/java/DecreaseGrayLevels.java b/src/main/java/DecreaseGrayLevels.java new file mode 100644 index 0000000000000000000000000000000000000000..6ed47528643c98ba3b3f84b57f435a6eb84f510f --- /dev/null +++ b/src/main/java/DecreaseGrayLevels.java @@ -0,0 +1,49 @@ +import java.util.ArrayList; +import java.util.List; + +public class DecreaseGrayLevels implements transform { + + private final double nbGrayLevels; + + public DecreaseGrayLevels(int nbGrayLevels) { + this.nbGrayLevels = nbGrayLevels; + } + + @Override + public void applyTo(GrayImage image) { + for (int i = 0; i < image.getWidth(); i++) { + for (int j = 0; j < image.getHeight(); j++) { + double gray = findGray(image.getPixelGrayColor(i,j)); + GrayColor newColor = new ByteGrayColor(gray); + image.setPixel(newColor, i, j); + } + } + } + + + public double findGray(GrayColor initialColor) { + + double color = initialColor.getLuminosity(); + List<Double> intervalList = intervalFinder(); + + for (int i = 1; i < this.nbGrayLevels; i++) { + if (color < intervalList.get(i)) + return intervalList.get(i-1); + } + return 1.; + } + + public List<Double> intervalFinder() { + + double intervalGap = 1.0 / (this.nbGrayLevels - 1.0); + List<Double> intervalList = new ArrayList<>(); + + for (double i = 0; i < (nbGrayLevels); i += 1.0) { + double interval = 0.0 + intervalGap * i; + intervalList.add(interval); + } + + return intervalList; + } + +} diff --git a/src/main/java/Display.java b/src/main/java/Display.java index d3fc6e7b6dfa6ba483bc85ef66271a9acf26710d..4a12bdda6af375e81ed7cd0fe033c13838e3ce0e 100644 --- a/src/main/java/Display.java +++ b/src/main/java/Display.java @@ -21,7 +21,7 @@ public class Display implements Initializable { this.image = MatrixGrayImage.createImageFromPGMFile("images/luminy.pgm"); - transform transformation = new Invert(); + transform transformation = new DecreaseGrayLevels(5); transformation.applyTo(this.image); diff --git a/src/test/java/DecreaseGrayLevelsTest.java b/src/test/java/DecreaseGrayLevelsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..0c27202e6fc1607262ba0dcf06fa3052e783671a --- /dev/null +++ b/src/test/java/DecreaseGrayLevelsTest.java @@ -0,0 +1,21 @@ +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.*; +import java.util.List; + +public class DecreaseGrayLevelsTest { + + @Test + void intervalFinder_shouldReturnCorrectIntervals() { + DecreaseGrayLevels dgl = new DecreaseGrayLevels(3); + List<Double> intervals = dgl.intervalFinder(); + assertThat(intervals).containsExactly(0.0, 0.5, 1.0); + } + + @Test + void findGray_shouldReturnCorrectValue() { + DecreaseGrayLevels dgl = new DecreaseGrayLevels(5); + ByteGrayColor byte1 = new ByteGrayColor(1.); + Double find1 = dgl.findGray(byte1); + assertThat(find1).isEqualTo(1.); + } +}