From 2dbef96484f98f9a2b6e01f3fbcd88695b0e7781 Mon Sep 17 00:00:00 2001 From: anhdire Date: Sat, 27 Dec 2025 14:19:04 +0100 Subject: [PATCH] Finalisation des interfaces pour les codes + test avec une image --- PlaningDeTavail.md | 8 +-- .../iutfbleau/sae/ConverterController.class | Bin 1867 -> 1960 bytes build/fr/iutfbleau/sae/Convertisseur.class | Bin 1416 -> 1391 bytes .../sae/mhuffman/CanonicalCode$1.class | Bin 1293 -> 1308 bytes .../sae/mhuffman/CanonicalCode.class | Bin 2462 -> 2503 bytes .../iutfbleau/sae/mhuffman/HuffmanNode.class | Bin 0 -> 1126 bytes .../iutfbleau/sae/mhuffman/HuffmanTree.class | Bin 0 -> 3172 bytes build/fr/iutfbleau/sae/mpif/PIFWriter.class | Bin 0 -> 645 bytes .../iutfbleau/sae/util/BitOutputStream.class | Bin 0 -> 1414 bytes .../iutfbleau/sae/util/BitinputStream.class | Bin 0 -> 1169 bytes build/fr/iutfbleau/sae/util/ByteUtils.class | Bin 0 -> 567 bytes build/fr/iutfbleau/sae/util/GestErreur.class | Bin 0 -> 216 bytes .../sae/vconverter/ConverterWindow.class | Bin 3387 -> 3387 bytes src/fr/iutfbleau/sae/ConverterController.java | 4 ++ src/fr/iutfbleau/sae/Convertisseur.java | 58 +++++++++++++++--- .../iutfbleau/sae/mhuffman/CanonicalCode.java | 23 +++---- .../iutfbleau/sae/util/BitOutputStream.java | 4 +- src/fr/iutfbleau/sae/util/BitinputStream.java | 5 +- .../sae/vconverter/ConverterWindow.java | 4 +- 19 files changed, 75 insertions(+), 31 deletions(-) create mode 100644 build/fr/iutfbleau/sae/mhuffman/HuffmanNode.class create mode 100644 build/fr/iutfbleau/sae/mhuffman/HuffmanTree.class create mode 100644 build/fr/iutfbleau/sae/mpif/PIFWriter.class create mode 100644 build/fr/iutfbleau/sae/util/BitOutputStream.class create mode 100644 build/fr/iutfbleau/sae/util/BitinputStream.class create mode 100644 build/fr/iutfbleau/sae/util/ByteUtils.class create mode 100644 build/fr/iutfbleau/sae/util/GestErreur.class diff --git a/PlaningDeTavail.md b/PlaningDeTavail.md index 55c0985..dfaf499 100644 --- a/PlaningDeTavail.md +++ b/PlaningDeTavail.md @@ -83,12 +83,12 @@ Objectif : Écriture du format `.pif` + finalisation convertisseur | US | Assigné | Statut | | Description | |------------|---------|--------|-----|-------------| -| US-D2 | AA | TODO | 🟥 | Vérifier BitOutputStream avec flux réel | +| US-D2 | AA | DONE | 🟩 | Vérifier BitOutputStream avec flux réel | | US-C5 | AD | DOING | 🟨 | Implémenter PIFWriter (header + tables + pixels compressés) | | US-U6 | AD | DOING | 🟨 | Exporter une image en `.pif` | -| US-P1 | AA | TODO | 🟥 | Finaliser affichage des fréquences | -| US-P2 | AA | TODO | 🟥 | Finaliser affichage codes Huffman | -| US-P3 | AA | TODO | 🟥 | Finaliser affichage codes canoniques | +| US-P1 | AA | DONE | 🟩 | Finaliser affichage des fréquences | +| US-P2 | AA | DONE | 🟩 | Finaliser affichage codes Huffman | +| US-P3 | AA | DONE | 🟩 | Finaliser affichage codes canoniques | | US-U7 | AD | DOING | 🟨 | Implémenter l’aperçu (PreviewPanel) | | US-D3..D6 | YB | TODO | 🟥 | Lier interface convertisseur -> compression | diff --git a/build/fr/iutfbleau/sae/ConverterController.class b/build/fr/iutfbleau/sae/ConverterController.class index 8d74b30bf27ea69b2b631a68b3757955d03d4848..286a2d19d9983a11a55b39a69874f22e18e41426 100644 GIT binary patch delta 102 zcmX@jw}PMR)W2Q(7#J8F8R9l_39<5Vq^Fj6<|d}6GBT)WXii?pEIiqpiGQ*b>tsge z&FffaFd9TNFfxQNFfhn6FfuSQFfg!cZDG*fz`(%3$PmiFz`zC;3}Rqph+$x0U}A^` E044PkqyPW_ delta 36 scmZ3%f0~c$)W2Q(7#J8F8Dcha39(N0W1YyzwD|$+3`SN41}27R0OQLFR{#J2 diff --git a/build/fr/iutfbleau/sae/Convertisseur.class b/build/fr/iutfbleau/sae/Convertisseur.class index f52f8d1e87add8b50f26f1649e3f353ca2d02b2a..91b1b85f2df5aa08d80017f26d236da8f957dbcb 100644 GIT binary patch delta 956 zcmeC+e$T~q>ff$?3=9m83_cUNF7or0q~;dr7i8p@q)%pN)T`%W;9?NtVGw7K zU}WG(Pc8AxO-xT^WKhx2^hqny&nzuTOUg-2EY&YgOx4fL1WD=#xjTVXS+g@pF*0ai zD$6KMOUq5n(|0RMEi6sVORfw_Ov*{+VvuBD1`)D63~~(ej0^(F`MLE4r6s9uMftg4 z6B!v)H3(a)83r;%k%vKvL79<(Ej_g)C^dzVfki_z+7l$B%EO=rk^yl5E=<46HaMIkzzwTXBI!*g+!PlH4E> z9wyiTPuD^eo3xv40cumlKhf9AcmkMKS+h0 zm5{b%y?~^kq|i17M}#Mn7$g`N82A`C7z7yv8AKRF7(^K)8N?Xm85|ij7@QdN8Jro+ z7+e@^8C)4$7~B~A7`zxF8N3-17b`i6Mqz4?`jYBZC(M0|OI-HvmGO)Nud+ delta 980 zcmaFQ)xphm>ff$?3=9m83;`3lF6wAITgCV$rY9C>=EXSshXw`5IE987#RNOL1{;G& zW21N@10&OzlGNOSiLdnP*%`zb83eNu%M$fVOEPoxJravEd=m?}7(^MExfmoFq}Umx zc^G6EWMQgu67$maJ@ZOZ(^HEW8Q9Abb4pYF(-;}VG(0tZz~&&Uu;yTpXJlY8G%z&a zW>92MVrNk1VNhXEWn|z5tE~rH>YG@=$iQ4sTEfU+p@C$Ge^ORza)~vj2(nF3MH~$3 zj10^Mh6WrAnv4w0h9HJEBLkCxAqRslBLkxW2ZKH%1CyZvGlQpS88d^D2NyGgu(YNJ z7Xv$k2@iuQgBc@(U~y`Rb7Ee8US@J)&g9)p7F-}%3myhb2CK=EObYd!3^ok5>Es1Q~c4#2Ew_KP>682TAx8KyDFG0bII}yiv>47ZXfs@9&||pG cV8rl*!I diff --git a/build/fr/iutfbleau/sae/mhuffman/CanonicalCode$1.class b/build/fr/iutfbleau/sae/mhuffman/CanonicalCode$1.class index efee3c96a13605e42c079e744bb1c3c971230a03..e6fc9bda50dc7f0768a77b7baf541956b9d09da3 100644 GIT binary patch delta 63 zcmeC>n!~lBl37qe!zU}TEK$F-Br`|fH?hEaay4@;qsZi+%msoH47?1I4AKnJ42ldg T3~CH=ldD+V8AT=^V(|t5JB|* z@G|gCd~3+T&LF_Uz{(&vS&dPSMVOI6b8-WtI**DW7lROkC`d+Zay6qNw*-SEJA)Jt zgEWK8_(o{wUW(`eGZUzGe8y*H*kRcrD zsSqi4275*Z0kA{C#srrXW#*-GG1xIU@-R4oOkvAO%}eJg$pD$`!o%Ro;5ONXS(nX& zhryGvV(Kt59AGf8VwYs!$zTLxn{Hz;H{$?ttwCJ7Z43@(oT4nEoT98L z6=p1=EISySt+*t)wlO$}axP-vm*m>T;LgBc#kKtZTU}9(9Sq)*Tss;3nHj=cSQte) z%~+TJpP;*efq{Vu>=!o%K?VkfdI1JL1`!4+1|25p8?20ey)27QKZ1|x=<48{y|7)%%zFqkqdW-w=nWnf?kU|{*rV8Fo6&JfPd zz{Sp>$j-pU$jHv1&cN`W!3C5#(Ztyq3_$XB^$ZN6{~5#?*idycFfhb{T^i58$dJI0 z2nlNjH3lXIW(EcZK5dyD4Bk5#f|(c&FxY|ogd9IMP`ybEj10*PDNwzdP`!dEdgHb+ zIIKa7Uk9lER0bA?G_Whu88R3k@h-%W$-uzC!NACn!@$Up#Zbh+z#zrI%pe3xLktWI T1`J#b#cZ4mB@AT@6%3L9wT$0$ delta 1249 zcmX>uJWrVG)W2Q(7#J8F8R{o;nWzY6C6*=XmzHGa=zAmnV&ot&SN>XVw6UXoGF$iVM|(C3?2U=30)$ipDSz|Y9QmzVGPn3t~anOBmUo?67kV8`Id!{Ef=%*eoznO72)m{Xd{$iS?j>B-Gt$>7Sv;07{; zBRv%&#m?Zt$RGd?2Cy-~B}JKe>0Au%3|>48-XK%ha#Hisc}g-sCj0U*_%ZlTzQm-< z7RbX8#1K50mD!cUjvauBmBhZsX74?`3~^yGSGXAUujSRRHrhWN>+nDzM? z890M8)AJHbN{dn%8O$c1WU-j6!J^3|s4+Q-MTyBmWAX_WXI0Mh)DlPpF*2}dcxrkw zG6<%pmN=ut#^k%KuHuD^3`_=${A>)xTnr@)rR)r4ASabiwq(1_Qq9PqI(Z(O_+)){ z0mj?@j?~)1z_pV>l#yXOgS3zKZU(tXt?dj7I~bIiZJF(~cQR-) zGFY)lvg~BgXJnYkkOg9yGBO-su(V>8WZlVN4Px7EV{kBI194qIT=#7Zo@VSaqU^FM z6}B=v7<{ZaBssP*c#5(wV&IqLsNcm9z`$U|vHbsAtt|`!qHH@DLL@nMGDI*lgtss; zin7}+|33*NvjH3~An!Oa2rw`(@G}T92s6ksC^5)0C^INBs500ys4@64s58VeXfmWQ zXfb3l=rWWr=rJ@f7&1&`Fk+a(V9YR`!GvKJgBe2_0|SE{1IvGgdQApab_Q;C1}#QL zb_N3mhW`u>44ghk+lYn=`E_wXifbFF6$?D#*hi#30Pbz><@iR>H`j z?n9K>)*!8-JPcwWt*k|v=@}(l3>*v+JPeWyQj832nZ-V-iD_WRN3k==Ffzy^eCU~z zlbW8G6I_y5lImKKoLW$lnV-kOAjim{?~|xdmY9=TTBMMto?2X@kaBosT4r8mszPCD zszO12X^}!sYOz9EYH4OpPHM3p7lSl|0w@R-85u-1d=ORymlS2@rCV!;F*2}fczS|p z7H4pf@cU%urTUfTCZ!gIBqrsgGBN~e5b0$im4Phd4K7Jc&h||#fZD;6o?7At3w3a) zcrr4ur>B6b3~G z4hAL$1_l-eCQu4uU|?VZr3El8#2^f&#lSQ>10w?~gAxNHgE9jHgDWVRGB7YmYHep= z)RNxHz^)~;m4R1_aVvuWh!EMxz`(%Bpu)hwAjQDOz`&r#z`~%TF@)P1wr7i!fD;ft7)Q!JdJI z!GVF3!I6QF!HGed!I^;(l+K_gnlmsmFfuSOh-htL5ID}jr?rJaU?Ai6>r7#TDfw6G`@*Z>az zh|*XFMh0!HN=49>rZF%w=)fId&%g|Jp_tY-2Ju-8yt^5sBZXwQGsy4P+QPsNauE|a focX|^SH!^1P|P66Pzv@BGXtX_10#bj*t2>76WQG) literal 0 HcmV?d00001 diff --git a/build/fr/iutfbleau/sae/mhuffman/HuffmanTree.class b/build/fr/iutfbleau/sae/mhuffman/HuffmanTree.class new file mode 100644 index 0000000000000000000000000000000000000000..7e979545e5ff49e2011ab15f24e43619495269db GIT binary patch literal 3172 zcmX^0Z`VEs1_nold0Y%k49x5dEIbUX3~Y=H0$GV=iTXK-dFlH8Nm;4MC5#MgHko;u zC3cJq%o>_uoD3Wcoa_u-JPh0nJd6ygX+`>(r6p-eIjM=I`o)Q<`negUX=%BMdHNm@ zI;1Eym63s^C_lf1kwM*upnAXjlvHbW20lgxVX#w5OEPox9gB(*D}6GHOSl+#L9P`f z#%7R7TnqvX!XU4SFfy=eczSAvaWjZ9h_f?D@GwX+NHH?-AuIuz&&a@>n3BTCAgbX5 zmOu&!Yt1Mj1_lNh9tK$kIYtJq#DapHO2=Z)yb?wR6%9>@da!HLO7oISGV}BFL-IZI zO5C74YisN;!YFHyPt|xB)EP7w8CZ(*i%J+7B#})+QVIzcEglAK1|5*%%&JsybbEr#(Bomy zXE0!7U@J<^%`Zy@1&$}wO61@H1+@_s-KiPI&S1yLAczQlkHq2(-^2ng z23rPZQ2KV{VQ^w_W@KPZ&QD1#W@O-p7y^z0-^2oI4hC071_mw$4hDA~1`h^LMh1cO z)V$Q9#FA8JkdC0#WJU%XqJseJ5U>k_ONuh{(ycYaK)&EcQuFOasS9 z6c>X(LjXHNAP++j$mdA86{44sfh{LBFTErKWI_lJLnufUM|x^WSYl3TDi=dILj*fR zBo9LrLo_T1z&3m4m87Pp7BMogmw^=er-1_xIhLU+thpIt8RFO(;&~Vn7!ny7c)_lR z1q~wub3thdBZCDroq^4Ulq1%VKtvWnHXf>ogCUubfzbfu`cxiBLjDGMq*}Os&isdVlpFx5T+tf*%j@n8OF%K0!m<@6q%Wq>Q|bZlv)&$ zn3R*s$iN$1l9-(Bn^*wmvolmOGB8DZGBWU@q)bKzL6njTl$t@Y1@$%QP6vet$VtVJ zcnSiS@?63BrA5i9ZkZs52_V%2dZ5I@$ROa9pI=g3Qj}QWn_7~QpHeKq&9xg@`+l97Qs7nyekIkiAFLEP_=n3s~1TCC!e zpPyY?fSk~wk&NUq6pbO31*yo&iI;>}iC-@?Qo#ujYO-@;PEK%UNvbtJ8^dHShA9kF z*%_vR^2u~Y1{I7Tfw&%$b=+WqGK2QP0I}CP8Y$Rd=>bUy-AjxNJf3-ZsYT8?iN(dK z#q12T7#UPC{DdvW*cs+9GRWaq%E-V5iCzXp1`Y-$1_lOZ1}0D&h=GBD2~=G$FftT? z*@X;D3`GpZ3=9mc42%q{3?&SV45bVVjF}9q4D1XH412V;Gcal~Ze?KK&A=PEoq^w% z*-ln_-y#N8ZCSl}43fJU1R`a%W%af*2wAb{NV4o?5M^QrZ((L!{{OblE(U1^h8+y@ zI~i1&7<6_rXfiUeEMbV%VcyB0%fxViLBJ2ev|<4nr7Ov@ox#wGmD!9to9F)sgqM@N)Rl65D86*I%~|MRs#=0Oy0WnkY3_F)+V z149sl2m=E{7y}DK1Oq2SG=m^R9D^i70)sq55`zvy3WF&_9D_AO7K0~40YflD5knk9 zF+&zZ8ABOEB|{}cHNz~18ioZ7bquQ*>KWEDG%@UEXl5v9U|?`&VE@k`%)r9Vz`@Q? z!OkGY$iSfZi-DE*KZ8C4J6x2VK>&gn85q?5Gw^^Kg-{I)3=E76RSeY(OrT(Auwr0l zU}RumkkZ=CU>mue!G0@)gO=7726iErZ47Q&TNoTRfOUX8#mB(Rz`!txftz6pgDAsP zXoS`w5#6Yzy^SG7XBR^T0|Ur@?QIM>I=dM1!8}CpDlu>{FfhzvU}u=iz{fC;L78Cz zgBimj26Kkx46Y0-8G;#3fP;&bfmvAy*^clV8(8oh+)s=QbqwiH zKOt*jN7r(dftjHm9PbSbjSLJ75)8}?-3-hOO$;pztqhYG7#Z5ZWGBN622iVrkzppo JY=*fEk^r94NdN!< literal 0 HcmV?d00001 diff --git a/build/fr/iutfbleau/sae/mpif/PIFWriter.class b/build/fr/iutfbleau/sae/mpif/PIFWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..d961db1040e189decf5c63ada83e047ec29d064f GIT binary patch literal 645 zcmX^0Z`VEs1_nn4Q7#5124;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00Sb_Nbc2Klri{mjymw4|KW#8Um@#8my?g3fzKI3aAd@(QGt=`DOG=AU85t7DGsgyEEI6n< z^GZ_FQ;V#Tgn~GcsrqYa__1T*3LJMaijdnV{g~ zgNLym$Wsi84D1X{3?RV5zzB*#21W)>1_lOM21W)(1_lOJt?dkq8yOfF7#X-27#P^V zf*_^b3_MV!k_-$CEFcx=$~YJp8F(4^7?{8&f|N01Q^v!<&%nUI#2~=H$RNldgk&nn OVHlQ!lnH}1hyVa$Ntqx3 literal 0 HcmV?d00001 diff --git a/build/fr/iutfbleau/sae/util/BitOutputStream.class b/build/fr/iutfbleau/sae/util/BitOutputStream.class new file mode 100644 index 0000000000000000000000000000000000000000..6d4233d9bd98b599eb321d1db7ff028f29423946 GIT binary patch literal 1414 zcmX^0Z`VEs1_nn42QCIC24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00Sb_Nbc1|@_d&zzjp^u!#;qV&?-)VvbcisaOSlFa-(4hAkp26dlQg|wW~ z3WbzZh2s38lFU?vyi|pP)Y1}#g2ZBl!>dY)QWf$_bGR7T8F)Yr;ALbG)$l=>9$ZqC znU`*@8OF)L&mh3gAjrcY#30Pbpqf^spIKUxmXwp4SgK!~n5th|l9{9Llv(0mT2fG2 z5?oT0nwZPTzy-2B7;G~mgBZl%%zS-hMb;prMR^#+7{nPFg!7Y2QcGO(ob&UFONvU9 zK|Wz*VDtp3k>p{J0;%CH$S=+WNjPPefW&2Z7-Sjb7#TQ0cDbb%<)$(+Fh+4OC@?Ze z_@pW%WtJ$U0sKT@!%Ffzzs23u-zi9%XxQSRZD zTnvf~JX{Rw3>xeVnmi0z4BCtgA~2JXJ;unuT3(b{lFG=yqT#6-#>K$Tpv%Lc2U5=g zmT<}}0hwdK!(a%CdDgU?(&7w|G6RsX2@iuQSU5Q+zc`hVK@u7-=)tEM#>l|poS%}) z$iVNDnV0HUnwykb6q1;flgh}z8(fl@ob8)f0OfPRJzC7jzzK6jF(U)3hNmaUBrcFA zQ;XbkN-G!{xPtRbi;`2_GC@X(phd18$j=Ol4EzjC3=9k`3__rk!N9=41d2&8EyW-X zrezuA7#J8>85kK@8O#_M8O#|N7z!Df!TL0`wlgqlA7|j*&A=Wh#JQb;d%u?URt7#T z=B*4OS_14_86-eV>5X8MEEpIVlo&V|7#K7eSQxYzI2g1Ugcx)g#2NG$WEk`rlo$*c z)ENvJEEyOW_!$`gGYBy-u`}?qGpI8#Fff9`o`DH${RRdWu=NSjGZ}=WS>{9Smj~Ow zg+Y2INI)@CNO?Ph>V9dK1q?!3T3Z-IShThUM;)jTm?s7#OS>I2mjhgc z#H3}bSnAAJv_x69G3c}~|6l(94Z;m#V71{491IZ*{0xx{q72~-(hSjHdpH@G{xGmG z{$dbAvC5Ev4Qf>!12Y370|SGG7JB%A0%bM>w-)m@2A$>qzkotw8-qT=S}6uL1_p*? z26l!N20?~21__3A1_g#p26cuku+=OKOoDtUw%WpN^<-cI+bRLFbryrL);0zshy})4 qEL$0n(gnnG#SH8WB@EmQr3^w0WenmB6<`~f85qS;EU*J7Cwl-4SQ+{N literal 0 HcmV?d00001 diff --git a/build/fr/iutfbleau/sae/util/BitinputStream.class b/build/fr/iutfbleau/sae/util/BitinputStream.class new file mode 100644 index 0000000000000000000000000000000000000000..0637d2934e2e53bc4b60d514f9bacdac71615b5b GIT binary patch literal 1169 zcmX^0Z`VEs1_nn4b1nuZ24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00Sb_Nbc1|@_d&zzjp^u!#;qV&?-)VvbcisaOSlFa-(4hAkp26dlQg|wW~ z3WXH))Vz|S!z)u2@=_HFQcFt|3KEMI4zDUHN>#`!&EaBTXW#)jfR~X$RKo{hdT>cm zW?s6rW*8>}KZ5`}gCGxs5Q8uygGySFer9P&T2fAGVyS*{Vyb>=NoJ0|Q)WqKUO{O| za7j^WVlE>C7sztgypp2SR7M6-h`E{h`kn|i)*ypLc^JeP#2FcQ@{>zaOPupdixTrn z7#SEnL6VX@3{oIT?t=W{OpwoGCT~j404PNoN1YPE~#!gr4@_}j8R++3Ji+u z3`#r<$_y%u48mZqpjyeuz*3Z&m;w$?Pc8<21~ncAb&z6qkg!u`3CIjh9tJH?bg(Ap z!~!Uv z3m!Se>B-2z33da-hg`w=rA5i9ZkZqpgi*s=59C<} zMFxHbCI$uu76u_uTrn^(Fo8lBOiM9{gK1d?Ij{;w237`b21W)Q1_p)#24=86b*=3T zjM~Q;cy}|fM+$LnXW-tirM;DbPm6gggNPQ>Rt5E#T3TGAl52(W`3 zgQQ*rq^F9d&PFS83xfnp%2oym={0b7nlbP)FfiCMurt^(a56YD2rxJ?NH91v$TGMv zs4}=QXfe1m7%+Gyc4Dk&73<(UP42cZl49N^~3~>x945?rz@G&s|Wnf`s{KFu`_>+ML#T6zD rY*1IIFfcMOGB7Z3K*CJ}6iti_plAY>GYkxQ4D1Z~D0)r70b~XM`=R67 literal 0 HcmV?d00001 diff --git a/build/fr/iutfbleau/sae/util/ByteUtils.class b/build/fr/iutfbleau/sae/util/ByteUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..c216610381487aa37fac22f2a61c65217cb539f6 GIT binary patch literal 567 zcmX^0Z`VEs1_nn4DJ}*k24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SW(J1;|JfNh85xuiDm`;@QqvQ29E;LRb5rw5Tq}}O3raHc^Eeo|85#6^ z5*5l4b5cu-6jJgtOB4>TDk(};NY2kKD9S8ORY=VPaSaqwOBBpZO^r>t7&sVsL5|^L zWDwQxL0A%8Qk0pOZmk){&LF_ZAfHyGpIKUxmXwp4SgK!~n5th|l9{9LR9TW5T9TPl z%*epvoS%})$iVNDnV0HUnwykb6q1;flgh}zUXl+|R?Nu2s^O^_?Zn8y8(fl@ob8)f z09CbE24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00Sb_Nbc28FaD{mjymw4|KW#8Um@#8my#lFS@^_tfGN*P^1-(jrC%7U%qw zR7M7VpUk{eztY^K)S{5Yq?}Yn2Cm@z(xT*4w@eU+AE8ALWHEyx13Lo~0|+oOFoImf xz{tSKz`!8O0OB(+uxf2*VBE;Sz`)4B#lXP8#=ywHz`)GF$iU6Oz`(@70|0VoETRAa literal 0 HcmV?d00001 diff --git a/build/fr/iutfbleau/sae/vconverter/ConverterWindow.class b/build/fr/iutfbleau/sae/vconverter/ConverterWindow.class index 0bf0cec5c5643364f9411c36dcf52a829b15d284..7f8ddc5565b8341c522221c308750be4cc32a85a 100644 GIT binary patch delta 28 kcmdljwOeY#Rt|RV(t?!4lGMpZIb0@h codesRouge = new HashMap<>(); + /*Map codesRouge = new HashMap<>(); codesRouge.put(255, "1010"); codesRouge.put(128, "010"); @@ -43,12 +53,46 @@ public class Convertisseur { freqB[3] = 12; // ..... - freqB[100] = 212; + freqB[100] = 212;*/ - // Appeler la méthode sur l'instance de la fenêtre - window.setCanonicalTable(codesRouge, codesVert, codesBleu); + // Appeler la méthode sur l'instance de la fenêtre + // Essayons d'appeler les méthodes sur une vrai image désormais : + + // Premierement essayons la table de fréquence : + + + FrequencyTable frequence = new FrequencyTable(); + frequence.computeFromImage(image); + int[] freqR = frequence.getRed(); + int[] freqG = frequence.getGreen(); + int[] freqB = frequence.getBlue(); window.setFrequencyTable(freqR,freqG,freqB); - System.out.println("DLKSLDKSLKDSLKSLKSLDKSLDKLSdkslkdl"); + + // Passons désormais aux codes Huffman : + + HuffmanTree arbreR = new HuffmanTree(freqR); + Map codesHuffR = arbreR.generateCodes(); + + HuffmanTree arbreG = new HuffmanTree(freqG); + Map codesHuffG = arbreG.generateCodes(); + + HuffmanTree arbreB = new HuffmanTree(freqB); + Map codesHuffB = arbreB.generateCodes(); + window.setHuffmanTable(codesHuffR,codesHuffG,codesHuffB); + + // Passons désormais aux codes canoniques : + + CanonicalCode codeCanoniques = new CanonicalCode(); + + Map codesCanoniqueRouges = codeCanoniques.generateCodes(codesHuffR); + Map codesCanoniqueGreen = codeCanoniques.generateCodes(codesHuffG); + Map codesCanoniqueBleu = codeCanoniques.generateCodes(codesHuffB); + + window.setCanonicalTable(codesCanoniqueRouges, codesCanoniqueGreen, codesCanoniqueBleu); + + + + //System.out.println("DLKSLDKSLKDSLKSLKSLDKSLDKLSdkslkdl"); } } \ No newline at end of file diff --git a/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java b/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java index 3cb418d..4699b26 100644 --- a/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java +++ b/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java @@ -2,17 +2,18 @@ package fr.iutfbleau.sae.mhuffman; import java.util.*; public class CanonicalCode{ - private Map codeLengths = new HashMap<>(); - private Map canonicalCodes = new HashMap<>(); + //private Map codeLengths = new HashMap<>(); + //private Map canonicalCodes = new HashMap<>(); - public Map generateCodes(){ + + public Map generateCodes(Map codesHuffman){ // 1 ere chose à faire : on regarde uniquement la longueur des codes initiaux(Huffman) // 2eme chose à faire : remettre dans l'ordre des longueurs : si meme taille ==> regarder valeur // 3eme chose à faire : ecriture des codes canoniques // on recupere les entrées des codes Huffman pour pouvoir les triés - List> liste = new ArrayList<>(codeLengths.entrySet()); + List> liste = new ArrayList<>(codesHuffman.entrySet()); // ici on comparer par longueur de la valeur ou sinon par la clé @@ -30,7 +31,7 @@ public class CanonicalCode{ } }); - + Map canonicalCodes = new HashMap<>(); int code = 0; // code canonique à attribuer int temp = 0; //garde la longueur du code précedent , pour gérer le décalage @@ -55,18 +56,14 @@ public class CanonicalCode{ } - public String getCode(int value){ - return this.canonicalCodes.get(value); + public String getCode(Map canonicalCodes,int value){ + return canonicalCodes.get(value); } - public int getLength(int value){ - return this.codeLengths.get(value).length(); + public int getLength(Map codesH,int value){ + return codesH.get(value).length(); } - - public Map getCanonicalCodes(){ - return this.canonicalCodes; - } } diff --git a/src/fr/iutfbleau/sae/util/BitOutputStream.java b/src/fr/iutfbleau/sae/util/BitOutputStream.java index afffb76..aa26283 100644 --- a/src/fr/iutfbleau/sae/util/BitOutputStream.java +++ b/src/fr/iutfbleau/sae/util/BitOutputStream.java @@ -1,5 +1,5 @@ -package fr.iutfbleu.sae.util; - +package fr.iutfbleau.sae.util; +import fr.iutfbleau.sae.util.BitOutputStream; import java.io.IOException; import java.io.OutputStream; diff --git a/src/fr/iutfbleau/sae/util/BitinputStream.java b/src/fr/iutfbleau/sae/util/BitinputStream.java index 43e3997..0331058 100644 --- a/src/fr/iutfbleau/sae/util/BitinputStream.java +++ b/src/fr/iutfbleau/sae/util/BitinputStream.java @@ -1,5 +1,4 @@ package fr.iutfbleau.sae.util; - import java.io.IOException; import java.io.InputStream; @@ -22,7 +21,7 @@ import java.io.InputStream; * @version 1.0 * @since 2025-12-13 */ -public class BitInputStream { +public class BitinputStream { /** Flux d'entrée sous-jacent */ private final InputStream fluxEntree; @@ -42,7 +41,7 @@ public class BitInputStream { * @param fluxEntree flux d'entrée à décorer * @throws IllegalArgumentException si le flux est nul */ - public BitInputStream(InputStream fluxEntree) { + public BitinputStream(InputStream fluxEntree) { if (fluxEntree == null) { throw new IllegalArgumentException("Le flux d'entrée ne peut pas être nul"); } diff --git a/src/fr/iutfbleau/sae/vconverter/ConverterWindow.java b/src/fr/iutfbleau/sae/vconverter/ConverterWindow.java index 67d185c..32acd2f 100644 --- a/src/fr/iutfbleau/sae/vconverter/ConverterWindow.java +++ b/src/fr/iutfbleau/sae/vconverter/ConverterWindow.java @@ -129,7 +129,7 @@ public class ConverterWindow extends JFrame { public void setHuffmanTable(Map codesRouge, Map codesVert, Map codesBleu) { - codeTablePanel.updateCanonicalCodes(codesRouge, codesVert, codesBleu); + codeTablePanel.updateCodes(codesRouge, codesVert, codesBleu); } /** @@ -144,6 +144,6 @@ public class ConverterWindow extends JFrame { public void setCanonicalTable(Map codesRouge, Map codesVert, Map codesBleu) { - codeTablePanel.updateCodes(codesRouge, codesVert, codesBleu); + codeTablePanel.updateCanonicalCodes(codesRouge, codesVert, codesBleu); } }