Merge remote-tracking branch 'origin/main'

This commit is contained in:
NonoL3Robot
2021-11-23 22:11:56 +01:00
6 changed files with 274 additions and 49 deletions
+40
View File
@@ -0,0 +1,40 @@
/*
* Fenetre, 22/11/2021
* IUT Rodez 2021, INFO2
* pas de copyright, aucun droits
*/
package lecteur_pdf.affichage;
import lecteur_pdf.document.Pdf;
import lecteur_pdf.menu.Menu;
import javax.swing.*;
/**
* classe correspondant à l'objet Fenetre
*
* @author Léo FRANCH
* @author Tristan NOGARET
* @author Lucàs VABRE
* @author Noé VILLENEUVE
* @version 1.0
*/
public class Fenetre extends javax.swing.JFrame {
private JFrame frame ;
private String titre ;
private Menu menu ;
private Pdf pdf ;
public Fenetre() {
frame = new JFrame( "sans titre" );
}
public Fenetre(String titre) {
frame = new JFrame( titre );
}
}
@@ -0,0 +1,33 @@
/*
* gestionFenetre, 22/11/2021
* IUT Rodez 2021, INFO2
* pas de copyright, aucun droits
*/
package lecteur_pdf.affichage;
import java.util.ArrayList;
/**
* classe de gestion des fenêtres
*
* @author Léo FRANCH
* @author Tristan NOGARET
* @author Lucàs VABRE
* @author Noé VILLENEUVE
* @version 1.0
*/
public class gestionFenetre {
final int NB_MAX_FENETRE = 2 ;
private ArrayList<Fenetre> fenetresOuvertes;
public void ouvrirFenetre(){
}
public void fermerFenetre(){
}
}
+99 -27
View File
@@ -7,76 +7,148 @@
package lecteur_pdf.document;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
/**
* TODO class comment
* Page générée virtuellement pour laffichage avec java swing
*
* @author Léo FRANCH
* @author Tristan NOGARET
* @author Lucàs VABRE
* @author Noé VILLENEUVE
* @version 1.0
*/
public class Page {
/**
* TODO A compléter
* Indice de la page
*/
private int index;
private final int index;
/**
* TODO A compléter
* Label contenant limage de la page
*/
private JLabel image;
private final JLabel image;
/**
* TODO A compléter
* Hauteur de la page
*/
private int hauteur;
/**
* TODO A compléter
* Largeur de la page
*/
private int largeur;
/**
* TODO A compléter
* @param document
* @param index
* @throws IllegalArgumentException
* Position X de la page dans son panel
*/
public Page(PDDocument document, int index) throws IllegalArgumentException {
if (!isValid(document, index)) throw new IllegalArgumentException();
// TODO
private int positionX;
/**
* Position Y de la page dans son panel
*/
private int positionY;
/**
* Crée une page virtuellement pour lafficher avec java swing
*
* @param document Document pdf
* @param index indice de la page
* @throws IllegalArgumentException Si les arguments ne sont pas valides
* @throws IOException Si la page nas pas pu être lue
*/
public Page(PDDocument document, int index) throws
IllegalArgumentException,
IOException {
if (!isValid(document, index)) {
throw new IllegalArgumentException();
}
this.index = index;
this.image = generateImage(document);
positionX = 0;
positionY = 0;
}
/**
* TODO A compléter
* @param document
* @param index
* @return
* Prédicat qui vérifie si une page est valide
* Le document ne doit pas être null et lindex doit être compris entre 0
* et le nombre de pages du pdf.
*
* @param document Document pdf
* @param index indice de la page
* @return true si le prédicat est vérifié, false sinon
*/
private boolean isValid(PDDocument document, int index) {
return document != null
&& 0 <= index && index < document.getNumberOfPages();
return document != null && 0 <= index
&& index < document.getNumberOfPages();
}
/**
* TODO A compléter
* @param positionX
* @param positionY
* Génère une image de la page
*
* @param document Document PDF
* @return JLabel contenant la page sous forme dimage
* @throws IOException En cas derreur de lecture
*/
private JLabel generateImage(PDDocument document) throws IOException {
PDFRenderer pdfRenderer = new PDFRenderer(document);
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(this.index,
300,
ImageType.RGB);
this.largeur = bufferedImage.getWidth();
this.hauteur = bufferedImage.getHeight();
ImageIcon icon = new ImageIcon(
bufferedImage.getScaledInstance(largeur, hauteur,
Image.SCALE_SMOOTH));
JLabel result = new JLabel("", SwingConstants.LEADING);
result.setIcon(icon);
return result;
}
/**
* Positionne la page dans son Panel
*
* @param positionX Position X de la page
* @param positionY Position Y de la page
*/
public void setPosition(int positionX, int positionY) {
// TODO
this.positionX = positionX;
this.positionY = positionY;
image.setLocation(positionX, positionY);
}
/**
* TODO A compléter
* @return
* @return Le label contenant limage de la page
*/
public JLabel getImage() {
return image;
}
/**
* @return La hauteur de la page
*/
public int getHauteur() {
return hauteur;
}
/**
* @return La largeur de la page
*/
public int getLargeur() {
return largeur;
}
}
+66 -14
View File
@@ -7,10 +7,10 @@
package lecteur_pdf.document;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.swing.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
/**
@@ -20,41 +20,93 @@ import java.util.ArrayList;
* @author Tristan NOGARET
* @author Lucàs VABRE
* @author Noé VILLENEUVE
* @version 1.0
*/
public class Pdf {
/** Espacement entre chaque page */
/**
* Espacement entre chaque page
*/
public static final int OFFSET_PAGES = 10; // px
/** Document PDF chargé */
private PDDocument document;
/**
* Document PDF chargé
*/
private final PDDocument document;
/** Le nombre de pages du document PDF */
/**
* Le nombre de pages du document PDF
*/
private int nbPages;
/** Les pages du PDF sous forme dimages */
private ArrayList<Page> page;
/**
* Les pages du PDF sous forme dimages
*/
private final ArrayList<Page> pages;
private int currentPositionY;
/**
* Crée un document PDF qui est capable d’être affiché dans une fenêtre
*
* @param fichier Le fichier PDF que lon veut ouvrir
* @throws IllegalArgumentException si le fichier nexiste pas
*/
public Pdf(File fichier) {
// TODO
public Pdf(File fichier) throws IOException {
if (!fichier.exists()) {
throw new IllegalArgumentException();
}
this.pages = new ArrayList<>();
this.document = PDDocument.load(fichier);
this.nbPages = 0;
this.currentPositionY = 0;
this.loadPages();
}
public int getNbPages() {
return nbPages;
/**
* Charge toutes les pages du document PDF et les stocke dans la liste
*/
private void loadPages() {
for (nbPages = 0; nbPages < document.getNumberOfPages(); nbPages++) {
try {
addPage(new Page(document, nbPages));
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Ajoute une page dans la liste
*
* @param page Page à ajouter dans la liste
*/
private void addPage(Page page) {
pages.add(page);
page.setPosition(0, currentPositionY);
currentPositionY += (page.getHauteur() + OFFSET_PAGES);
}
/**
* @return un panel scrollable contenant toutes les pages du PDF
*/
public JScrollPane getRenderView() {
// TODO
return null; // Bouchon
JPanel panel = new JPanel();
JScrollPane scrollPane = new JScrollPane(panel);
for (Page page : pages) {
panel.add(page.getImage());
}
return scrollPane;
}
/**
* @return Le nombre de pages chargées
*/
public int getNbPages() {
return nbPages;
}
}
+19 -5
View File
@@ -1,6 +1,6 @@
/*
* PageTest.java, 17/11/2021
* IUT Rodez 2021-2021, INFO2
* PageTest.java, 22/11/2021
* IUT Rodez 2021-2022, INFO 2
* pas de copyright, aucun droits
*/
@@ -11,15 +11,13 @@ import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* TODO class comment
* Tests de la classe {@link Page}
*
* @author Léo FRANCH
* @author Tristan NOGARET
* @author Lucàs VABRE
* @author Noé VILLENEUVE
* @version 1.0
*/
class PageTest {
@Test
@@ -29,4 +27,20 @@ class PageTest {
@Test
void getImage() {
}
@Test
void testSetPosition() {
}
@Test
void testGetImage() {
}
@Test
void getHauteur() {
}
@Test
void getLargeur() {
}
}
+17 -3
View File
@@ -11,15 +11,13 @@ import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* TODO class comment
* Tests de la classe {@link Pdf}
*
* @author Léo FRANCH
* @author Tristan NOGARET
* @author Lucàs VABRE
* @author Noé VILLENEUVE
* @version 1.0
*/
class PdfTest {
@Test
@@ -29,4 +27,20 @@ class PdfTest {
@Test
void getRenderView() {
}
@Test
void testGetRenderView() {
}
@Test
void testGetNbPages() {
}
@Test
void testGetRenderView1() {
}
@Test
void testGetNbPages1() {
}
}