X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=exo4%2FImage.java;fp=exo4%2FImage.java;h=65d0929e69f9cadae3daa7096ad43b3f9d5d2edf;hb=c05c228927b2d9141cbc27e467e252e5e83263cf;hp=0000000000000000000000000000000000000000;hpb=01bad5b37bf95f027f583e1b1da607e074050651;p=Project_POO.git diff --git a/exo4/Image.java b/exo4/Image.java new file mode 100644 index 0000000..65d0929 --- /dev/null +++ b/exo4/Image.java @@ -0,0 +1,98 @@ +import java.util.Comparator; + +public class Image extends Forme implements Compactable, + Comparable, + Comparator { + final int IMAGE_MAX_SIZE = 100; + Forme[] formeCollection; + int formeNumber; + + Image() { + super(); + formeCollection = new Forme[IMAGE_MAX_SIZE]; + formeNumber = 0; + } + + Image(Point p) { + super(p); + formeCollection = new Forme[IMAGE_MAX_SIZE]; + formeNumber = 0; + } + + public int getSize() { + return formeNumber; + } + + private boolean isEmpty() { + return (formeNumber == 0); + } + + private boolean isFull() { + return (formeNumber >= formeCollection.length); + } + + public void dessiner(Piletransformations pile) { + for (int i = 0; i < formeNumber; i++) { + formeCollection[i].dessiner(pile); + } + } + + public void deplacer(Point p) { + for (int i = 0; i < formeNumber; i++) { + formeCollection[i].deplacer(p); + } + } + + public boolean ajouter(Forme forme) { + boolean rtVal = false; + if (!isFull()) { + formeCollection[formeNumber] = forme; + formeNumber++; + rtVal = true; + } + return rtVal; + } + + public boolean supprimer(int index) { + boolean rtVal = false; + if (!isEmpty()) { + for (int j = index; (j < formeNumber - 1 && index < formeNumber); j++) { + formeCollection[j] = formeCollection[j + 1]; + } + rtVal = true; + formeNumber--; + } + return rtVal; + } + + public void afficher() { + String className = this.getClass().getSimpleName(); + System.out.println("---- " + className + " ----"); + for (int i = 0; i < formeNumber; i++) { + formeCollection[i].afficher(); + } + } + + public void compacter(int nElements) { + // Heavy solution + /* int minIndex = formeNumber - nElements - 1; + for (int i = formeNumber - 1; (i > minIndex && !isEmpty()); i--) { + supprimer(i); + } */ + // Lightweight solution + if (formeNumber - nElements > 0) { + formeNumber -= nElements; + } else { + formeNumber = 0; + } + } + + public int compareTo(Image image) { + return formeNumber - image.getSize(); + } + + public int compare(Image image1, Image image2) { + return (int)(image1.getpOri().getY() - image2.getpOri().getY()); + } + +}