2023-04-26 10:54:36 +02:00
|
|
|
import java.io.File;
|
|
|
|
|
|
|
|
import javax.swing.JFileChooser;
|
|
|
|
import javax.swing.filechooser.FileNameExtensionFilter;
|
|
|
|
|
2023-04-25 11:42:59 +02:00
|
|
|
public class PreEcriture {
|
2023-04-26 10:54:36 +02:00
|
|
|
private int cetteTaille;
|
|
|
|
private String path;
|
|
|
|
private int octetRemaining;
|
|
|
|
|
|
|
|
private boolean[][] cetteGrille;
|
|
|
|
private Cellules[][] grilleCellules;
|
|
|
|
|
|
|
|
private int[] resultat;
|
|
|
|
private String[] tabTemp;
|
|
|
|
private byte[] resultatByte;
|
|
|
|
|
|
|
|
|
|
|
|
public PreEcriture(boolean[][] uneGrille, Cellules[][] uneGrilleCell , int uneTaille){
|
|
|
|
this.cetteTaille = uneTaille;
|
|
|
|
this.cetteGrille = uneGrille;
|
|
|
|
this.grilleCellules = uneGrilleCell;
|
|
|
|
|
|
|
|
/* ======================================== Confection du header ============================================== */
|
|
|
|
|
|
|
|
this.resultat = new int[5];
|
|
|
|
this.resultatByte = new byte[5];
|
|
|
|
int[] tabEntrortie = new int[4];
|
|
|
|
|
|
|
|
tabEntrortie=outils.ParcoursCell(this.grilleCellules, this.cetteTaille);
|
|
|
|
|
|
|
|
this.resultat[0]=this.cetteTaille;
|
|
|
|
this.resultat[1]=tabEntrortie[0];
|
|
|
|
this.resultat[2]=tabEntrortie[1];
|
|
|
|
this.resultat[3]=tabEntrortie[2];
|
|
|
|
this.resultat[4]=tabEntrortie[3];
|
|
|
|
this.resultatByte = outils.ConvertToByte(this.resultat);
|
|
|
|
|
|
|
|
/* ====================================== Confection de l'Offset ============================================ */
|
|
|
|
|
|
|
|
if((this.cetteTaille*this.cetteTaille)%8 == 0){ //définit les tailles s'il y a besoin d'un octet en plus ou pas
|
|
|
|
this.tabTemp = new String[(this.cetteTaille*this.cetteTaille)/8];
|
|
|
|
this.octetRemaining = this.cetteTaille*this.cetteTaille;
|
|
|
|
} else if((this.cetteTaille*this.cetteTaille)%8 > 0){
|
|
|
|
this.tabTemp = new String[(this.cetteTaille*this.cetteTaille)/8+1];
|
|
|
|
this.octetRemaining = (this.cetteTaille*this.cetteTaille)+(this.cetteTaille*this.cetteTaille)%8;
|
|
|
|
}
|
|
|
|
|
|
|
|
String tempString = "";
|
|
|
|
boolean[] tabHorizontal = new boolean[this.cetteTaille*this.cetteTaille];
|
|
|
|
tabHorizontal = outils.PutToVertical(this.cetteGrille, this.cetteTaille);
|
|
|
|
|
|
|
|
// Transformation du tableau de boolean en un tableau de chaine de String qui stock des nombre sous formes de byte
|
|
|
|
int compteur1=0;
|
2023-04-26 21:36:06 +02:00
|
|
|
int decompte=0;
|
2023-04-26 10:54:36 +02:00
|
|
|
for(boolean cetteIteration : tabHorizontal){
|
2023-04-26 21:36:06 +02:00
|
|
|
if(this.octetRemaining<8){
|
|
|
|
break;
|
|
|
|
}
|
2023-04-26 10:54:36 +02:00
|
|
|
if(cetteIteration==true){
|
|
|
|
tempString = tempString + "0";
|
|
|
|
} else if(cetteIteration==false){
|
|
|
|
tempString = tempString + "1";
|
|
|
|
}
|
2023-04-26 21:36:06 +02:00
|
|
|
if(tempString.length()==8){
|
2023-04-26 10:54:36 +02:00
|
|
|
tabTemp[compteur1] = tempString;
|
|
|
|
tempString="";
|
|
|
|
compteur1++;
|
|
|
|
this.octetRemaining = this.octetRemaining - 8;
|
|
|
|
}
|
2023-04-26 21:36:06 +02:00
|
|
|
decompte++;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(decompte != tabHorizontal.length){
|
|
|
|
while(decompte != tabHorizontal.length){
|
|
|
|
if(tabHorizontal[decompte]==true){
|
|
|
|
tempString=tempString+"0";
|
|
|
|
}else if(tabHorizontal[decompte]==false){
|
|
|
|
tempString=tempString+"1";
|
|
|
|
}
|
|
|
|
decompte++;
|
|
|
|
} while(tempString.length() < 8){
|
|
|
|
tempString=tempString+"0";
|
|
|
|
}
|
|
|
|
this.tabTemp[compteur1] = tempString;
|
2023-04-26 10:54:36 +02:00
|
|
|
}
|
|
|
|
|
2023-04-26 21:36:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(int i=0; i<tabTemp.length; i++){
|
|
|
|
System.out.println(tabTemp[i]+" ");
|
|
|
|
}
|
|
|
|
|
2023-04-26 10:54:36 +02:00
|
|
|
this.path = this.CreateFichier();
|
|
|
|
Ecriture stylo = new Ecriture(this.resultatByte, this.tabTemp, this.path);
|
|
|
|
}
|
|
|
|
|
|
|
|
public String CreateFichier() {
|
|
|
|
JFileChooser chooser = new JFileChooser();
|
|
|
|
FileNameExtensionFilter filter = new FileNameExtensionFilter("Fichiers .lab", "lab");
|
|
|
|
chooser.setFileFilter(filter);
|
|
|
|
int returnVal = chooser.showSaveDialog(null);
|
2023-04-26 13:13:15 +02:00
|
|
|
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
2023-04-26 10:54:36 +02:00
|
|
|
File fichier = chooser.getSelectedFile();
|
2023-04-26 13:13:15 +02:00
|
|
|
String nomFichier = fichier.getName();
|
|
|
|
if (!nomFichier.endsWith(".lab")) {
|
|
|
|
fichier = new File(fichier.getAbsolutePath() + ".lab");
|
|
|
|
}
|
2023-04-26 10:54:36 +02:00
|
|
|
return fichier.getAbsolutePath();
|
|
|
|
}
|
|
|
|
return null;
|
2023-04-26 13:13:15 +02:00
|
|
|
}
|
2023-04-25 11:42:59 +02:00
|
|
|
}
|