Files
SAE32_2025/docjava/fr/iutfbleau/sae/ConverterController.html
T

329 lines
21 KiB
HTML
Raw Normal View History

2026-01-07 19:27:03 +01:00
<!DOCTYPE HTML>
<html lang="fr">
<head>
<!-- Generated by javadoc (24) on Wed Jan 07 19:25:35 CET 2026 -->
<title>ConverterController</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2026-01-07">
<meta name="description" content="declaration: package: fr.iutfbleau.sae, class: ConverterController">
<meta name="generator" content="javadoc/ClassWriter">
<link rel="stylesheet" type="text/css" href="../../../resource-files/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../resource-files/stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script-files/script.js"></script>
<script type="text/javascript" src="../../../script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-files/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">const pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../search.html">Search</a></li>
<li><a href="../../../help-doc.html#class">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list">
<li><a href="package-summary.html">fr.iutfbleau.sae</a></li>
<li><a href="ConverterController.html" class="current-selection">ConverterController</a></li>
</ol>
<div class="nav-list-search">
<input type="text" id="search-input" disabled placeholder="Search" aria-label="Search in documentation" autocomplete="off">
<input type="reset" id="reset-search" disabled value="Reset">
</div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<nav role="navigation" class="toc" aria-label="Table of contents">
<div class="toc-header">Contents&nbsp;
<input type="text" class="filter-input" disabled placeholder="Filter" aria-label="Filter table of contents" autocomplete="off">
<input type="reset" class="reset-filter" disabled value="Reset">
</div>
<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span>&#10094;</button><button class="show-sidebar">&#10095;<span>&nbsp;Show sidebar</span></button>
<ol class="toc-list">
<li><a href="#" tabindex="0">Description</a></li>
<li><a href="#constructor-summary" tabindex="0">Constructor Summary</a></li>
<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
<li><a href="#constructor-detail" tabindex="0">Constructor Details</a>
<ol class="toc-list">
<li><a href="#%3Cinit%3E(fr.iutfbleau.sae.ConverterWindow,java.lang.String,java.lang.String)" tabindex="0">ConverterController(ConverterWindow, String, String)</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#loadImage(java.io.File)" tabindex="0">loadImage(File)</a></li>
<li><a href="#computeFrequencies()" tabindex="0">computeFrequencies()</a></li>
<li><a href="#computeHuffman()" tabindex="0">computeHuffman()</a></li>
<li><a href="#computeCanonical()" tabindex="0">computeCanonical()</a></li>
<li><a href="#saveAsPIF(java.lang.String)" tabindex="0">saveAsPIF(String)</a></li>
<li><a href="#saveViaBtn()" tabindex="0">saveViaBtn()</a></li>
<li><a href="#conversionProcess()" tabindex="0">conversionProcess()</a></li>
<li><a href="#getImage()" tabindex="0">getImage()</a></li>
</ol>
</li>
</ol>
</nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class ConverterController" class="title">Class ConverterController</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">fr.iutfbleau.sae.ConverterController</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="horizontal-scroll">
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ConverterController</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
<div class="block">Controleur pour la conversion d'images au format PIF.
Gere le chargement des images, le calcul des frequences,
la generation des codes de Huffman et la sauvegarde au format PIF.</div>
</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(fr.iutfbleau.sae.ConverterWindow,java.lang.String,java.lang.String)" class="member-name-link">ConverterController</a><wbr>(<a href="ConverterWindow.html" title="class in fr.iutfbleau.sae">ConverterWindow</a>&nbsp;fen,
<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;in,
<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;out)</code></div>
<div class="col-last even-row-color">
<div class="block">Construit un nouveau controleur de conversion.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#computeCanonical()" class="member-name-link">computeCanonical</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Genere les codes canoniques a partir des codes de Huffman.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#computeFrequencies()" class="member-name-link">computeFrequencies</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Calcule les frequences d'apparition de chaque valeur RGB dans l'image.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#computeHuffman()" class="member-name-link">computeHuffman</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Genere les arbres de Huffman pour chaque composante RGB.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#conversionProcess()" class="member-name-link">conversionProcess</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Lance le processus complet de conversion d'une image au format PIF.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="mpif/RGBImage.html" title="class in fr.iutfbleau.sae.mpif">RGBImage</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getImage()" class="member-name-link">getImage</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Retourne l'image actuellement chargee.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadImage(java.io.File)" class="member-name-link">loadImage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;file)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Charge une image depuis un fichier et la convertit en RGBImage.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#saveAsPIF(java.lang.String)" class="member-name-link">saveAsPIF</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;pathfile)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sauvegarde l'image au format PIF.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#saveViaBtn()" class="member-name-link">saveViaBtn</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Gere la sauvegarde via le bouton de l'interface.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(fr.iutfbleau.sae.ConverterWindow,java.lang.String,java.lang.String)">
<h3>ConverterController</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ConverterController</span><wbr><span class="parameters">(<a href="ConverterWindow.html" title="class in fr.iutfbleau.sae">ConverterWindow</a>&nbsp;fen,
<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;in,
<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;out)</span></div>
<div class="block">Construit un nouveau controleur de conversion.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>fen</code> - la fenetre de l'interface graphique</dd>
<dd><code>in</code> - le chemin du fichier d'entree (peut etre null)</dd>
<dd><code>out</code> - le chemin du fichier de sortie (peut etre null)</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="loadImage(java.io.File)">
<h3>loadImage</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadImage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/io/File.html" title="class or interface in java.io" class="external-link">File</a>&nbsp;file)</span></div>
<div class="block">Charge une image depuis un fichier et la convertit en RGBImage.
Extrait les composantes RGB de chaque pixel et met a jour l'interface.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>file</code> - le fichier image a charger</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="computeFrequencies()">
<h3>computeFrequencies</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">computeFrequencies</span>()</div>
<div class="block">Calcule les frequences d'apparition de chaque valeur RGB dans l'image.
Met a jour l'interface avec les tables de frequences calculees.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="computeHuffman()">
<h3>computeHuffman</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">computeHuffman</span>()</div>
<div class="block">Genere les arbres de Huffman pour chaque composante RGB.
Cree les codes binaires optimaux bases sur les frequences calculees.
Met a jour l'interface avec les codes de Huffman generes.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="computeCanonical()">
<h3>computeCanonical</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">computeCanonical</span>()</div>
<div class="block">Genere les codes canoniques a partir des codes de Huffman.
Les codes canoniques sont une forme normalisee des codes de Huffman
qui facilite le stockage et le decodage.
Met a jour l'interface avec les codes canoniques generes.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="saveAsPIF(java.lang.String)">
<h3>saveAsPIF</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">saveAsPIF</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;pathfile)</span></div>
<div class="block">Sauvegarde l'image au format PIF.
Verifie que l'image et les codes canoniques sont disponibles avant
d'effectuer la sauvegarde.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>pathfile</code> - le chemin du fichier de sortie</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="saveViaBtn()">
<h3>saveViaBtn</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">saveViaBtn</span>()</div>
<div class="block">Gere la sauvegarde via le bouton de l'interface.
Si un chemin de sortie est defini, sauvegarde directement.
Sinon, ouvre un selecteur de fichier pour que l'utilisateur choisisse
l'emplacement de sauvegarde.
La sauvegarde est effectuee dans un thread separe pour ne pas bloquer
l'interface graphique.</div>
</div>
</section>
</li>
<li>
<section class="detail" id="conversionProcess()">
<h3>conversionProcess</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">conversionProcess</span>()</div>
<div class="block">Lance le processus complet de conversion d'une image au format PIF.
Etapes :
1. Chargement de l'image (depuis un fichier ou via selecteur)
2. Calcul des frequences
3. Generation des codes de Huffman
4. Generation des codes canoniques
5. Sauvegarde (automatique ou via bouton selon les parametres)</div>
</div>
</section>
</li>
<li>
<section class="detail" id="getImage()">
<h3>getImage</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="mpif/RGBImage.html" title="class in fr.iutfbleau.sae.mpif">RGBImage</a></span>&nbsp;<span class="element-name">getImage</span>()</div>
<div class="block">Retourne l'image actuellement chargee.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>l'image RGB chargee, ou null si aucune image n'est chargee</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>