+++ /dev/null
-import java.util.Comparator;
-
-public class Image extends Forme implements Compactable,
- Comparable<Image>,
- Comparator<Image> {
- 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());
- }
-
-}