Files
SAE32_2025/docjava/fr/iutfbleau/sae/mpif/PIFReader.html
T
2026-01-07 19:27:03 +01:00

347 lines
26 KiB
HTML

<!DOCTYPE HTML>
<html lang="fr">
<head>
<!-- Generated by javadoc (24) on Wed Jan 07 19:25:35 CET 2026 -->
<title>PIFReader</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.mpif, class: PIFReader">
<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.mpif</a></li>
<li><a href="PIFReader.html" class="current-selection">PIFReader</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()" tabindex="0">PIFReader()</a></li>
</ol>
</li>
<li><a href="#method-detail" tabindex="0">Method Details</a>
<ol class="toc-list">
<li><a href="#decodePifFile(java.io.File)" tabindex="0">decodePifFile(File)</a></li>
<li><a href="#readHeader(fr.iutfbleau.sae.mpif.BitInputStream)" tabindex="0">readHeader(BitInputStream)</a></li>
<li><a href="#readCanonicalTables(fr.iutfbleau.sae.mpif.BitInputStream)" tabindex="0">readCanonicalTables(BitInputStream)</a></li>
<li><a href="#rebuildCanonical(int%5B%5D)" tabindex="0">rebuildCanonical(int[])</a></li>
<li><a href="#buildDecodageTree(java.util.Map)" tabindex="0">buildDecodageTree(Map)</a></li>
<li><a href="#decodePixels(fr.iutfbleau.sae.mpif.BitInputStream,fr.iutfbleau.sae.mpif.DecodeNode,fr.iutfbleau.sae.mpif.DecodeNode,fr.iutfbleau.sae.mpif.DecodeNode)" tabindex="0">decodePixels(BitInputStream, DecodeNode, DecodeNode, DecodeNode)</a></li>
<li><a href="#isPIFFile(java.io.File)" tabindex="0">isPIFFile(File)</a></li>
</ol>
</li>
</ol>
</nav>
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<h1 title="Class PIFReader" class="title">Class PIFReader</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.mpif.PIFReader</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">PIFReader</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">Cette classe permet de lire un fichier .pif et de reconstruire l'image d'origine.
Elle lit d'abord l'en-tête puis les longueurs des codes canoniques.
Ensuite elle reconstruit les codes, construit les arbres de décodage
et décode les pixels un par un pour obtenir l'image RGB finale.
Elle est utilisée par le programme Viewer pour afficher une image .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()" class="member-name-link">PIFReader</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</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-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static 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><a href="DecodeNode.html" title="class in fr.iutfbleau.sae.mpif">DecodeNode</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#buildDecodageTree(java.util.Map)" class="member-name-link">buildDecodageTree</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<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>,<wbr><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&nbsp;codes)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Construit un arbre de décodage à partir des codes canoniques.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="RGBImage.html" title="class in fr.iutfbleau.sae.mpif">RGBImage</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#decodePifFile(java.io.File)" class="member-name-link">decodePifFile</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">Cette methode sert de point d'entrer pour le decodage d'un pif.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="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="#decodePixels(fr.iutfbleau.sae.mpif.BitInputStream,fr.iutfbleau.sae.mpif.DecodeNode,fr.iutfbleau.sae.mpif.DecodeNode,fr.iutfbleau.sae.mpif.DecodeNode)" class="member-name-link">decodePixels</a><wbr>(<a href="BitInputStream.html" title="class in fr.iutfbleau.sae.mpif">BitInputStream</a>&nbsp;in,
<a href="DecodeNode.html" title="class in fr.iutfbleau.sae.mpif">DecodeNode</a>&nbsp;red,
<a href="DecodeNode.html" title="class in fr.iutfbleau.sae.mpif">DecodeNode</a>&nbsp;green,
<a href="DecodeNode.html" title="class in fr.iutfbleau.sae.mpif">DecodeNode</a>&nbsp;blue)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Décode l'ensemble des pixels de l'image en utilisant les trois arbres
correspondant aux composantes rouge, verte et bleue.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isPIFFile(java.io.File)" class="member-name-link">isPIFFile</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;f)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Vérifie si un fichier est un fichier .pif valide.</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="#readCanonicalTables(fr.iutfbleau.sae.mpif.BitInputStream)" class="member-name-link">readCanonicalTables</a><wbr>(<a href="BitInputStream.html" title="class in fr.iutfbleau.sae.mpif">BitInputStream</a>&nbsp;in)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Lit les longueurs des code canoniques pour les trois composantes
rouge, vert et bleu.</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="#readHeader(fr.iutfbleau.sae.mpif.BitInputStream)" class="member-name-link">readHeader</a><wbr>(<a href="BitInputStream.html" title="class in fr.iutfbleau.sae.mpif">BitInputStream</a>&nbsp;in)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Lit l'en-tête du fichier .pif.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a><wbr>&lt;<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>,<wbr><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#rebuildCanonical(int%5B%5D)" class="member-name-link">rebuildCanonical</a><wbr>(int[]&nbsp;lengths)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Reconstruit les codes canoniques à partir des longueurs stockées dans le fichier.</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;()">
<h3>PIFReader</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PIFReader</span>()</div>
</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="decodePifFile(java.io.File)">
<h3>decodePifFile</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="RGBImage.html" title="class in fr.iutfbleau.sae.mpif">RGBImage</a></span>&nbsp;<span class="element-name">decodePifFile</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>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
<div class="block">Cette methode sert de point d'entrer pour le decodage d'un pif.
Elle Lit complètement un fichier .pif et renvoie l'image décodée.
Elle lit l'en-tête, récupère les longueurs des codes,
reconstruit les codes canoniques puis les arbres nécessaires
au décodage. Enfin elle lit pixel par pixel.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>file</code> - fichier .pif à décoder</dd>
<dt>Returns:</dt>
<dd>l'image obtenue après décodage</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></code> - si le fichier est invalide ou si une erreur survient pendant la lecture</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="readHeader(fr.iutfbleau.sae.mpif.BitInputStream)">
<h3>readHeader</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">readHeader</span><wbr><span class="parameters">(<a href="BitInputStream.html" title="class in fr.iutfbleau.sae.mpif">BitInputStream</a>&nbsp;in)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Lit l'en-tête du fichier .pif. On y récupère la largeur
et la hauteur de l'image, chacune codée sur 16 bits.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>in</code> - flux binaire à lire</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - si la lecture échoue</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="readCanonicalTables(fr.iutfbleau.sae.mpif.BitInputStream)">
<h3>readCanonicalTables</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">readCanonicalTables</span><wbr><span class="parameters">(<a href="BitInputStream.html" title="class in fr.iutfbleau.sae.mpif">BitInputStream</a>&nbsp;in)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Lit les longueurs des code canoniques pour les trois composantes
rouge, vert et bleu. Chaque table contient 256 valeurs sur 5 bits.
Ces longueurs permettront de reconstruire les vrais codes plus tard</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>in</code> - flux binaire d'entrée pdfpdof</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - si erreur de lecture se produit</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="rebuildCanonical(int[])">
<h3>rebuildCanonical</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<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>,<wbr><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">rebuildCanonical</span><wbr><span class="parameters">(int[]&nbsp;lengths)</span></div>
<div class="block">Reconstruit les codes canoniques à partir des longueurs stockées dans le fichier.
On trie d'abord les paires (symbole, longueur), puis on génère les codes
en appliquant la règle des codes canoniques.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>lengths</code> - tableau contenant les longueurs des codes pour 256 symboles</dd>
<dt>Returns:</dt>
<dd>une table qui associe un code binaire (sous forme de texte) à son symbole</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="buildDecodageTree(java.util.Map)">
<h3>buildDecodageTree</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="DecodeNode.html" title="class in fr.iutfbleau.sae.mpif">DecodeNode</a></span>&nbsp;<span class="element-name">buildDecodageTree</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<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>,<wbr><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&nbsp;codes)</span></div>
<div class="block">Construit un arbre de décodage à partir des codes canoniques.
Chaque code binaire définit un chemin dans l'arbre jusqu'à une feuille
contenant le symbole à décoder.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>codes</code> - dictionnaire associant le code binaire au symbole</dd>
<dt>Returns:</dt>
<dd>la racine de l'arbre de décodage</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="decodePixels(fr.iutfbleau.sae.mpif.BitInputStream,fr.iutfbleau.sae.mpif.DecodeNode,fr.iutfbleau.sae.mpif.DecodeNode,fr.iutfbleau.sae.mpif.DecodeNode)">
<h3>decodePixels</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="RGBImage.html" title="class in fr.iutfbleau.sae.mpif">RGBImage</a></span>&nbsp;<span class="element-name">decodePixels</span><wbr><span class="parameters">(<a href="BitInputStream.html" title="class in fr.iutfbleau.sae.mpif">BitInputStream</a>&nbsp;in,
<a href="DecodeNode.html" title="class in fr.iutfbleau.sae.mpif">DecodeNode</a>&nbsp;red,
<a href="DecodeNode.html" title="class in fr.iutfbleau.sae.mpif">DecodeNode</a>&nbsp;green,
<a href="DecodeNode.html" title="class in fr.iutfbleau.sae.mpif">DecodeNode</a>&nbsp;blue)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block">Décode l'ensemble des pixels de l'image en utilisant les trois arbres
correspondant aux composantes rouge, verte et bleue.
Chaque symbole est lu en parcourant l'arbre bit par bit.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>in</code> - flux binaire contenant les données des pixels</dd>
<dd><code>red</code> - arbre de décodage pour le rouge</dd>
<dd><code>green</code> - arbre pour le vert</dd>
<dd><code>blue</code> - arbre pour le bleu</dd>
<dt>Returns:</dt>
<dd>l'image RGB reconstruite</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/24/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - si un symbole est invalide ou si la lecture échoue</dd>
</dl>
</div>
</section>
</li>
<li>
<section class="detail" id="isPIFFile(java.io.File)">
<h3>isPIFFile</h3>
<div class="horizontal-scroll">
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isPIFFile</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;f)</span></div>
<div class="block">Vérifie si un fichier est un fichier .pif valide.
On teste l'existence du fichier, son extension et une taille minimale
permettant au moins de contenir l'en-tête et les tables de longueurs.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>f</code> - fichier à tester</dd>
<dt>Returns:</dt>
<dd>true si le fichier semble être un .pif valide, sinon false</dd>
</dl>
</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</body>
</html>